スマホ音声を Ubuntu に Bluetooth で入力する方法 (A2DP の導入)

簡単コマンド 4 発!
スマホ (特に Android) の音声を Ubuntu に Bluetooth で入力して、パソコンと同じスピーカーから鳴らすにはこのコマンドを実行しよう。
# A2dP-source profile をインストール
$ sudo apt-get install pulseaudio-module-bluetooth
# pulseaudio を再起動
$ sudo killall pulseaudio
$ sudo pulseaudio --start
# Bluetooth を再起動
$ sudo systemctl restart bluetooth
参考にしたのはこの記事。記事自体のタイトルは Fix a2dp-source profile connect failed for XX Protocol not available in Linux というもので、もっと具体的にエラーに言及してくれてるね。
エラーに到達する過程
つい先日まで Ubuntu 20.04 を使っていて、問題なく Bluetooth で Android の音声を入力して Ubuntu 側で再生できてた記憶がある。それが Ubuntu 22.04 にアップグレード後から失敗するようになった。Ubuntu と Android の Bluetooth 接続が確立した瞬間に切れてしまう。これを調べたところこの記事を見つけた。曰く、
まずは Bluetooth サービスの状況を次のコマンドでチェックします。
UbuntuでBluetoothがONできない時の対処法$ systemctl status bluetooth.service
同様のコマンドで Bluetooth サービスの状況を確認したところ、確かに何らかのエラーが表示された。僕の場合は記事に書かれているのとは違ったエラーだったので、そのエラーを手がかりに更に調査してみた。僕が確認したエラーメッセージはこんな感じ。
$ systemctl status bluetooth.service
# 中略
bluetoothd[602]: a2dp-source profile connect failed for 40:40:A7:A8:79:AC: Protocol not available

このエラーメッセージ a2dp-source profile connect failed
をぐぐるとこの記事 (冒頭にもリンク済) を見つけ、a2dp-source profile
の問題だと判明。必要なライブラリをインストールして解決できました!
ところで bluetooth.com というウェブサイトを初めて知った… まぁ、そりゃあるよね🤔 要るし。僕が見たのは A2DP の仕様のページ。
A2DP-Source Profile って Mac でも使える…?
実は最近は Ubuntu のほかに Macbook も使っているんだけど、Android から Macbook への音声伝送ができない。もちろん Bluetooth で接続することはできるんだけど、Andoird が転送する音声を Macbook が入力として受け取ってくれないのだ!
Reflector という Mac アプリを使えば Android からの Cast を受信して音楽を再生することができる。Bluetooth 接続ではないことに注意。このアプリは使い方がとても簡単で最初はすぐに気に入った一方で、気に入らない点もあって結局購入してない。気に入らないのは:
- 音声だけでなく画面も転送される点。それは僕にとってちょっと余計
- 転送された画面が Mac 側でデフォルトで最前面に表示される点。鬱陶しい
- かなり頻繁に接続が切れる点。Reflector を再起動して繋ぎ直しが要る。面倒くさい
もしかして A2DP を Mac にインストールすれば、Android から Bluetooth で飛ばした音声を、そのまま音声入力として受け取って再生することができるかも?Wikipedia では、A2DP はこのように説明されてる。
A2DPでは […] 音声データを、ACLチャンネル上に高品質にストリーミング配信するための手順 […] が定義されている。
具体的なユースケースとして、デジタルオーディオプレーヤーからヘッドフォンまでのオーディオデータのストリーミングがあげられる。
Advanced Audio Distribution Profile – Wikipedia
要は、機械 A から機械 B に音声を無線伝送する規格だと思っていいよね?そうなれば僕の Macbook ライフの QoL が爆増すること間違いなし!調べよう…!