ガチレビュー

ラズパイでミュージックボックス制作 番外編2 ラズパイから音が出なくなった

完成直前でハマった原因と復旧まで

一連の作業でラズパイのUSB電源を頻繁に抜き差ししたせいで、ついに音が出ない事態が発生してしまいました。

でもSSHの無線通信は無事で、Windowsからコマンド入力はできてる状態です。

今回は、
突然、音が出なくなったトラブルを完全復旧させた記録を、順を追ってまとめました。


トラブル発生

先生……ラズパイ、
音がまったく出なくなりました……
無線では普通につながるんですけど、

まるちゃん
まるちゃん
ogita
ogita

そうですか、作業でだいぶ電源を抜き差ししましたからね。
まずは落ち着いて状況を整理しましょう。
ラズパイ自体は起動していますね?

はい。
ターミナルからSSH(無線)は入れますけど、
mpg123(音楽プレーヤー)を実行すると
エラーがでます。

まるちゃん
まるちゃん
ogita
ogita

分かりました。
こういうときは、
音の出口が存在しているかから確認するのが基本です

わかりました。
コマンドをいれていくわけですね。

まるちゃん
まるちゃん

まず結論から

今回の原因を先にまとめると、こうなります。

音声デバイスの3.5mmジャック(Headphones)=card 0 が消えていて
card 1(HDMI音声)」だけの状態
になっていた。

つまりラズパイ側が
「アナログ音声の出口は存在しない」
と判断していた状態でした。


エープレイのリスト(aplay -l) というコードで音楽デバイスを確認

ogita
ogita

では、音声デバイスの状態を確認しましょう。
次のコマンドを入力してください

aplay -l

先生、この -l って……
数字の『1』ですか?
それともアルファベットですか?

まるちゃん
まるちゃん
ogita
ogita

いいところに気づきましたね。
ここは 小文字のエル(l) です

エープレイのリストと言って、
音声デバイスのリストを出してという意味ですね。

えっ、エルなんですね。
ずっと『1』だと思ってました……

まるちゃん
まるちゃん
ogita
ogita

よくある勘違いです。
-llist(一覧表示) の意味で、
音を出せる機器が認識されているかを確認するコマンドです。

わかりました!
リストのLですね。

まるちゃん
まるちゃん

本文② 実際の表示内容

エープレイのリスト(aplay -l )を実行した結果は、次のようになっていました。

card 1: vc4hdmi [vc4-hdmi], device 0: MAI PCM i2s-hifi-0

これはつまり、

  • card1:HDMI(音声) → 存在している
  • card0:3.5mmジャック → 存在していない
    (本来あるはずの card0 が無い状態)
  • device 0:HDMI音声の再生デバイス → 存在している

という意味です。


device 0 の疑問

先生、この device 0 って何ですか?
電源が入ってるって意味なんですか?

まるちゃん
まるちゃん
ogita
ogita

いいえ、device 0 は電源ではありません

えっ、そうなんですか?
0って書いてあるから、
何かがONなのかと……

まるちゃん
まるちゃん
ogita
ogita

そう思いますよね。
card はHDMIやUSBなど音を出す機器ですね。
device はcardの中でどの端子をつかうか(スピーカーか、マイクかデジタル出力か)、
だと考えてください。
通常はdevice 0、メインの入出力端子しかつかわないことがほとんどですが。

むずかしいですね。
deviceはcardに付属するものってイメージでいいですか?…

まるちゃん
まるちゃん
ogita
ogita

はい、そんな感じで問題ありません。


3.5mmジャック(card 0)を復旧させるためにしたこと

raspi-config は、
ラズパイの基本設定をメニュー操作で変更できるツールです。
ここで確認したかったのは、

音声の出力先を 3.5mmジャックに切り替えられるか

という点でした。


しかし、結果はこうでした

  • Audio を開いても
  • 「No audio devices found」 と表示され
  • 3.5mmジャックを選ぶことができませんでした。

ここで分かったこと

この時点で分かったのは、

raspi-config 以前の段階で、
3.5mmジャック自体が無効になっている

ということです。

つまり、

  • 設定の切り替えで直る問題ではない
  • もっと起動時の深い設定を確認する必要がある

と判断しました。


次に進むための判断材料

raspi-config で選べない

config.txt レベルの設定を確認する必要がある

そう切り分けて、
次のステップに進みました。

② 次の修正(直った)

そこで行ったのが、

  • config.txt
    • 映像ドライバ(vc4-kms → fkms)の切り替え
    • dtparam=audio=on を明示

結果:3.5mmジャック(card0)が復活

この修正は、

「音声の出力先を変える」
ではなく
「そもそも 3.5mmジャックを
起動時に読み込むかどうか」

という、もっと根っこの設定に触れています。


分かりやすく言い換えると

  • 1回目:
    スイッチを切り替えようとした
    (でも、電気が来ていなかった)
  • 2回目:
    ブレーカーを入れ直した
    (だからスイッチが効くようになった)

この違いです。


まとめ

映像ドライバと音声の初期設定を見直すことで、3.5mmジャックが再び認識され、音が出るようになりました。

① 設定ファイルを編集

sudo nano /boot/config.txt

② 次のように修正

#dtoverlay=vc4-kms-v3d
dtoverlay=vc4-fkms-v3d
dtparam=audio=on

これは、

  • HDMI優先の設定をゆるめ
  • 互換性の高い方式に切り替え
  • 「アナログ音声を使う」と明示する

という意味です。

③ 保存して再起動

sudo reboot

消えたcard0 が復旧できた理由

先生、card 0が見つかってよかったですね。

まるちゃん
まるちゃん
ogita
ogita

そうですね。
config.txtの修正がうまくいってほっとしまいた。

config.txtはラズパイ起動時に自動的に読み込まれるファイルでしたね。

まるちゃん
まるちゃん
ogita
ogita

そうですね!修正したら起動時に
『3.5mmジャックを使う』
と再認識させることができました。

お疲れさまでした!

まるちゃん
まるちゃん

復旧確認で再び話エープレイのリストを入力

再起動後、再度確認すると、

aplay -l
card 0: Headphones [bcm2835 Headphones]
card 1: vc4hdmi

3.5mmジャック(card0)が復活しました。

再生テストも問題なし。

mpg123 -o alsa /home/ogita/sounds/zone_2020rain.mp3

無事、音が鳴りました。


おわりに

今回のトラブルは、

  • OS:正常
  • SSH:正常
  • 音源ファイル:正常
  • 再生コマンド:正常

という状態で起きた、
「音の出口設定だけが消えていた」ケースでした。

制作過程で電源を抜き差ししてしまうと、こういうことが起きやすくなります。
しかしひとつづつ確認をしてていけば必ず原因にたどり着けます。ぜひ参考にしていただければ幸いです。

第11回 〜パッケージ完成編〜
第10回 電源ボタンはどこにつなぐ?ラズパイ電力の流れを総復習
第9回 電源を安定化するためのコンデンサ取り付け、実践編
第8回 電源を安定化するためのコンデンサ取り付け、準備編
番外編3 ラズパイの基盤が壊れた、分析と反省
番外編2 ラズパイから音が出なくなった
番外編1 ラズパイに無線でつながらなくなった! 復旧まで
第7回 充電池からだと、3秒くらいで電源が落ちてしまう
第6回 充電池から音楽を鳴らす準備編、昇圧モジュールと充電モジュールをつなげるまで
第5回 nanoで自動機能のプログラムを書く
第4回 ボタンをはんだ付けしよう
第3回 ラズパイに再生ボタンを仮接続しよう
第2回 ラズパイに音楽を転送して音を鳴らしてみよう
第1回 Windowsからラズパイを操作する環境をつくろう

過去の記事検索

過去の記事検索

人気記事

人気の投稿 Best10 (月間)

-ガチレビュー