2020/09/22(火) [n年前の日記]
#1 [raspberrypi] Raspberry Pi Zero W でBluetoothスピーカを鳴らしてみた
Raspberry Pi Zero W には音声出力用のジャックがついてないので、以下の方法で音を出すしかないのだけど。
その手の記事は巷に溢れているけど、結構ハマった。どうやら、Raspbian Jessie時代の解説記事が多いようで、そのままコピペして作業したら鳴らなくて…。
Raspbian Buster の場合、pulseaudio はインストールしない状態で作業したほうが良さそう。というかアンインストールしたらようやく素直に鳴ってくれた。
記事内で pulseaudio の設定をしている部分があったらソレは古い情報と決めつけてしまってもいいのかもしれない。もちろん、以前のバージョンのOSを使ってる環境なら参考になる記事だろうから、それはそれで残しておいてほしいのだけど。
「bluealsa amixer」でググれば、関連記事に遭遇しやすいかもしれない…?
- HDMI接続したディスプレイから音を出す。
- GPIOに回路を繋いで音を出す。
- Bluetoothスピーカを接続して音を出す。
- USBオーディオやUSBスピーカを繋いで音を出す。
その手の記事は巷に溢れているけど、結構ハマった。どうやら、Raspbian Jessie時代の解説記事が多いようで、そのままコピペして作業したら鳴らなくて…。
Raspbian Buster の場合、pulseaudio はインストールしない状態で作業したほうが良さそう。というかアンインストールしたらようやく素直に鳴ってくれた。
sudo apt purge pulseaudio pulseaudio-module-bluetooth pavucontrol sudo reboot
記事内で pulseaudio の設定をしている部分があったらソレは古い情報と決めつけてしまってもいいのかもしれない。もちろん、以前のバージョンのOSを使ってる環境なら参考になる記事だろうから、それはそれで残しておいてほしいのだけど。
「bluealsa amixer」でググれば、関連記事に遭遇しやすいかもしれない…?
◎ GUIでの設定作業。 :
デスクトップ環境が使えるなら、GUIで作業したほうが楽かも。
- デスクトップの右上のほうに Bluetoothのアイコンがあるからクリック。
- Make Discoverable を選ぶと Bluetooth機器を検索開始する。
- Add Device... で、Bluetoothスピーカが出てきたら、選んで Pair ボタンをクリック。
- Stop Discoverable で、検索停止。
- スピーカアイコンを右クリックして、Bluetoothスピーカ名(今回は BTS-032A)を選ぶと、そちらが出力先になる。
◎ 作業過程をメモ。 :
Raspbian Buster の場合、bluealsa なるパッケージが肝っぽい。
以下は詳細メッセージ。
ちなみに BTS-032A は、接続したり接続が切れたりするたびに「connect」「disconnect」と喋ってくれる。電源オンオフ時も「power on」「power off」と喋る。
さておき。以下を参考にして状態を確認してみた。
_Raspberry Pi 4のBluetoothから音を鳴らす呪い | hixの日記 | スラド
出力先として認識できているか確認。
A2DP って何だろう…。音楽用のプロファイルらしい。
_ケータイ用語の基礎知識 第259回:A2DP とは
もう少し詳細を見てみる。
ボリュームを変更。
再生確認。aplay なるものを使うと wavファイルが再生できるっぽい。また、/usr/share/sounds/alsa/ 以下に wav ファイルがいくつかあるので、再生確認に使える。
巷の解説記事では speaker-test を使って再生確認する場合が紹介されてるけど。今回、speaker-test -t wav と打っても鳴ってくれなかった…。
デスクトップ上で BTS-032A を選んだりしていたせいか、~/.asoundrc にそれっぽい記述がされていた。
sudo apt install bluealsabluetoothctl を使って、Bluetoothデバイスとペアリングとやらをするらしい。
$ bluetoothctl --version bluetoothctl: 5.50
$ sudo bluetoothctl [bluetooth]# agent on [bluetooth]# scan on Discovery started [CHG] Controller B8:27:EB:93:58:00 Discovering: yes [NEW] Device 41:42:9E:54:68:72 BTS-032A [bluetooth]# info 41:42:9E:54:68:72 [bluetooth]# pair 41:42:9E:54:68:72 [bluetooth]# trust 41:42:9E:54:68:72 [bluetooth]# connect 41:42:9E:54:68:72 [BTS-032A]# quit
以下は詳細メッセージ。
$ sudo bluetoothctl Agent registered [bluetooth]# agent on Agent is already registered [bluetooth]# scan on Discovery started [CHG] Controller B8:27:EB:93:58:00 Discovering: yes [NEW] Device 41:42:9E:54:68:72 BTS-032A [bluetooth]# info 41:42:9E:54:68:72 Device 41:42:9E:54:68:72 (public) Name: BTS-032A Alias: BTS-032A Class: 0x00240418 Icon: audio-card Paired: no Trusted: no Blocked: no Connected: no LegacyPairing: no RSSI: -48 [bluetooth]# pair 41:42:9E:54:68:72 Attempting to pair with 41:42:9E:54:68:72 [CHG] Device 41:42:9E:54:68:72 Connected: yes [CHG] Device 41:42:9E:54:68:72 Modalias: bluetooth:v05ACp0220d0001 [CHG] Device 41:42:9E:54:68:72 UUIDs: 00001101-0000-1000-8000-00805f9b34fb [CHG] Device 41:42:9E:54:68:72 UUIDs: 0000110b-0000-1000-8000-00805f9b34fb [CHG] Device 41:42:9E:54:68:72 UUIDs: 0000110c-0000-1000-8000-00805f9b34fb [CHG] Device 41:42:9E:54:68:72 UUIDs: 0000110e-0000-1000-8000-00805f9b34fb [CHG] Device 41:42:9E:54:68:72 UUIDs: 0000111e-0000-1000-8000-00805f9b34fb [CHG] Device 41:42:9E:54:68:72 UUIDs: 00001124-0000-1000-8000-00805f9b34fb [CHG] Device 41:42:9E:54:68:72 UUIDs: 00001200-0000-1000-8000-00805f9b34fb [CHG] Device 41:42:9E:54:68:72 ServicesResolved: yes [CHG] Device 41:42:9E:54:68:72 Paired: yes Pairing successful [CHG] Device 41:42:9E:54:68:72 ServicesResolved: no [CHG] Device 41:42:9E:54:68:72 Connected: no [CHG] Device 41:42:9E:54:68:72 RSSI: -39 [bluetooth]# trust 41:42:9E:54:68:72 [CHG] Device 41:42:9E:54:68:72 Trusted: yes Changing 41:42:9E:54:68:72 trust succeeded [bluetooth]# connect 41:42:9E:54:68:72 Attempting to connect to 41:42:9E:54:68:72 [CHG] Device 41:42:9E:54:68:72 Connected: yes Connection successful [CHG] Device 41:42:9E:54:68:72 ServicesResolved: yes [BTS-032A]# quit
ちなみに BTS-032A は、接続したり接続が切れたりするたびに「connect」「disconnect」と喋ってくれる。電源オンオフ時も「power on」「power off」と喋る。
さておき。以下を参考にして状態を確認してみた。
_Raspberry Pi 4のBluetoothから音を鳴らす呪い | hixの日記 | スラド
sudo systemctl status bluetooth.serviceSap driver でエラーが出てたので、設定ファイルを修正。
sudo vi /lib/systemd/system/bluetooth.service
#ExecStart=/usr/lib/bluetooth/bluetoothd ExecStart=/usr/lib/bluetooth/bluetoothd --noplugin=sap
sudo reboot
出力先として認識できているか確認。
$ amixer -D bluealsa scontrols Simple mixer control 'BTS-032A - A2DP',0 Simple mixer control 'BTS-032A - SCO',0 Simple mixer control 'BTS-032A | Battery',0'BTS-032A - A2DP' てのが表示されていたら、音が鳴らせる状態になってるということらしい。
A2DP って何だろう…。音楽用のプロファイルらしい。
_ケータイ用語の基礎知識 第259回:A2DP とは
もう少し詳細を見てみる。
$ amixer -D bluealsa Simple mixer control 'BTS-032A - A2DP',0 Capabilities: pvolume pswitch Playback channels: Front Left - Front Right Limits: Playback 0 - 127 Mono: Front Left: Playback 127 [100%] [on] Front Right: Playback 127 [100%] [on] Simple mixer control 'BTS-032A - SCO',0 Capabilities: pvolume pvolume-joined cvolume cvolume-joined pswitch pswitch-joined cswitch cswitch-joined Playback channels: Mono Capture channels: Mono Limits: Playback 0 - 15 Capture 0 - 15 Mono: Playback 14 [93%] [on] Capture 9 [60%] [on] Simple mixer control 'BTS-032A | Battery',0 Capabilities: pvolume pvolume-joined Playback channels: Mono Limits: Playback 0 - 100 Mono: Playback 255 [255%]
ボリュームを変更。
amixer -D bluealsa sset 'BTS-032A - A2DP' 70%
再生確認。aplay なるものを使うと wavファイルが再生できるっぽい。また、/usr/share/sounds/alsa/ 以下に wav ファイルがいくつかあるので、再生確認に使える。
cd /usr/share/sounds/alsa/ aplay Front_Center.wav aplay Noise.wav
巷の解説記事では speaker-test を使って再生確認する場合が紹介されてるけど。今回、speaker-test -t wav と打っても鳴ってくれなかった…。
デスクトップ上で BTS-032A を選んだりしていたせいか、~/.asoundrc にそれっぽい記述がされていた。
$ cat ~/.asoundrc pcm.!default { type asym playback.pcm { type plug slave.pcm "output" } capture.pcm { type plug slave.pcm "input" } } pcm.output { type bluealsa device "41:42:9E:54:68:72" profile "a2dp" } ctl.!default { type bluealsa }もしかすると、この ~/.asoundrc が再生関係に絡んでるのかもしれないけど、まだそのあたりは全然調べてない…。
◎ 問題点。 :
音を鳴らし始めた最初のあたりの音声が聞こえてこない。例えば、「Front Center」という音声なら、最初の一発目は「ter」しか聞こえない感じ。
Raspberry Pi Zero W 側に問題があるのか、それとも Bluetoothスピーカ側に問題があるのかは不明。でもまあ、 HDMI接続で音を鳴らした際も、同じように最初のあたりが聞こえなかったりするので、そういうものなのかもしれない…。
ずっと鳴らし続けてる分には問題ない。しばらく音を出してない状態で、音を出そうと最初の一発目を鳴らし始めた際に聞こえない状態というか。
Raspberry Pi Zero W 側に問題があるのか、それとも Bluetoothスピーカ側に問題があるのかは不明。でもまあ、 HDMI接続で音を鳴らした際も、同じように最初のあたりが聞こえなかったりするので、そういうものなのかもしれない…。
ずっと鳴らし続けてる分には問題ない。しばらく音を出してない状態で、音を出そうと最初の一発目を鳴らし始めた際に聞こえない状態というか。
◎ 参考ページ。 :
_Raspberry Pi 4のBluetoothから音を鳴らす呪い | hixの日記 | スラド
_Raspberry PiでBluetoothスピーカーを鳴らす - Qiita
_19. Raspbian Buster導入と事象対処
_14. Bluetoothスピーカー接続
_A2DP audio streaming using Raspberry PI (Raspbian Jessie)
_チートシート (ラズパイ、ALSA、Bluetooth) - Qiita
_Raspberry Pi Zero WでBluetoothスピーカーを鳴らす - Qiita
_Raspberry piでbluetoothスピーカーを鳴らす - 雑木林
_Raspberry pi - bluetoothスピーカーに接続 | UKey's Labo
_Bluetoothスピーカーから音を出す - belial6's diary
_Raspberry PiでBluetoothスピーカーが使えるのか格安スピーカー実践で検証してみる | THE POOH FILES
_Raspberry PiでBluetoothスピーカーを鳴らす - Qiita
_19. Raspbian Buster導入と事象対処
_14. Bluetoothスピーカー接続
_A2DP audio streaming using Raspberry PI (Raspbian Jessie)
_チートシート (ラズパイ、ALSA、Bluetooth) - Qiita
_Raspberry Pi Zero WでBluetoothスピーカーを鳴らす - Qiita
_Raspberry piでbluetoothスピーカーを鳴らす - 雑木林
_Raspberry pi - bluetoothスピーカーに接続 | UKey's Labo
_Bluetoothスピーカーから音を出す - belial6's diary
_Raspberry PiでBluetoothスピーカーが使えるのか格安スピーカー実践で検証してみる | THE POOH FILES
[ ツッコむ ]
以上です。