Ubuntu PCがBluetoothオーディオコマンド(再生/一時停止、次/前の曲、上/下)を他のデバイスに送信して、Bluetooth経由で音楽をストリーミングすることを望みます。つまり、トラックを変更したり、音楽を一時停止したり再開したりできるBluetoothヘッドフォンのようにUbuntu PCを「偽装」して実装したいと思います。
以下のpavucontrolスクリーンショットで示されている次の設定があります(pt2
はBluetooth経由で接続されているデバイスです):
この構成ではストリーミングは期待どおりに機能します(pt2
からストリーミングされた音楽を聞くことができます)が、一時停止/再生の再開やトラックの変更などの信号を送信する方法を見つけられませんでした。
特定の機能を可能にする多くのBluetoothプロトコルがあることはすでに知っています。仕様を正しく理解していれば、私が興味を持っているのはA2DPです。これは現在デバイスが接続されている方法です。しかし、プロファイルのドロップダウンの下には、HSP/HFPヘッドセットヘッドユニット、HSP/HFPヘッドセットゲートウェイ、およびオフのオプションもあります。
私はPythonでこのようなコマンドを送信できるようにする独自のアプリケーションを開発するので、Python APIまたはbashコマンドを介してそれらを送信することに興味があります。
Bluetoothデバイスと通信する方法に興味があるので、この質問をします。
@kennに触発されて、私はdbus
およびd-feet
ツールをさらに詳しく調べることにしました。最終的に私は次のコマンドを使用して目標に到達しました。
dbus-send --system --print-reply --dest=org.bluez /org/bluez/hci0/dev_44_78_3E_85_9D_6F org.bluez.MediaControl1.Play
もちろん、これにより、Bluetooth経由でPCに接続されたモバイルデバイスで音楽の再生がトリガーされました。
一般に、Bluetoothデバイスの場合、このコマンドは次のようになります。
dbus-send --system --print-reply --dest=org.bluez /org/bluez/hci0/dev_<mobile_bluetooth_device_mac_address_with_numbers_underscore_separated> org.bluez.MediaControl1.<command_to_send>
デバイスのMACアドレスを確認するには、bt-devices -l
を実行します。括弧で囲まれたMACアドレスを持つすべての既知の(ただし、必ずしも接続されている、または検出されているとは限りません)デバイスが一覧表示されます。
許可されたコマンドリストを見つけるには、d-feet
をSudo apt install d-feet
とともにインストールします。それを実行した後、System Bus
タブでbluez
クエリの検索を適用し、デバイスのMACのエントリを見つけます。
org.bluez.MediaControl1
の下で、Bluetoothヘッドフォンを使用するものと同様の方法があります。しかし、それらのツリーを参照すると、さらにAWAYが見つかります。これは本当に注目に値します。
dbus-send
は、dbus
を使用して信号を送信するためのコマンドです。 --system
スイッチは、System Bus
dフィートのタブからのものを使用することを示します。まだ試していませんが、--print-reply
はデバッグのみを目的としており、必須ではないと思います。 --dest=org.blez
は、dフィートヘッダーのName
を参照します。 /org/bluez/hci0/dev_<mobile_bluetooth_device_mac_address_with_numbers_underscore_separated>
およびorg.bluez.MediaControl1.<command>
は、オブジェクトツリーパスを参照します。