Raspberry Piでつくる マルチポイントBluetoothスピーカー
はじめてのRaspberry Piを購入しました。マルチポイント対応Bluetoothレシーバーを作ったので、その過程を残しておきます。
制作のキッカケ
ひとり暮らし大学生の僕のデスクには、Bluetoothスピーカーがひとつ、WindowsPC、iPad mini、Androidスマホの計3端末があります。
Bluetoothデバイスって、端末を切り替えるときにペアリングをやり直さないといけないですよね。皆さん御存知の通りかなり面倒。
しかし!世の中には便利な仕組みがあります。
「マルチポイント接続」というものです。
これを使うと、最大2台、ペアリング切り替えなしで音声を流すことができます。
ところがこの仕組み、3台以上に対応できる製品は売られていないんです。(もし売ってたら教えてほしい!)
そんな中ネットを調べているとRaspberry Piで自作している人を発見!それも複数!
というわけで右も左も分からないままですが作り方と参考にしたリンクを紹介します。
主にこの2つの記事を参考にさせていただきました。ありがとうございます。詳しい仕組みを知りたい方はこちらの記事へGO!
はじめに
■ これから作るもの、大まかな仕組み
・音声を再生したい端末の数だけBluetoothレシーバーを用意する。
・レシーバーと端末を1対1でペアリングする。
・ラズパイ側で音声をMIXし、スピーカーに出力する。
■ 僕のスキル
Raspberry Piは全く初めての購入。LINUX経験もゼロ。
日々のPC作業に困ることはないがごく普通の一般人。というか大学生。
■ 購入したもの
Raspberry Pi 3 Model B (1つ)
USB Bluetoothアダプター (4つ)
MicroSDカード(1つ)
https://www.biccamera.com/bc/item/5241558/
1. Raspberry Piの初期設定
まず、Raspberry Piの初期設定を行います。ここでの作業は、OSの書き込み、ネットワークとの接続などを行います。今回参考にした記事では、
ということで、ノートPC1台さえあればセットアップ可能です。本当にありがたい記事でした。
非常に丁寧に説明されているので、初期設定はこちらをどうぞ。
最後の方の「ファイアウォール設定」の設定でつまずいてしまったので、こちらの記事を参考に設定しました。
あっという間に初期設定が終わりましたね!!
僕は1度失敗を経て約2時間かかりましたが…
2. Bluetooth Manegerのインストール
ここからは、マルチポイント環境を作っていきます。
冒頭で紹介したこちらの記事を参考にしましたが、いくつかつまずいたポイントがあるのでこのnoteでも詳しく説明します。
ここからの操作は、基本的にRaspbian OS標準搭載の「LXTerminal」を使用しました。もちろん、PCからのSSH接続でも大丈夫です。
まず、GUIのBluetooth Maneger(blueman)をインストールします。
sudo apt install blueman
次に、設定ファイルを操作していきます。管理者権限でファイルマネージャーを開きましょう。
sudo pcmanfm
/lib/systemd/system/bluetooth.serviceを開きます。
ここでは、スマホ等の送信元デバイスからの音量調節を有効化します。既に記述されている、
ExecStart=/usr/lib/bluetooth/bluetoothd
の部分を、#でコメントアウトし、次の行に以下の文を書き加えます。
ExecStart=/usr/lib/bluetooth/bluetoothd --plugin=a2dp --compat --noplugin=sap
今回はじめて知りましたが、設定ファイルを書き換えるときはもとの文を残したほうがいいんですね。(たぶん常識なのだろう。笑)
以上が済んだら、以下のコマンドでBluetoothサービスを再起動してください。
sudo systemctl daemon-reload
sudo systemctl restart bluetooth
あとは基本的にGUIを操作するだけで設定できます。
3. Bluetooth Manegerの設定
Raspberry pi のUSBポートにBluetoothアダプタを差し込み、スタートメニューから、Bluetooth Managerを開いてください。
以下のようにBluetoothアダプタの選択肢が現れたらOKです。
1つ、あるいは2つしか表示されないという人は、このあと「4.Bluetoothアダプタの設定」で詳しく説明するので少し読み進めてください。
今回、USBのBluetoothアダプタ4つと、Raspberry pi本体に標準搭載されているBluetoothアダプタの合計5つが表示されています。
初期状態ではすべてのアダプタの名前が「Bluez」となっていて区別できないので、名前を変えておきましょう。
「分かりやすい名前」のところに任意のデバイス名を入力します。
ここに入力した名前が他のデバイスから探すときに表示される名前になります。
今回は、raspberry pi #0~#4としておきました。
また、「常に表示」あるいは「一時的に表示」にしておかないと他のデバイスからBluetooth探索できないので注意です。
僕は「常に表示」にしておきました。
あとはペアリングをしていくだけです。1つのBluetoothアダプタにつき1端末とペアリングできるので、1つ接続完了したら他のアダプタを選んで次の端末と接続しましょう。
最後に、Raspberry piの音声出力先を「AV Jack」に変えておきましょう。
デフォルトでは「HDMI」になっていることが多いです。
デスクトップのツールバーにある音声マークを右クリックすると変更できます。
ここまでできれば、複数の端末から音声が出力されるはずです。お疲れさまでした!!
4. Bluetoothアダプタの設定
お待たせしました。Bluetoothアダプタが表示されなかった皆さん、ここから頑張っていきましょう。
僕も、はじめは2つしか表示されませんでした。いろいろ調べていると、以下のことがわかりました。
ここからは、以下の記事の内容を参考に解説していきます。
4-1 接続したUSBデバイスの表示
まずは現状の確認から。Raspberry piが認識しているUSBデバイスの一覧を、以下のコマンドで表示します。
lusb
このように表示されます。僕の場合はアダプタを4つ用意していて、4つとも既に認識されていました。
4-2 接続したBluetoothアダプタの表示
次に、接続されたBluetoothアダプタの一覧を表示させてみましょう。
hciconfig
このように、デバイス一覧が表示されます。画面が切れていますが、僕は「hci0」~「hci4」まで5台表示されました。
ここで、「BD Address」の部分が重複したアドレスになっていました。これが原因でBluetooth Manegerで認識できていないと思われます。
4-3 Bluetoothアドレスの変更
より詳細なBluetoothアダプタ情報を得るために、次のコマンドを実行します。
hciconfig -a
ここからの内容は、CSR製のチップに有効とのことです。
Manufacturer: Cambridge Silicon Radioと表示されていればOKです。
新しいデバイスアドレスを 11:22:33:44:55:66 にしたいのならば、ターミナルで以下のコマンドを実行。
sudo bccmd psset -s 0 bdaddr 0x44 0x00 0x66 0x55 0x33 0x00 0x22 0x11
さらに、次のコマンドで新しいアドレスに変更されます。
sudo bccmd warmreset
sudo service bluetooh restart
これを繰り返すと、アドレスの重複をなくすことができます。ミスを減らすために、Bluetoothアダプタは1つずつ接続して変更していくと良いでしょう。
しかし、僕はここでエラーが出てしまいました。どうやら、アドレスの桁数の処理で桁が溢れてしまったようです。幸いにも、Bluetoothアドレスを生成するソフトを発見したので、こちらの力を借りることにしました。(怪しいソフトだったので自己責任でどうぞ)
ここまでできれば再度、Bluetoothデバイスを一覧してみましょう。アドレスの重複がなければOKなので、「3. Bluetooth Manegerの設定」を参考にペアリングを進めてください。
最後に
これで設定は完了です。基本的に設定をいじらなければ安定して動作しています。気にならない程度ですが遅延があったので、遅延調整をしようと設定を変えたら動かなくなったので、3回ほどリセットして構築し直しています。うまく動いたら設定を変えないのが一番のようです。
この記事にたどりつくような方はおそらく理解されていると思いますが、あくまで僕の環境での結果です。各自、自己責任でよろしくお願い致します。
また、僕も詳しいわけではないので、コメントされても回答できない場合もあります。ぜひ、リンク先の記事も参考にしてください。
それでは、よいマルチポイント生活を!
この記事が気に入ったらサポートをしてみませんか?