ガチレビュー

ラズパイでミュージックボックス制作 番外編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:正常
  • 音源ファイル:正常
  • 再生コマンド:正常

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

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

第8回 コンデンサで安定させる
番外編2 ラズパイから音が出なくなった
番外編1 ラズパイに無線でつながらなくなった! 復旧までく
第7回 充電池からだと、3秒くらいで電源が落ちてしまう
第6回 充電池から音楽を鳴らす準備編、昇圧モジュールと充電モジュールをつなげるまで
第5回 nanoで自動機能のプログラムを書く
第4回 ボタンをはんだ付けしよう
第3回 ラズパイに再生ボタンを仮接続しよう
第2回 ラズパイに音楽を転送して音を鳴らしてみよう
第1回 Windowsからラズパイを操作する環境をつくろう

過去の記事検索

過去の記事検索

人気記事

人気の投稿 Best10 (月間)

-ガチレビュー