Raspberry Pi3 で bluetooth スピーカーを使う(はまった)
連休中に衝動買いした Raspberry Pi3 と Creative の
bluetooth スピーカーを接続しようとしたら、思い切り嵌ってしまったので
備忘録がてらメモ。
とりあえず、search→pairing までは成功したものの、connect しようと
すると
[bluetooth]# connect xx:yy:zz:ww:vv:uu Attempting to connect to xx:yy:zz:ww:vv:uu Failed to connect: org.bluez.Error.Failed
のようなエラーが出て先に進まない。
- 対策1:モジュールが足りない?
Bluetooth ヘッドセット - ArchWiki
を読むと、これは pulseaudio のモジュールの一部が足りないからだと
書いてある。うーん、インストールしたはずなのになあ...
(ただし、piでは pulseaudio-module-bluetooth になっている。)
- 対策2:audio, lp ユーザグループに自分を登録する必要あり?
どこかのサイトにこれがないと鳴らないと書いてあったので、追加してみる。
ついでに pulse, pulse-access にも登録しておく。
- 事実3:bluez5 から ALSA がサポートから外れた。
なので、mplayer -ao alsa:device=bluetooth とやっても
ライブラリが足りないと言って怒られる。
ということは pulseaudio のデフォルトデバイスにしないと
bluetooth から鳴らないということ??
- 対策4:pulseaudio 系コマンドは X 接続を要求する
従って Windows からアクセスする場合は Xming Server
のような X サーバソフトが必須となる。Teraterm や putty も
X プロトコルを中継するように設定しよう。
- 対策5:一部 root にならないと設定できない箇所がある。
bluetoothctl は root にならないと ^c 以外のキー入力を
受け付けない。しかし sudo すると X の認証が通らず pulseaudio
系のコマンド入力が失敗してしまう。
仕方がないので、今回は kdesudo をインストールして誤魔化した。
kdesudo xterm &
で root 化した xterm 上で以下のスクリプトを実行する。
でもその前に xterm 上で "xhost +" を実行した方がいいかも。
#!/bin/sh pactl load-module module-bluetooth-discover su minosys -c 'pulseaudio --start' echo "power on" | bluetoothctl -a echo "connect xx:yy:zz:ww:vv:uu" | bluetoothctl -a su minosys -c 'echo "set-default-sink 1" | pacmd' su minosys -c 'mplayer -playlist http://yp.shoutcast.com/sbin/tunein-station.pls?id=709809'
pactl は正直効いていない気がする。
なお、pairing→connect→trust まで1回走らせてあります。
最後の mplayer コマンドはお好みで変えてください。
どのコマンドの実行も失敗するように見えるが、実際にはこれで音が
鳴ります。
納得いかない...