先日、mpd パッケージを使ってネットワークプレーヤーにしている SBC(Orange Pi One)の OS バージョンアップしました。
その後、いつもじゃないけど音が出なくなることが発生... したので、その原因と対策について記載してます。
ArmbianのN/W設定はNetplanになっていた – あららぼ
- バージョンアップ前
Armbian 25.2.2 bullseye \l- バージョンアップ後
Armbian 25.11.2 trixie \l
結論
mpd の設定ファイルで、デバイスの指定を番号からデバイス名へ変更した。
※OS 起動時のデバイス認識順で番号が変わってしまうため。
環境
$ cat /etc/issue
Armbian 26.2.1 trixie \l
構成
- SBC
Orange Pi One-> USB-DDCFX-D03J-> アンプ -> スピーカー
※USB-DDC の出力には TOSLINK と同軸デジタルがあり、アンプとの接続には TOSLINK を使用。
現象
音が出ないときは、アンプが信号を受け取れていない(USB-DDC との接続が確立していない)ので、aplay -l で再生デバイスのリストアップ。
※最後の card 1 は HDMI なので今回は関係なし。
-
使うコマンド
$ aplay --help Usage: aplay [OPTION]... [FILE]... -h, --help help --version print current version -l, --list-devices list all soundcards and digital audio devices -L, --list-pcms list device names ... -
音出ないとき
$ aplay -l **** List of PLAYBACK Hardware Devices **** card 0: Audio [NFJ USB Audio], device 0: USB Audio [USB Audio] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: Audio [NFJ USB Audio], device 1: USB Audio [USB Audio #1] Subdevices: 1/1 Subdevice #0: subdevice #0 card 1: sun9ihdmi [sun9i-hdmi], device 0: SUN9I-HDMI PCM i2s-hifi-0 [SUN9I-HDMI PCM i2s-hifi-0] Subdevices: 0/1 Subdevice #0: subdevice #0 -
音出たとき
$ aplay -l **** List of PLAYBACK Hardware Devices **** card 0: Audio [NFJ USB Audio], device 0: USB Audio [USB Audio] Subdevices: 0/1 Subdevice #0: subdevice #0 card 0: Audio [NFJ USB Audio], device 1: USB Audio [USB Audio #1] Subdevices: 1/1 Subdevice #0: subdevice #0 card 1: sun9ihdmi [sun9i-hdmi], device 0: SUN9I-HDMI PCM i2s-hifi-0 [SUN9I-HDMI PCM i2s-hifi-0] Subdevices: 1/1 Subdevice #0: subdevice #0
分かりづらいけど Subdevices の値が違う...
原因
Subdevices の値が違うとスピーカーから音が出ない。
そしてこれは、/etc/mpd.conf に設定した値と関係している。
device "hw:1,0" # optional
この値を hw:1,0 にして、mpd サービス再起動すれば音が出るので、SBC とアンプとの間に挟んだ USB-DDC FX-D03J の出力先が切り替わってしまうことが原因。
要因としては、OS 起動時にデバイス認識される順番が入れ替わる(サウンドモジュールの認識順)ということになるので、mpd.conf でのデバイス指定を番号から名称へ変更すれば OK なはず。
対応
-
デバイス名を確認。今回は下記例だと
iec958:CARD=Audio,DEV=0
※試してないけど、たぶんDEV=1が同軸デジタルっぽい。$ aplay -L null Discard all samples (playback) or generate zero samples (capture) default Default Audio Device sysdefault Default Audio Device ... iec958:CARD=Audio,DEV=0 NFJ USB Audio, USB Audio IEC958 (S/PDIF) Digital Audio Output iec958:CARD=Audio,DEV=1 NFJ USB Audio, USB Audio #1 IEC958 (S/PDIF) Digital Audio Output ... -
番号からデバイス名へ置換
$ diff -u mpd.conf /etc/mpd.conf --- mpd.conf 2026-05-05 19:38:54.623906986 +0900 +++ /etc/mpd.conf 2026-05-05 19:39:14.423660898 +0900 @@ -234,7 +234,7 @@ audio_output { type "alsa" name "My ALSA Device" - device "hw:1,0" # optional + device "iec958:CARD=Audio,DEV=0" # optional mixer_type "software" # optional format "96000:16:2" mixer_device "default" # optional -
サービス再起動
$ systemctl restart mpd
これで音が出れば OK。
音が出なかったらデバイス名を変えてリトライ。