スキップしてメイン コンテンツに移動

Kodi (OSMC) でRasPiのアナログ音声出力が選べないときの対処法 / CAESinkALSA::Initialize Failed エラー対応

前提

  • ラズパイ3B+にKodiをインストールして使っている
  • KodiはオープンソースのメディアプレーヤーOS
    • ここに動画とか音楽を入れとくと同じLAN配下のテレビとかで再生できたりする
    • ようはAndroidTVをデジタルフォトフレーム化できる
  • 再生機は主に(ネットワーク越しの)テレビなので、ラズパイ本体のHDMI出力は利用していない


問題発生

  • ラズパイのストレージ容量がカツカツになる事態発生
  • 見ると /home/osmc/.kodi/temp にあるログファイルがめっちゃ容量食ってる
    • ログファイルは2つあって、それぞれ4.5GiBと2GiBだった
    • しかも毎秒2KiBぐらいずつ増えてる
  • 32GiBのストレージしかつけてないラズパイでこれは厳しい


ファイルはこんな感じ。前回起動時と今回起動中の2つがローテーションされているっぽい。

osmc@osmc:~/.kodi/temp$ ll kodi*
-rw-r--r-- 1 osmc osmc 4852561425 Aug 06 18:22 kodi.log
-rw-r--r-- 1 osmc osmc 2105929839 Jun 29 22:59 kodi.old.log


ログの中身を読む

以下が実際のログファイルの中身。こんな感じのが数秒おきにぞくぞくと生成されていた。

2023-08-06 16:41:51.583 T:722      INFO : CActiveAESink::OpenSink - initialize sink
2023-08-06 16:41:51.585 T:722      INFO : CAESinkALSA::Initialize - Attempting to open device "@"
2023-08-06 16:41:51.597 T:722      INFO : CAESinkALSA - Unable to open device "sysdefault" for playback
2023-08-06 16:41:51.600 T:722      INFO : CAESinkALSA - Unable to open device "default" for playback
2023-08-06 16:41:51.600 T:722      INFO : CAESinkALSA - Unable to open device "front" for playback
2023-08-06 16:41:51.601 T:722     ERROR : CAESinkALSA::Initialize - failed to initialize device "@"
2023-08-06 16:41:51.603 T:722     ERROR : CActiveAESink::OpenSink - no sink was returned
2023-08-06 16:41:51.604 T:721     ERROR : ActiveAE::InitSink - returned error

ActiveAEはKodiのオーディオエンジンのことで、Sinkとはデータの転送先であるオーディオデバイス、先頭のCはC++を表しているらしい。ALSAはAdvanced Linux Sound Architectureである。

雑に読んだ感じ、どうもオーディオデバイスを掴もうとしては失敗し続けているらしい。


Kodiのオーディオデバイス設定画面を見る

Kodiの設定画面を見に行くと、利用できるサウンド出力は以下のような感じだった。




いくつか選べるように見えるが、よくよく見てみると全部HDMI経由のサウンド出力である。

この時はラズパイ本体のHDMI出力にモニターを繋いで設定画面を見ているが、普段の運用ではHDMIには何も刺さっていない。

すると有効なオーディオ出力先は1つも存在しないことになり、問題のエラーが出まくることになる。


効果のなかった対策

ラズパイには hdmi_force_hotplug=1 という設定が存在する。

これは「HDMIコネクタにモニターが接続されないまま起動しても、内部では常時画面描画しておき、後からHDMI接続することで即映像表示できるようにする」という意味のオプション。VNCでたまにデスクトップ見るみたいな用途で有用らしい。

これを使えば「モニターなしで起動してもHDMI出力が有効」みたいな感じになるので問題を解決できると踏んだが、実際はなにも改善しなかった。


ちなみに設定方法だが、Kodiの設定画面からMyOSMCを開き、サークルメニューでPi Configを選ぶ。




そしてDisplayカテゴリのhdmi_force_hotplugを有効にする。




最後にOKで閉じて、ラズパイ本体を再起動する。しかし繰り返しになるがこの方法では問題は解決しなかった。


あれ、3.5mmアナログオーディオは?

一通り試してはたと気づいたのだが、ラズパイには元々本体に3.5mmのアナログオーディオ出力ジャックが備わっている。

3.5mmというのは有線イヤホンとかを差し込める、スマホとかでも普遍的に見る音声出力コネクタのことだ。なぜアナログ出力デバイスが設定画面に表示されていないのだろう?

実はコネクタに何か差しているときだけ選べるのかな? とか勘ぐって色々試してみたが、接続機器の変更ではオーディオ出力デバイス一覧の内容は変化しないことがわかっただけだった。


解決方法

「Kodiでアナログオーディオが一覧に出ない~~」的なキーワードであれこれググったらドンピシャのスレッドを発見した。

https://discourse.osmc.tv/t/no-3-5mm-analogue-audio-output-option-since-latest-update-pi-3b/90049 


なるほど設定ファイルをいじればいいらしい。というわけで sudo vi /boot/config-user.txt する。

hdmi_force_hotplug=1
sdtv_aspect=1
start_x=1

# ここから追加
dtoverlay=pisound
dtparam=audio=on

さっき設定した hdmi_force_hotplug=1 もこのファイルに書かれている。なぜオーディオ出力の設定だけPi ConfigのGUIに入れてくれなかったのか……。


大本の設定ファイルである /boot/config.txt の中身を確認して、以下の行の存在を確認(無ければ追加する)

[all]
# 中略
include config-user.txt


問題解決

ラズパイ本体を再起動して設定画面を見ると、めでたくアナログ出力が選べるようになっていた。


bcm2835 Headphones が増えた


HDMIケーブルを抜いて通常運用に戻し、ログの増え方を監視する。

osmc@osmc:~/.kodi/temp$ ll kodi*
-rw-r--r-- 1 osmc osmc 87275 Aug 20 01:56 kodi.log
-rw-r--r-- 1 osmc osmc 84419 Aug 20 00:39 kodi.old.log

1時間稼働して85KiBくらいなのでちゃんと直ってそう。


2023-08-19 23:54:30.843 T:1123     INFO <general>: CDVDAudioCodecFFmpeg::Open() Successful opened audio decoder mp3float
2023-08-19 23:54:31.015 T:1123     INFO <general>: AudioDecoder: File is queued
2023-08-19 23:54:31.030 T:1123     INFO <general>: PAPlayer::PrepareStream - Ready

↑イヤホン繋いでmp3再生してみたときのログ。エラー出さずに再生できている。


おまけ

ついでにこの問題のせい(たぶん)で肥大化したjournalログも消しておいた。

/var/log/journal/ をふっ飛ばしただけ。


コメント