まず、問題:基本的な耳栓を備えたメインの音楽プレーヤーとしてCowon MP3プレーヤーを使用しています。
A2DPを提供し、ネットブック(UNE 10.04を実行)をレシーバーとして機能させたい。
A2dpに関するWeb上のリソースがいくつかありますが、ほとんどは古くなっています。
Ubuntuマシンをa2dp Bluetoothデバイスとして使用するには、まず「a2dpシンク」エンドポイントとして登録するように設定する必要があります。
Ubuntu(10.04以降)の bluez パッケージには、Bluetoothデバイスがa2dpシンクとして構成されているかどうかを確認するために使用できる sdptool というユーティリティが含まれています。 Bluetoothヘッドセットに対して実行されたsdptoolからの出力は次のとおりです(アドレスはgnome-control-centerの[Bluetooth設定]ダイアログから取得されます)。
$ sdptool search --bdaddr 00:18:16:3A:3B:D4 a2snk
Searching for a2snk on 00:18:16:3A:3B:D4 ...
Service RecHandle: 0x10002
Service Class ID List:
"Audio Sink" (0x110b)
Protocol Descriptor List:
"L2CAP" (0x0100)
PSM: 25
"AVDTP" (0x0019)
uint16: 0x102
Profile Descriptor List:
"Advanced Audio" (0x110d)
Version: 0x0102
$
そして、これは私のローカルUbuntuマシンに対して実行したときの出力です:
$ sdptool search --bdaddr local a2snk
Searching for a2snk on FF:FF:FF:00:00:00 ...
$
これは、Ubuntuマシンがa2dpシンクとして自分自身を宣伝していないことを示しています。ただし、a2dpソースとして自分自身を宣伝しています。
$ sdptool search --bdaddr local a2src
Searching for a2src on FF:FF:FF:00:00:00 ...
Service Name: Audio Source
Service RecHandle: 0x10003
Service Class ID List:
"Audio Source" (0x110a)
Protocol Descriptor List:
"L2CAP" (0x0100)
PSM: 25
"AVDTP" (0x0019)
uint16: 0x102
Profile Descriptor List:
"Advanced Audio" (0x110d)
Version: 0x0102
これにより、Ubuntuマシンはオーディオソースとしてヘッドセットと正しくペアリングできますが、UbuntuマシンをBluetoothオーディオの出力(シンク)として使用することはできません。
/etc/bluetooth/audio.conf
を編集する場合、[General]
セクションの下に次の行を追加して、a2dpシンクサポートを有効にできます。
Enable=Source
これは、直感的にはわかりませんが、ここで追加するのはソースサポートではなく、Bluetoothシンクのサポートであるためです。また、実装されたすべてのサービスがデフォルトで有効になっていると主張するこのファイルのコメントと矛盾します。 :(
この変更を行った後、Sudo service bluetooth restart
を実行してbluetoothdを再起動する必要があります。
以前にAndroidデバイスとUbuntuコンピューターをペアリングしてこの作業を取得しようとした場合、Androidを取得するには、両側のペアリングを削除して再ペアリングする必要があります。 Ubuntuを利用可能なオーディオデバイスとして認識します。
これを完了すると、AndroidデバイスがPulseAudioの下に入力デバイスとして表示されます。 PulseAudioが新しいBluetoothオーディオソースを検出しない場合、コマンドラインからBluetoothモジュールをインストールしてロードする必要があります。
Sudo apt-get install pulseaudio-module-bluetooth
pactl load-module module-bluetooth-discover
次に、ループバック接続(ソースからシンクへの直線)を使用して、このオーディオ入力を出力/シンク(スピーカー、Bluetoothヘッドセットなど)にルーティングするようにPulseAudioに指示する必要があります。
PulseAudioの新しいバージョンにはmodule-bluetooth-policyが含まれている場合があり、ループバックデバイスが既に設定されている場合がありますが、これは最も一般的なケースではないようです。
ループバック接続をセットアップするための半自動の方法-pavucontrol GUIプログラムもインストールしている場合-ループバックモジュールをロードして設定するだけですPulseAudioは設定を記憶するため、pavucontrolを使用します。モジュールのロードは、pactlを使用してコマンドから実行されます。
pactl load-module module-loopback
まだ何も聞こえない場合や、奇妙なフィードバック効果が得られた場合でも、入力を取得するソースと出力を最初に送信するシンクを新しく作成したデバイスに伝える必要があります。
Pavucontrolを開き、その[構成]タブを開きます。 Bluetoothデバイスがここに表示され(blueman-managerまたは別のBluetoothツールを使用してペアリングした後)、プロファイルがA2DPに設定されていることを確認します。 [入力デバイス]タブに切り替えて、デバイスがミュートされていないことを確認してください。 [録音]タブに切り替え、ミュートボタンの横にある選択ボックスを使用して、新しく作成されたループバック接続がデバイスをソースとして使用するようにします。 [再生]タブに切り替えて、ループバック接続が同じ方法で使用するシンクを選択します。ループバックデバイスがタブに表示されない場合は、各タブの下部にある選択ボックスを使用してすべてのストリームが表示されていることを確認してください。
これで、デバイスの再生中、スピーカー、または選択した出力シンクからオーディオが聞こえます。デバイスが切断されると、ループバックデバイスは使用可能なシンクとソースにフォールバックしますが、これは望ましくない可能性があるため、必要になるまでループバックデバイスをミュートしてください。 module-*-restoreモジュールにより、次回同じBluetoothデバイスが接続されたときに、ループバック接続により同じシンク/ソースが復元されます。
それでもうまくいかない場合、またはpavucontrolがインストールされていない場合は、代わりに次の方法でループバックを設定できます:
pactl load-module module-loopback source_dont_move=yes source=$BTSOURCE sink=$SINK
($BTSOURCE
をPulseAudioで見られるBluetoothデバイスのソース名、たとえばbluez_source.14_DA_E9_2A_D7_57
に置き換え、$SINK
をオーディオストリームの送信先のPulseAudio出力の名前に置き換えます。例:alsa_output.pci-0000_00_1b.0.analog-stereo
。sink引数を完全に省略し、アクティブなシンクにフォールバックし、後でpavucontrolを使用して変更することができます。
$SINK
はpactl list sinks
で検索できます。Name:
の後に表示されます$BTSOURCE
をpactl list sources
で見ることができますsource_dont_move
引数は、Bluetoothデバイスが切断されたときにループバック接続が別のオーディオソースにフォールバックするのを防ぎます。代わりに削除され、次回に再度設定する必要があります。次に例を示します(Bluetoothアドレスの:
を_
に置き換えてください)。
pactl load-module module-loopback source_dont_move=yes source=bluez_source.14_DA_E9_2A_D7_57 sink=alsa_output.pci-0000_00_14.2.analog-stereo
フォールバックモジュールのロードに失敗した場合は、source_dont_move=yes
引数を削除してみてください。バージョン1.0で最初に使用可能になりました。ただし、この音声をドロップする前にこのループバック接続を削除するように注意してください。たとえば、ラップトップマイクのミュートが解除されている場合、非常に悪いフィードバックが返されることがあります。完了したら、このループバック接続を手動でドロップするには、次を実行します。
pactl unload-module $(pactl list short modules | grep "loopback.*$BTSOURCE" | cut -f1)
繰り返しますが、$BTSOURCE
を、Bluetoothデバイスを参照するPulseAudioソースの名前に置き換えます。 load-moduleコマンドによって返されたIDを使用してモジュールをアンロードすることもできます。
$ pactl load-module module-loopback source_dont_move=yes source=bluez_source.14_DA_E9_2A_D7_57 sink=alsa_output.pci-0000_00_14.2.analog-stereo
15
$ pactl unload-module 15
参照:
Ubuntuソフトウェアセンターからインストールされたbluemanを使用します。ブルーマンアイコンを右クリック*->「ローカルサービス」->音声->「高度な音声受信」がオンになっていることを確認します。ところで私はそれを使って、Ubuntu 11.10ラップトップでAndroid電話でプレイするものを聴きます。
*ブルーマンアイコンは、gnome Shell + ubuntu 11.10の右下隅に表示されます。これは私の場合です。これが何らかの形であなたの役に立つことを願っています。
Ubuntu 12.04で本当に簡単になりました
Bluetoothデバイスを接続します
Bluetoothデバイスを検索し、ソース番号をメモします。
pactl list sources
Bluetoothデバイスのループバックを作成します。
pactl load-module module-loopback source=$SOURCE_NUMBER
$ SOURCE_NUMBERは、以前にメモした番号です。
たとえば、オーディオ再生を機能させるために次のように入力しました。
$ pactl load-module module-loopback source=3
それでおしまい!一番上の答えの解決策は少し複雑であることがわかったので、このように単純化しました(入力とコピー/貼り付けがはるかに少なくなりました)。ブルートゥースデバイスの前にpactl list sources
でリストされたオーディオデバイスを削除すると、おそらく私の解決策は壊れます。
また、Bluetoothデバイスを切断する前にループバックモジュールを削除することを忘れないでください。
作成したループバックデバイスのモジュール番号をメモします。
pactl list short modules
ループバックデバイスを削除します。
pactl unload-module $MODULE_NUMBER
以前の回答は、12.04のリリース前に書かれていたため、いくつかの変更があったと確信しています。たとえば、Bluetoothデバイスをオーディオソースとして使用することを手動で有効にする必要はありませんでした(デフォルトで有効にされていました)。ただし、携帯電話のBluetooth設定で「Media Audio」プロファイルを切り替える必要がある場合があります(CyanogenMod 9.1.0を実行しているSamsung Captivate)。
おそらく、シェルスクリプトを使用してbluetooth A2DPデバイス接続を監視し、そのためのループバックモジュールを自動的にロードすることでdbus-monitorを活用する方法はありますが、それは少し頭にあります。
Ubuntu 12.10では、これを手動で行う必要がなくなることを願っています。
13.04では、ソースデバイスをubuntuラップトップとペアリングすると、正常に機能します!今ではとても簡単だったことを見つけるのはとてもクールです。
Ubuntu 16.04では、これはそのまま使用できます。
答えよりも簡単な解決策。
あなたは単に行くことができます
Sudo apt-get install pulseaudio*
次に再起動します。再起動後、Bluetoothに接続して、携帯電話で音楽を再生するだけです。すべてがコンピューターに送信され、コンピューターのスピーカーで再生されます。
はい!どういたしまして。