| SU | MO | TU | WE | TH | FR | SA |
|---|---|---|---|---|---|---|
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 | 1 | 2 | 3 | 4 |
前に見つけたpluseaudio使わなくてもいい方法見つけたので。
Volumio のプレミアム機能でBluetoothスピーカー機能がある。
それをプレミアムなしで使えるようにする手順。
volumio 4 bookworm で実施しているが、
おそらく、プレミアムでBT使えるようになったバージョンならいけるはず。
systemctl status bluealsa でBlueALSAが動いてるか確認。
volumio@volumio:~$ systemctl status bluealsa
● bluealsa.service - BlueALSA service
Loaded: loaded (/lib/systemd/system/bluealsa.service; enabled; preset: enabled)
Active: active (running) since Thu 2026-03-26 20:36:10 JST; 2 days ago
Docs: man:bluealsa(8)
Main PID: 861 (bluealsa)
Tasks: 4 (limit: 1385)
CPU: 610ms
CGroup: /system.slice/bluealsa.service
└─861 /usr/bin/bluealsa -S -p a2dp-source -p a2dp-sink
サービス登録済み、かつ、a2dp-sink(bluetoothレシーバ機能)有効化済みだったので追加のインストールはしてない。
bluetoothctlを実行。プロンプトが[bluetooth]になる。
以下のコマンドを順次実行。
power on : Bluetoothアダプタの電源を入る。agent on : ペアリング時の認証(パスキー確認など)エージェントを使用。default-agent : デフォルトのエージェントを設定。discoverable on: 検索可能に設定。pairable on : ペアリングを許可。
ここでスマホからVolumioを探して接続。Volumio側で許可する。
以降操作不要にするためtrust [MACアドレス]を実行。
これ以上ペアリングしないのでdiscoverable off。
これで、ペアリングは終了。exitで終了する。
Volumioで音再生してデバイスの番号を確認。pcmC<X>D<Y>pの番号を次項のaplayのhw:X,Yに使用。
volumio@volumio:~$ sudo fuser -v /dev/snd/pcm* (再生中)
USER PID ACCESS COMMAND
/dev/snd/pcmC3D0p: mpd 7207 F.... mpd
volumio@volumio:~$ sudo fuser -v /dev/snd/pcm* (停止中)
volumio@volumio:~$
BlueALSAの音を再生デバイスにつなぐためのスクリプトを作成する。sudo nano /usr/local/bin/bt-audio-start.sh でファイル作成。
#!/bin/bash
DAC="hw:3,0" # 前項で調べた番号に設定
# release mpd
/usr/local/bin/volumio stop
sleep 3
# BlueALSA-aplay restart
/usr/bin/pkill bluealsa-aplay
/usr/bin/bluealsa-aplay -D $DAC
再生デバイスが競合するので、先にVolumioの音は止めておくこと。sudo /usr/local/bin/bt-audio-start.sh で手動でbluealsa-aplay起動。
これで音流せるはず。
終わったらpkill bluealsa-aplayする。Volumioから音出せなくなるため。
bluetooth接続・切断時にフックするスクリプトをudevに登録。sudo nano /etc/udev/rules.d/99-bluetooth-audio.rules でファイル作成。
# bluetooth connection detection
ACTION=="add", SUBSYSTEM=="bluetooth", RUN+="/usr/bin/systemd-run --unit=bt-audio-start /usr/local/bin/bt-audio-start.s>
ACTION=="remove", SUBSYSTEM=="bluetooth", RUN+="/usr/bin/pkill bluealsa-aplay"
bt-audio-start.shはsystemd経由で実行する。
そうしないと、bluealsa-aplayが親が即終了して共に死ぬので。
AIに聞いて得た回答を実践しただけだが、実績ができたので記録しておく。