Ubuntu24.04でcron等のログインシェルでは無い環境からBluetooth再生する

ALL
スポンサーリンク

Ubuntu24.04で、cronのようにログインシェルからでは無い環境で、Bluetooth再生を行う場合です。
こちらでは、RaspberryPi+Ubuntu24.04で cron の @rebootでバックグラウンドスクリプトを起動し、通知音の再生などで本記事の方法を使っています。

まず、Bluetooth再生したいユーザで、自動ログインをON(設定-システムーユーザー の箇所)にして再起動しておきます。

cron等から実行するスクリプト内では、次のように XDG_RUNTIME_DIR を指定します。
100% の箇所でボリューム調節です。
pactl は、sudo apt install pulseaudio-utils でインストールできます。

XDG_RUNTIME_DIR=/run/user/$(id -u) pactl set-sink-volume XXXXXXX 100%
XDG_RUNTIME_DIR=/run/user/$(id -u) mplayer /usr/share/sounds/alsa/Front_Center.wav

XXXXXXX の箇所は、pactl list sinks| grep Name | grep bluez を実行した結果で、Name: の後に続く文字列を記述してください。
例えば、次の表示だった場合は、

        Name: bluez_output.11_22_33_44_55_66.1

次のように指定します。

XDG_RUNTIME_DIR=/run/user/$(id -u) pactl set-sink-volume bluez_output.11_22_33_44_55_66.1 100%
XDG_RUNTIME_DIR=/run/user/$(id -u) mplayer /usr/share/sounds/alsa/Front_Center.wav

Bluetooth接続などを実施する bluetoothctl コマンドを実行する場合は、XDG_RUNTIME_DIR を指定しなくてOKです。

/usr/bin/bluetoothctl connect xx:xx:xx:xx:xx:xx

これで、Bluetoothスピーカーから聞こえます。
ログインシェルからは XDG_RUNTIME_DIR を指定せずに音が鳴らせます。

mplayer /usr/share/sounds/alsa/Front_Center.wav

コメント