そのまんま,Volumio2 on Raspberry pi で Bluetooth スピーカーとストリーミング再生を両立させる備忘録です.
Volumio2 Bluetooth Device プラグイン
手持ちの Bluetooth スピーカーとかをラズパイ上の Volumio2 から使えると便利そうだなと思い,ググってみると Volumio2 で Bluetooth スピーカーを使うプラグインがあります.おまけに,
に分かりやすい導入方法まで載ってましたので,試してみると……
大丈夫です.現在最新の Ver. 2.389 でも使えます!
これ,なかなか良く出来たプラグインで,複数の Bluetooth スピーカーやヘッドフォンを切り替えて使うことができるというスグレモノなのですが,この切り替えを /etc/mpd.conf の内容を書き換えることで実現しているため,使うたびに,
で設定したストリーミングの設定を元に戻されてしまいます.どっちかと言うと,ストリーミング再生で使う方が多いので,(私の場合は)これでは困ります.と言うことで,少し調べてみました.
解決方法
解決方法は簡単です.このプラグイン,Bluetooth 機器をつなげると,そのデバイス向けにも音楽を出力するよう /etc/mpd.conf に
audio_output { type "alsa" name "Anker SoundCore" device "bluealsa:HCI=hci0,DEV=00:00:00:00:00:00,PROFILE=a2dp" mixer_type "software" }
のような行を付け加え,mpd を再起動します.逆に,Bluetooth 機器の接続を解除すると,標準の /etc/mpd.conf に戻し,mpd を再起動する訳です.付け加えた部分を消すのではなくて,初期状態に戻してしまう,ってのが問題点なので,解決方法は,
- プラグインの動作を付け加えた部分を消す形に書き換える
- 初期状態をストリーミング再生可能な状態に書き換える
のいずれかです.
あまり,コードを書き換えたくは無かったので,今回は2の方法で解決することにしました.多分,初期状態を記したファイルがどっかにあるだろうと思い,
$ cd /volumio $ grep -R audio_output *
としてみると……ありますねぇ.
- app/plugins/music_service/mpd/mpd.conf.tmpl
が該当ファイルの様です.と言うことで,
$ sudo vi /volumio/app/plugins/music_service/mpd/mpd.conf.tmpl ..... # Audio Output ################################################################ ${sox} audio_output { type "alsa" name "alsa" device "${device}" dop "${dop}" ${mixer} ${format} } audio_output { type "httpd" name "RBP32" encoder "lame" # optional, vorbis or lame port "8000" # quality "5.0" # do not define if bitrate is defined bitrate "256" # do not define if quality is defined format "44100:16:2" always_on "yes" tags "yes" } audio_output { type "fifo" enabled "no" name "multiroom" path "/tmp/snapfifo" format "44100:16:2" } ......
の様に書き換えて終了です.これで,Bluetooth Device Plugin を使って Bluetooth スピーカを切り替えてもストリーミングは有効なままです.
注意事項
上を見てお分かりの通り,これ,音の出力先を切り替えるというより,増やす(もしくは削減する)って言った方が良いやり方です.
つまり,Bluetooth スピーカーを接続していないときは,
- Raspberry pi の Audio Jack
- http ストリーミング
の2つが同時に有効になり,Bluetooth スピーカを接続すると,
- Raspberry pi の Audio Jack
- http ストリーミング
- Bluetooth スピーカー
の3つが同時に有効になります.だから Audio Jack (もしくは HDMI) にスピーカーがつながっていると,Bluetooth スピーカーと同時に鳴ってしまうというという欠点がある訳です.
あと,この Bluetooth Device プラグイン,キチンと音が鳴るときと鳴らないときがあります.ならない場合も Raspberry pi を再起動すれば治るので,原因はよく分かっていません.相性問題なのかも知れません.
なお,私の環境は以下の通りです.
- 本体:Raspberry pi2
- Bluetooth ドングル:lsusb とすると Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode) と表示される.
- スピーカー:Anker SoundCore ポータブル
SoundCore ポータブルの場合,ライン入力がありますので,Raspberry pi から直接ライン入力経由で使っても良さそうですが,microUSB 充電端子の隣に入力端子があるせいか,ものすごくノイズが乗ります.
Bluetooth 経由だとこのノイズが全く乗りませんし,あと,スピーカーの設置場所を自由にできる,ということで,今のところとても満足しています.
以上!