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
[ ツッコむ ]
#2 [raspberrypi][linux] Linux上で各種音声フォーマットを再生
Raspberry Pi Zero W + Raspbian Buster で作業。コマンドラインで、wav だけではなく、mp3 や ogg も鳴らせるようにしたい。
_コマンドラインで音声再生:aplay/mpg321/ogg123 - Linux Memo: Vine Linux 5 設定 tips
_Flac を Mp3 に変換 - ArchWiki
_FLACオーディオ形式との間で変換するための優れたコマンドラインツールはありますか?
_flacとlameでFLACをMP3にする - majishini
flac も再生したい…が、そんなことできるのかよくわからないので、せめて mp3 に変換したい。ffmpeg や sox を使えばコマンドラインですぐ変換できるっぽいけど、今回は flac と lame をインストールして、参考ページと同様にスクリプトを作って変換することにした。
一応、sox もインストールしておいた。Debian系パッケージは、mp3の再生でバグがあるという話も見かけたけれど…。
_コマンドラインで音声再生:aplay/mpg321/ogg123 - Linux Memo: Vine Linux 5 設定 tips
_Flac を Mp3 に変換 - ArchWiki
_FLACオーディオ形式との間で変換するための優れたコマンドラインツールはありますか?
_flacとlameでFLACをMP3にする - majishini
sudo apt install alsa-utils mpg321 vorbis-tools flac ffmpeg lame
- wav再生 : aplay hoge.wav
- mp3再生 : mpg321 hoge.mp3
- ogg再生 : ogg123 hoge.ogg
flac も再生したい…が、そんなことできるのかよくわからないので、せめて mp3 に変換したい。ffmpeg や sox を使えばコマンドラインですぐ変換できるっぽいけど、今回は flac と lame をインストールして、参考ページと同様にスクリプトを作って変換することにした。
vi flac2mp3.sh
#! /bin/sh flac -c -d "$1" | lame -V 5 - "`basename "$1" ".flac"`.mp3"
chmod +x flac2mp3.sh ./flac2mp3.sh hoge.flac
一応、sox もインストールしておいた。Debian系パッケージは、mp3の再生でバグがあるという話も見かけたけれど…。
sudo apt install sox libsox-fmt-all
[ ツッコむ ]
#3 [pc] ダイソーでUSBハブを購入
ダイソーでUSBハブを購入してみた。
200円商品。個別スイッチ付き。USB2.0、4ポート。ケーブル長15cm。パッケージの下のほうに、G134、200円パソコン、No.13、と書いてある。
以前もダイソーでUSBハブを購入してみたことがあるけれど、その際購入した製品は、USB2.0対応とパッケージで謳っていながらUSB1.1の速度しかでないというアレな製品で…。今回もそういうオチなのではないかと不安だったけど、既に購入した方々のレビュー記事ではちゃんとUSB2.0の速度が出てるっぽいという話だったので、だったら試しに、と購入してみた次第。
Raspberry Pi Zero W に繋いで使ってみた。ワイヤレスキーボードの子機は動いてるっぽい。手持ちのUSBスピーカ SANWA SUPPLY MM-PSU4WH も繋いでみた。音が鳴った。動いているっぽい。
200円商品。個別スイッチ付き。USB2.0、4ポート。ケーブル長15cm。パッケージの下のほうに、G134、200円パソコン、No.13、と書いてある。
以前もダイソーでUSBハブを購入してみたことがあるけれど、その際購入した製品は、USB2.0対応とパッケージで謳っていながらUSB1.1の速度しかでないというアレな製品で…。今回もそういうオチなのではないかと不安だったけど、既に購入した方々のレビュー記事ではちゃんとUSB2.0の速度が出てるっぽいという話だったので、だったら試しに、と購入してみた次第。
Raspberry Pi Zero W に繋いで使ってみた。ワイヤレスキーボードの子機は動いてるっぽい。手持ちのUSBスピーカ SANWA SUPPLY MM-PSU4WH も繋いでみた。音が鳴った。動いているっぽい。
[ ツッコむ ]
#4 [raspberrypi] Raspberry Pi Zero WにUSBスピーカを繋いでみた
Raspberry Pi Zero W から Bluetoothスピーカを使ってみたものの、鳴らし始めの最初のあたりが鳴ってくれない点が気になった。まあ、HDMI接続も同じ状態になるのだけど…。
解決するには別の方法しかないのかなと思えてきたので、試しに手持ちのUSBスピーカを繋いでみた。環境は Raspbian Buster。試用したスピーカは SANWA SUPPLY MM-PSU4WH。1.2W (0.6W + 0.6W)。
_MM-SPU4WH【USBスピーカー(ホワイト)】USBケーブル1本で電源と音源を供給できるコンパクトサイズの木製USBスピーカー。ホワイト。 | サンワサプライ株式会社
USBハブに差して、デスクトップ上の右上のスピーカアイコンを右クリック。Audio Advantage MicroII を選択してみたら、すんなり音が鳴ってくれた。簡単なんだな…。しかも、Bluetoothスピーカと違って、最初のあたりの音声もちゃんと聞こえる。
ちなみに、lsusb と打ってみると、MM-SPU4WH は、C-Media CM102-A+/102S+ と表示されてた。
バスパワー駆動のUSBハブに接続しても大丈夫なのだろうか、消費電力の面で厳しいのではないかと不安だったけど、1.2W(0.6W + 0.6W)ぐらいなら、音量を絞れば一応動いてくれる、ということなのかな…。
さておき。デスクトップ上の音量を変更しても、スピーカから出てくる音量が変わらない。MM-SPU4WH は背面に物理的なボリュームがついていて、そこを回せば音量調整はできるけど…。PC側から調整できないのは仕様なのか、それとも何か設定がおかしいのか…。
解決するには別の方法しかないのかなと思えてきたので、試しに手持ちのUSBスピーカを繋いでみた。環境は Raspbian Buster。試用したスピーカは SANWA SUPPLY MM-PSU4WH。1.2W (0.6W + 0.6W)。
_MM-SPU4WH【USBスピーカー(ホワイト)】USBケーブル1本で電源と音源を供給できるコンパクトサイズの木製USBスピーカー。ホワイト。 | サンワサプライ株式会社
USBハブに差して、デスクトップ上の右上のスピーカアイコンを右クリック。Audio Advantage MicroII を選択してみたら、すんなり音が鳴ってくれた。簡単なんだな…。しかも、Bluetoothスピーカと違って、最初のあたりの音声もちゃんと聞こえる。
ちなみに、lsusb と打ってみると、MM-SPU4WH は、C-Media CM102-A+/102S+ と表示されてた。
$ lsusb Bus 001 Device 004: ID 0d8c:0103 C-Media Electronics, Inc. CM102-A+/102S+ Audio Controller Bus 001 Device 003: ID 046d:c52b Logitech, Inc. Unifying Receiver Bus 001 Device 002: ID 214b:7250 Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
バスパワー駆動のUSBハブに接続しても大丈夫なのだろうか、消費電力の面で厳しいのではないかと不安だったけど、1.2W(0.6W + 0.6W)ぐらいなら、音量を絞れば一応動いてくれる、ということなのかな…。
さておき。デスクトップ上の音量を変更しても、スピーカから出てくる音量が変わらない。MM-SPU4WH は背面に物理的なボリュームがついていて、そこを回せば音量調整はできるけど…。PC側から調整できないのは仕様なのか、それとも何か設定がおかしいのか…。
[ ツッコむ ]
以上、1 日分です。