UKey's Labo

Raspberry pi – bluetoothスピーカーに接続

動作環境

環境 バージョン
Raspberry Pi Raspberry Pi 3 Model B Plus Rev 1.3
OS Raspbian GNU/Linux 9.4 (stretch)

ライブラリのインストール

sudo apt-get install -y pulseaudio pavucontrol pi-bluetooth blueman pulseaudio-module-bluetooth

bluetooth接続

bluetoothctlコマンドで対話式で接続を行います。

bluetoothctl
# 自身のbluetoothコントローラが表示される
[NEW] Controller NN:NN:NN:NN:NN:NN raspberrypi [default]

# コントローラが表示されない場合はコントローラ起動
[bluetooth] power on

# 接続可能なbluetooth機器を検索
[bluetooth] scan on

# 目的のbluetooth機器が表示されたら、scanを終了する
[bluetooth] scan off

# ペアリングする
# pair {macアドレス}
[bluetooth] pair 00:02:3C:31:39:16
Attempting to pair with 00:02:3C:31:39:16
[CHG] Device 00:02:3C:31:39:16 Connected: yes
[CHG] Device 00:02:3C:31:39:16 UUIDs: 0000110b-0000-1000-8000-00805f9b34fb
[CHG] Device 00:02:3C:31:39:16 UUIDs: 0000110c-0000-1000-8000-00805f9b34fb
[CHG] Device 00:02:3C:31:39:16 UUIDs: 0000110e-0000-1000-8000-00805f9b34fb
[CHG] Device 00:02:3C:31:39:16 ServicesResolved: yes
[CHG] Device 00:02:3C:31:39:16 Paired: yes
Pairing successful

# 接続する
# connect {macアドレス}
[bluetooth] connect 00:02:3C:31:39:16
Attempting to connect to 00:02:3C:31:39:16
[CHG] Device 00:02:3C:31:39:16 Connected: yes
Connection successful
[CHG] Device 00:02:3C:31:39:16 ServicesResolved: yes

トラブルシューティング

bluetoothctlでNo default controller available

使用ユーザをbluetoothグループに追加する。

sudo usermod -a -G bluetooth {user}

再起動する。

sudo reboot

再度、bluetoothctlを実行してみる。

bluetoothctl
[NEW] Controller B8:27:EB:58:F6:CF raspberrypi [default]

Failed to start discovery: org.bluez.Error.NotReady

power onでコントローラを起動してやる

bluetoothctl
[NEW] Controller NN:NN:NN:NN:NN:NN raspberrypi [default]
[bluetooth] scan on
Failed to start discovery: org.bluez.Error.NotReady
[bluetooth] power on
Changing power on succeeded
[CHG] Controller NN:NN:NN:NN:NN:NN Powered: yes
[bluetooth] scan on
Discovery started
[CHG] Controller NN:NN:NN:NN:NN:NN Discovering: yes

Failed to connect: org.bluez.Error.Failed

bluetoothctlpairingまでできたが、connectで失敗する。

pulseaudioのデーモンを動かす必要がある。

# 一旦デーモンをkillしてみる
pulseaudio -k

# 再度スタート
pulseaudio --start

PulseAudio: Unable to connect: Access denied

aplayで上記エラーが発生しました。rootpulse-accessグループに追加していないことが原因でした。

# rootをpulse-accessグループに追加
sudo gpasswd -a root pulse-access

参考サイト