Bluetoothスピーカーと接続していても、音を出していないとBluetoothスピーカー側がスリープモードに入り、必要な時に音が出ない場合がある。ここでは、Bluetoothスピーカーとの接続が切れないようにする方法をお伝えする。
アイディアはとても簡単で、ある一定時間ごとに無音のサウンドを出力し続けることにより、Bluetoothスピーカーとの接続を維持する。
環境:Raspbian GNU/Linux 8.0 (jessie)
無音のwavファイル
無音のサウンドの元となるファイルは、Audacityを使用させていただき作成した。作成したファイルは、1ミリ秒の無音のwavファイルとなっており、以下のリンクをクリックするとダウンロードできる。これを適当なディレクトリに配置しておく。
今回は、「/home/user/」ディレクトリに「nosound_one_millisecond.wav」として配置することにする。
Bluetoothスピーカーで無音ファイルを出力
次に、Bluetoothスピーカーで無音ファイルを出力するBashスクリプトを以下のように作成する。
スクリプト中のBluetoothスピーカーアドレスは、事前に確認しておく。
すでにBluetoothスピーカーと接続されていればターミナル上で「hcitool con」コマンドを実行すれば、現在接続されているBluetooth機器の一覧が表示される。
今回は、「/home/user/」ディレクトリに「continue_connection_of_bluetooth_speaker.sh」として配置する。
#!/bin/sh
# Bluetoothスピーカーアドレス
# 適宜、右側を変更
ADDR="XX:XX:XX:XX:XX:XX"
# 無音wavファイル
NOSOUND_FILE="/home/user/nosound_one_millisecond.wav"
# Bluetoothスピーカーが接続されていた場合に無音wavを出力
if hcitool con | grep "${ADDR}" ; then
aplay ${NOSOUND_FILE}
fi
一定時間ごとに無音ファイルを出力
どの程度の間隔が空くと、Bluetoothスピーカーがスリープモードに入るのかは機器に依存すると思われる。
ここでは、cron上で3分ごとに上記のスクリプトを実行するようにする。
まずは、ターミナル上でcronを開く。
sudo crontab -e
次に、以下を追加してcrontabを閉じる。
*/3 * * * * sh /home/user/continue_connection_of_bluetooth_speaker.sh > /dev/null 2>&1
これで、Bluetoothスピーカーと接続している限り、Bluetoothスピーカー側で勝手に接続が切られることがないはずだ。
RaspberryPi Bluetoothスピーカーとの接続を維持する方法