a stray sheep

お仕事周りの雑記帳

Bluetoothスピーカーから音を出す

Bluetoothスピーカーとつなぐ

ラズパイマガジン 2017年8月号の「Raspberry Piで楽しむPCオーディオ」を参考にしました。
今回はとくにスマホからの操作をしたいわけではないので、途中の手順は飛ばしてます。

スピーカーは、SonyのSRS-X33を使います。

パッケージとファームウェアの更新

$ sudo apt update
$ sudo apt upgrade
$ sudo apt install rpi-update
$ sudo rpi-update

Bluetoothの設定

音を出すだけなら、PulseAudio関係の設定はいらないですね、きっと。

BlueZとpulseaudio-module-bluetoothをインストール

$ sudo apt install bluez pulseaudio-module-bluetooth

PulseAudioのsystemdサービス化

ラズパイ起動時にPulseAudioが起動するよう、サービス化の設定

$ sudo vi /etc/systemd/system/pulseaudio.service

[Unit]
Description=Pulse Audio

[Services]
Type=simple
ExecStart=/usr/bin/pulseaudio --system --disallow-exit --disable-shm

[Install]
WantedBy=multi-user.target

PulseAudioサービスのポリシー設定

PulseAudioとBlueZの通信を許可するポリシーを設定

$ sudo vi /etc/dbus-1/system.d/pulseaudio-bluetooth.conf

<busconfig>
    <policy user="pulse">
        <allow send_destination="org.bluez"/>
    </policy>
</busconfig>

PulseAudioのモジュール設定

Bluetooth関連のサービスを読み込む設定をファイルの最後に追加

$ sudo vi /etc/pulse/system.pa

...
### Automatically load driver modules for Bluetooth hardware
.ifexists module-bluetooth-policy.so
load-module module-bluetooth-policy
.endif

.ifexists module-bluetooth-discover.so
load-module module-bluetooth-discover
.endif

PulseAudioの起動・有効化

$ sudo systemctl start pulseaudio.service
$ sudo systemctl enable pulseaudio.service

piユーザをPulseAudioで音声を出力するためのグループに追加

$ sudo usermod -a -G pulse,pulse-access pi

Bluetoothスピーカーと接続

Bluetoothバイスの準備

  • 電源を入れる
  • ペアリング状態にする(SRS-X33の場合は、PAIRINGボタン長押し)

Bluetoohデバイスとペアリング

$ sudo bluetoothctl
[NEW] Controller XX:XX:XX:XX:XX:XX raspberrypi [default]
[NEW] Device YY:YY:YY:YY:YY:YY W01_*********
[NEW] Device ZZ:ZZ:ZZ:ZZ:ZZ:ZZ SRS-X33 

[bluetooth]# agent on   #エージェント有効
Agent registered

[bluetooth]# default-agent #エージェントリクエスト発行
Default agent request successful

[bluetooth]# scan on  #デバイス探索開始
Discovery started
[CHG] Controller XX:XX:XX:XX:XX:XX Discovering: yes
[CHG] Device YY:YY:YY:YY:YY:YY RSSI: -96
[CHG] Device ZZ:ZZ:ZZ:ZZ:ZZ:ZZ RSSI: -38 #デバイス探索で見つかったデバイスとペアリング

[bluetooth]# pair ZZ:ZZ:ZZ:ZZ:ZZ:ZZ  #発見したデバイスとペアリング
Attempting to pair with ZZ:ZZ:ZZ:ZZ:ZZ:ZZ
Failed to pair: org.bluez.Error.AlreadyExists
[CHG] Device ZZ:ZZ:ZZ:ZZ:ZZ:ZZ Connected: yes
[DEL] Device YY:YY:YY:YY:YY:YY W01_************
[NEW] Device YY:YY:YY:YY:YY:YY W01_************

[bluetooth]# trust ZZ:ZZ:ZZ:ZZ:ZZ:ZZ  #デバイスをtrustして、次回以降自動接続する
Changing ZZ:ZZ:ZZ:ZZ:ZZ:ZZ trust succeeded

[bluetooth]# connect ZZ:ZZ:ZZ:ZZ:ZZ:ZZ  #ペアリングしたデバイスを接続
Attempting to connect to ZZ:ZZ:ZZ:ZZ:ZZ:ZZ
Connection successful  #これが出ると、PAIRINGボタンが点滅から点灯に変わる

[bluetooth]# exit
Agent unregistered
[DEL] Controller ZZ:ZZ:ZZ:ZZ:ZZ:ZZ raspberrypi [default]

音声テスト

$ cd /usr/share/sounds/alsa
$ ls
ront_Center.wav  Noise.wav        Rear_Right.wav
Front_Left.wav    Rear_Center.wav  Side_Left.wav
Front_Right.wav   Rear_Left.wav    Side_Right.wav
$ aplay Noise.wav
再生中 WAVE 'Noise.wav' : Signed 16 bit Little Endian, レート 48000 Hz, モノラル

スピーカーから音が出ました。成功!!