まず、問題:基本的な耳栓を備えたメインの音楽プレーヤーとして、Cowon MP3プレーヤーを使用しています。
A2DPを提供し、ネットブック(UNE 10.04を実行)をレシーバーとして機能させたい
a2dpに関するWeb上のリソースがいくつかありますが、ほとんどは古くなっています。
まず、問題:基本的な耳栓を備えたメインの音楽プレーヤーとして、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シンクのサポートであるためです-また、実装されたすべてのサービスがデフォルトで有効になっていると主張するこのファイルのコメントと矛盾しています。:(
この変更を行った後、を実行してbluetoothdを再起動する必要がありますsudo service bluetooth restart
。
この作業を取得しようとして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が含まれている場合があり、ループバックデバイスが既に設定されている場合がありますが、これは最も一般的なケースではないようです。
PulseAudioが設定を記憶するため、ループバック接続をセットアップする半自動的な方法 -pavucontrol GUIプログラムもインストールしている場合-単純にループバックモジュールをロードし、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
。アクティブなシンクに変更し、後でpavucontrolで変更します。)
$SINK
てpactl list sinks
、それが後に示されています、Name:
$BTSOURCE
、pactl list sources
source_dont_move
引数は、Bluetoothデバイスが切断されたときに、別のオーディオ・ソースに戻って落下からのループバック接続を防止することができます。代わりに削除され、次回に再度設定する必要があります。ここでは例1は、次のようになります(交換することを忘れないでください:
と_
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
参照:
pactl load-module module-bluethooth-discover
は、ubuntu studio 14.04で失敗します。そのため、携帯電話がPCをオーディオシンクとして正しく認識している場合でも、にはbluez
ソースが表示されませんpulseaudio
。何か案は?
pactl list sources short
bluezソースが表示されない場合は、2つの解決策が見つかりました:gdbus call --system --dest org.bluez --object-path /org/bluez/XXX/hci0/dev_XX_XX_XX_XX_XX_XX --method org.bluez.AudioSource.Connect
where where(パスにはデバイスBDアドレスとで取得できるアダプターパスが含まれます)を呼び出しますgdbus call --system --dest org.bluez --object-path / --method org.bluez.Manager.DefaultAdapter
。または、ここで説明されているようにd-feetを使用します。それ以外の場合は、電話側で接続し、何かを再生し始めます。
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
それでおしまい!一番上の答えの解決策は少し複雑であることがわかったので、このように単純化しました(入力とコピー/貼り付けがはるかに少なくなりました)。ただし、Bluetoothデバイスの前にリストされているオーディオデバイスを削除すると、私のソリューションはおそらく壊れます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に接続し、携帯電話で音楽を再生するだけです。すべてがコンピューターに送信され、コンピューターのスピーカーで再生されます。
はい!どういたしまして。
apt-get
ワイルドカードではなく、正規表現を使用します。したがって、何を使用してインストールされるのかpulseaudio*
わかりません(ヒント:で始まるのはパッケージだけではありませんpulseaudi
)。また、PulseAudioはすでにデフォルトのUbuntuインストールの一部です。