mieki256's diary



2020/09/22(火) [n年前の日記]

#1 [raspberrypi] Raspberry Pi Zero W でBluetoothスピーカを鳴らしてみた

Raspberry Pi Zero W には音声出力用のジャックがついてないので、以下の方法で音を出すしかないのだけど。 今回、3番目の、Bluetoothスピーカで鳴らす方法を試してみたいなと。先日ダイソーで購入した600円のBluetoothスピーカ BTS-032A を使ってみる。環境は、Raspbian Buster。

その手の記事は巷に溢れているけど、結構ハマった。どうやら、Raspbian Jessie時代の解説記事が多いようで、そのままコピペして作業したら鳴らなくて…。

Raspbian Buster の場合、pulseaudio はインストールしない状態で作業したほうが良さそう。というかアンインストールしたらようやく素直に鳴ってくれた。
sudo apt purge pulseaudio pulseaudio-module-bluetooth pavucontrol
sudo reboot

記事内で pulseaudio の設定をしている部分があったらソレは古い情報と決めつけてしまってもいいのかもしれない。もちろん、以前のバージョンのOSを使ってる環境なら参考になる記事だろうから、それはそれで残しておいてほしいのだけど。

「bluealsa amixer」でググれば、関連記事に遭遇しやすいかもしれない…?

GUIでの設定作業。 :

デスクトップ環境が使えるなら、GUIで作業したほうが楽かも。
  1. デスクトップの右上のほうに Bluetoothのアイコンがあるからクリック。
  2. Make Discoverable を選ぶと Bluetooth機器を検索開始する。
  3. Add Device... で、Bluetoothスピーカが出てきたら、選んで Pair ボタンをクリック。
  4. Stop Discoverable で、検索停止。
  5. スピーカアイコンを右クリックして、Bluetoothスピーカ名(今回は BTS-032A)を選ぶと、そちらが出力先になる。

作業過程をメモ。 :

Raspbian Buster の場合、bluealsa なるパッケージが肝っぽい。
sudo apt install bluealsa
bluetoothctl を使って、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.service
Sap 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接続で音を鳴らした際も、同じように最初のあたりが聞こえなかったりするので、そういうものなのかもしれない…。

ずっと鳴らし続けてる分には問題ない。しばらく音を出してない状態で、音を出そうと最初の一発目を鳴らし始めた際に聞こえない状態というか。

参考ページ。 :


以上です。

過去ログ表示

Prev - 2020/09 - Next
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project