RaspberryPi4 で Bluetoothスピーカーを接続する手順です。
なお、ここでの設定手順の OS は Ubuntu Server 20.04 LTS です。
すでに Ubuntu で動作している場合は、「BluetoothスピーカとRaspberryPi4の接続」から読み進めてください。
RaspberryPi4 の Ubuntuインストール
外付けHDDに Ubuntu を入れる場合は、次の記事の手順を実施します。
Raspberry Pi 4 Model B で Ubuntu20 をUSB接続のHDD/SSDから起動する: パソコン鳥のブログ
microSDカードにUbuntu を入れる場合は、次の手順を実施します。
まず、PCで作業します。
microSDカードをさしたカードリーダを、PCに接続しておきます。
https://ubuntu.com/download/raspberry-pi から Ubuntu Server 20.04 LTS をダウンロードします。
こちらでは 64bit 版で試しました。
https://www.raspberrypi.org/downloads/ から Raspberry Pi Imager をダウンロード・実行してインストールします。
Raspberry Pi Imager を起動します。
次のような画面になるので、[CHOOSE OS] を選択します。
下のほうにスクロールして、[Use custom] を選択し、先ほどダウンロードした、Ubuntu のイメージを指定します。
最初の画面に戻るので、[CHOOSE SD CARD] で microSDカードを指定し、[WRITE] を押します。
これで、microSDカードに Ubuntu がインストールされます。
BluetoothスピーカとRaspberryPi4の接続
必要モジュールのインストール
RaspberryPi4 で作業します。
sudo apt-get install pi-bluetooth pulseaudio-module-bluetooth pavucontrol bluez
再起動します。
Bluetooth接続
rootユーザーで、または sudo して以降の作業をします。
次のコマンドを実行します。
busctl tree org.bluez
表示が次のようになることを確認します。
nbsp;busctl tree org.bluez └─/org └─/org/bluez └─/org/bluez/hci0
Bluetoothの設定用ツールをターミナルから起動します。
bluetoothctl
デバイスの検索を実行します。次のコマンドを入力します。
scan on
Bluetoothスピーカーをペアリングモードにします。
各スピーカの説明書を見てペアリングモードにしてください。
例えば Amazon Echo / Echo dot は Bluetoothスピーカーとして設定できますが、次のようにします。
PCからブラウザで https://alexa.amazon.co.jp にアクセスするか、スマホでAlexaアプリを起動します。
設定 - デバイス - Echo で、”ワイヤレス” の個所で Bluetooth を選択します。
[新しいデバイスをペアリング] を押します。
検出中… と表示され、ペアリングモードになります。
Bluetoothスピーカーをペアリングモードにすると、RaspberryPi で立ち上げた bluetoothctl のコマンドラインで、下のように表示がされます。
デバイス名 が、つなげたい Bluetoothスピーカーであることを確認します。
(出ていない場合は、しばらく待つと表示されます)
XX:XX:XX:XX:XX:XX の部分は各自異なりますので、以降の説明文中では、各自表示された内容に置き換えて下さい。
[NEW] Device XX:XX:XX:XX:XX:XX デバイス名
ペアリングします。
pair XX:XX:XX:XX:XX:XX
色々出た後、Pairing successful と表示されます。
接続します。
connect XX:XX:XX:XX:XX:XX
Connection successful と表示されます。
次回以降、自動的に接続されるようにデバイスを信用します。
trust XX:XX:XX:XX:XX:XX
Changing XX:XX:XX:XX:XX:XX trust succeeded と表示されます。
これで、Bluetoothスピーカーと RaspberryPi でぺアリング・接続できました。
exit で bluetoothctlコマンドから抜けます。
Bluetoothスピーカの接続確認・音量調節
RaspberryPi4 で mplayer をインストールします。
apt install mplayer
何か mp3ファイルを RaspberryPi4 に持ってきて、mplayer の引数に指定して実行します。
これでBluetoothスピーカーから鳴るはずです。
mplayer XXXXX.mp3
音は鳴ることを確認したら、音量を調節します。
次のコマンドで alsa-utilsパッケージをインストールします。
apt install alsa-utils
次のように、音量を % で指定してコマンドを実行します。
pactl set-sink-volume 1 50%
再度 mp3 を再生し、音量をちょうど良くなるように調節します。
mplayer XXXXX.mp3
ここで調節した音量の % の値をメモしておいてください。
この後の手順でその値を使用します。
pulseaudio の設定
サウンド再生には pulseaudio が必要ですが、Ubuntu デフォルトではpulseaudio はユーザーごとに、ログイン/ログアウトのたびに 起動・終了されます。
これを、ログインせずとも自動起動するようにします。
下記記事の内容に従って設定してください。
Ubuntu20.04 で pulseaudio をシステム起動時に実行する: パソコン鳥のブログ
次に音量調節を実施します。
先の手順でメモしておいた音量の % の値を指定して、次のようにコマンドを実行します。
PULSE_RUNTIME_PATH="/tmp/$(id -u)/pulse" pactl set-sink-volume 1 50%
自動起動している pulseaudio を、ログイン環境からでも使用できるように設定をします。
次の行を末尾に追加します。
.bashrc
export PULSE_RUNTIME_PATH="/tmp/$(id -u)/pulse"
再起動または次のコマンドを実行します。
source ~/.bashrc
音量調節時と同様、サウンドファイルを再生できるか確認してください。
mplayer XXXXX.mp3
起動時に Bluetoothデバイスに自動接続する
Bluetoothスピーカーによっては、Ubuntu起動時に自動的に Bluetooth接続できないかもしれません。
先の手順「pulseaudio の設定」で Ubuntu20.04 で pulseaudio をシステム起動時に実行する に従って作成したスクリプトに追加します。
start_pulseaudio.sh の末尾に ~/connect_bt_sp.sh を追加します。
次のようになります。
~/start_pulseaudio.sh
/bin/sleep 60 mkdir -p /tmp/$(id -u)/pulse export PULSE_RUNTIME_PATH="/tmp/$(id -u)/pulse" /usr/bin/pulseaudio -D --exit-idle-time=-1 ~/connect_bt.sh
connect_bt.sh を作成します。
XX:XX:XX:XX:XX:XX の箇所は、先の「Bluetooth接続」の手順での XX:XX:XX:XX:XX:XX の部分です。
~/connect_bt.sh
#!/bin/bash device_target=XX:XX:XX:XX:XX:XX export PATH=/bin:/usr/bin:$PATH export PULSE_RUNTIME_PATH="/tmp/$(id -u)/pulse" FOUND=`pacmd list-sinks | grep "$device_target"` if [ -n "$FOUND" ]; then result=`echo -e "info $device_target\nexit\n" | bluetoothctl | grep "Connected: yes"` if [ -n "$result" ]; then exit fi fi echo -e "disconnect $device_target\nexit\n" | bluetoothctl sleep 1 echo -e "connect $device_target\nexit\n" | bluetoothctl sleep 1 max=10 i=0 while [ $i -lt $max ]; do FOUND=`pacmd list-sinks | grep "$device_target"` if [ -n "$FOUND" ]; then break fi sleep 1 i=$(( i + 1 )) done if [ $i -eq $max ]; then # 接続できませんでした exit 1 fi
実行権をつけます。
chmod +x connect_bt.sh
これで、システム起動時にBluetooth接続されるようになります。
コメント