14. Bluetoothスピーカー接続

BluetoothでSony SRS-XB2スピーカーに接続することをネット情報を元に何回かtryしてきたが毎回接続できずに終わってしまった。
今回、comfortや音楽再生機能をraspi0に完全移行できたので、OS再インストールして再度挑戦し、試行錯誤しながらやっと接続できたので、手順を備忘録として残すことにした。

【追記】(2021/01/12)
2020/12/02版のraspiosではbluetooth機能が改善されていて、以下の作業は不要になった。

  1. パッケージをインストールする
    
    $ sudo apt-get install pulseaudio pavucontrol
    $ sudo apt-get install blueman pulseaudio-module-bluetoot
     (pi-bluetooth ← デフォルトでインストールされていた)
    
  2. Pulse Audioサービスを作成する
    
    $ sudo nano /etc/systemd/system/pulseaudio.service
    下記を新規入力
    
    [Unit]
    Description=Pulse Audio
    
    [Service]
    Type=simple
    ExecStart=/usr/bin/pulseaudio --system --disallow-exit --disable-shm
    
    [Install]
    WantedBy=multi-user.target
    
  3. PulseAudioとBlueZの通信を許可するポリシーを設定
    
    $ sudo nano /etc/dbus-1/system.d/pulseaudio-bluetooth.conf
    下記を新規入力
    
    <busconfig>
    
      <policy user="pulse">
        <allow send_destination="org.bluez"/>
      </policy>
    
    </busconfig>
    
  4. Bluetooth関連のサービスを読み込む設定をファイルの最後に追加
    
    $ sudo nano /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
    
  5. Bluetooth ヘッドセットの再生の問題対応
    
    $ sudo nano /etc/pulse/default.pa
    
    <前略>
    ### Automatically suspend sinks/sources that become idle for too long
    #load-module module-suspend-on-idle
    ↑
    #を追加して無効化する
    
    $ sudo nano /etc/pulse/system.pa
    上記と同じ処置
    
  6. 再起動
    
    再起動
    $ sudo reboot
    
  7. pulseaudioサービスを開始し、自動起動するようにします。(ペアリング前に必ず起動しておく)
    
    $ pulseaudio --check -v でデーモンが起動しているかを確認
    $ pulseaudio -k でデーモンが起動していたらkillする(小生の場合、これが胆だった)
    $ sudo systemctl start pulseaudio.service
    $ sudo systemctl status pulseaudio.service
    $ sudo systemctl enable pulseaudio.service
    
  8. piユーザとrootをPulseAudioで音声を出力するためのグループに追加
    
    $ sudo usermod -a -G pulse,pulse-access pi
    $ sudo usermod -a -G pulse-access,audio root
    間違って違うユーザーを登録してしまったら:
    グループメンバーの削除:$ sudo gpasswd -d ユーザー名 グループ名
    グループメンバーの確認:$ getent group | grep pulse
    
  9. Bluetoohデバイスとペアリング
    
    タスクバーのBluetooth GUIで行っても問題無かったが、一応コマンドラインの方法
    $ sudo bluetoothctl
    [bluetooth]# agent on
    [bluetooth]# default-agent
    [bluetooth]# scan on
    [CHG] Device xx:xx:xx:xx:xx:xx SRS-XB2:  →スピーカーの値をコピー
    [bluetooth]# pair xx:xx:xx:xx:xx:xx
    [bluetooth]# trust xx:xx:xx:xx:xx:xx
    [bluetooth]# connect xx:xx:xx:xx:xx:xx
    [bluetooth]# exit
    
  10. スピーカーテスト
    
    $ speaker-test -t wav    →ctl+cで終了
    数十秒待っても音が出なかったら終了して、タスクバーのスピーカアイコンを右クリックでSRS-XB2選択し再実行
    それでも出ない場合はもう一度選択(小生の場合、2度目でOKになった)
    一度接続して音が出れば、以降、rebootしても自動接続してくれる
    
  11. *** 以上
    

【参考】下記サイトの情報を参考にさせて頂きました。
  1. Raspberry Pi 3B + BluetoothスピーカでAmazon Alexaを安く構築(1 まずは音を鳴らす)
  2. Bluetoothスピーカーから音を出す
    注:このサイトの「PulseAudioのsystemdサービス化」項で、一部誤りが有り、小生、エラー発生の解決に梃子摺った
      [Services] → [Service]が正しい。
  3. Bluetooth ヘッドセットの再生の問題
  4. How To Connect Bluetooth Headset Or Speaker To Raspberry Pi 3


2021/01/12(2018/10/02)