PulseAudioがカードプロファイルを 'a2dp_sink'に設定するのに失敗しました。どうすればログを見て、何が問題なのかを知ることができますか?
現在、ubuntu 16.04をインストールしていますが、新規インストール時にはa2dpが動作していましたが、これは最後の選択肢として残しておきたいと思います。bluetoothの設定からペアリングを消去して再度ペアリングすると、たまにa2dpプロファイルになることがありますが、ヘッドセットを切断して再度接続すると、a2dpプロファイルが機能しなくなり(a2dpになっていると表示されます)、HSP/HSFに切り替えて初めて機能しますが、その後はa2dpに設定できません。
私が試したのは
pacmd set-card-profile <index> a2dp_sink
を実行してみましたが、以下のようなエラーが出てしまいます。
"Failed to set card profile to 'a2dp_sink'"
私は Linux の経験が浅いので、どうやってログを取得するのか、何を見ればいいのかわかりませんが、pacmd list-cards からこれを取得しました。
うまくいったとき
name: <bluez_card.50_C9_71_97_A1_86>
driver: <module-bluez5-device.c>
owner module: 27
properties:
device.description = "Jabra REVO a4.0.0"
device.string = "50:C9:71:97:A1:86"
device.api = "bluez"
device.class = "sound"
device.bus = "bluetooth"
device.form_factor = "headset"
bluez.path = "/org/bluez/hci0/dev_50_C9_71_97_A1_86"
bluez.class = "0x240404"
bluez.alias = "Jabra REVO a4.0.0"
device.icon_name = "audio-headset-bluetooth"
device.intended_roles = "phone"
profiles:
headset_head_unit: Headset Head Unit (HSP/HFP) (priority 20, available: unknown)
a2dp_sink: High Fidelity Playback (A2DP Sink) (priority 10, available: unknown)
off: Off (priority 0, available: yes)
active profile: <a2dp_sink>
sinks:
bluez_sink.50_C9_71_97_A1_86/#6: Jabra REVO a4.0.0
sources:
bluez_sink.50_C9_71_97_A1_86.monitor/#10: Monitor of Jabra REVO a4.0.0
ports:
headset-output: Headset (priority 0, latency offset 0 usec, available: unknown)
properties:
headset-input: Headset (priority 0, latency offset 0 usec, available: unknown)
properties:
うまくいかないとき
name: <bluez_card.50_C9_71_97_A1_86>
driver: <module-bluez5-device.c>
owner module: 25
properties:
device.description = "Jabra REVO a4.0.0"
device.string = "50:C9:71:97:A1:86"
device.api = "bluez"
device.class = "sound"
device.bus = "bluetooth"
device.form_factor = "headset"
bluez.path = "/org/bluez/hci0/dev_50_C9_71_97_A1_86"
bluez.class = "0x240404"
bluez.alias = "Jabra REVO a4.0.0"
device.icon_name = "audio-headset-bluetooth"
device.intended_roles = "phone"
profiles:
headset_head_unit: Headset Head Unit (HSP/HFP) (priority 20, available: unknown)
a2dp_sink: High Fidelity Playback (A2DP Sink) (priority 10, available: yes)
off: Off (priority 0, available: yes)
active profile: <off>
ports:
headset-output: Headset (priority 0, latency offset 0 usec, available: yes)
properties:
headset-input: Headset (priority 0, latency offset 0 usec, available: unknown)
properties:
そして、所有するモジュールは
name: <module-bluez5-device>
argument: <path=/org/bluez/hci0/dev_50_C9_71_97_A1_86>
used: 0
load once: no
properties:
module.author = "João Paulo Rechi Vita"
module.description = "BlueZ 5 Bluetooth audio sink and source"
module.version = "8.0"
既に /etc/bluetooth/audio.conf を修正し、blueman をインストールしようとしましたが、うまくいきませんでした。また、bluezとpulseaudioを再インストールしてみましたが、何も変わりませんでした。
何が問題なのか、それを解決する方法はありませんか?
32
3
active profile: "という行に基づいて、サウンドプロファイルが有効になりませんでした。
プロファイルを変更するのに使いやすいプログラムとして、pavucontrolがあります。sudo apt install pavucontrol -y`でインストールできます。その後、コマンドラインからpavucontrolを実行するか、Kubuntuを使用している場合はAlt+F2でpavucontrolを入力してください。
設定タブを選択し、ヘッドフォンのプロファイルを変更してみて、アップデートされるかどうかを確認してください。bluetoothのA2DPにはまだバグがあるようで、私がインストールした16.04のうち2台に影響が出ています。すでにA2DPと表示されている場合は、それをオフに変更し、bluetoothアプレットでデバイスを切断してから再接続してください。そして最後にプロファイルをA2DPに戻すとうまくいくはずです。
また、コマンドラインで以下の操作を行うと、ほとんどの操作が完了するはずです。以下の両方の pacmd コマンドの 2 の数字を現在のインデックス番号に置き換えてください。
もっと複雑ですが、プロファイルをオフにしてから a2dp に戻し、bluetooth デバイスの切断と接続を行わないという、同じことを自動で行う方法があります。
私は、同じことをするために、動作するがずさんなスクリプトを作りましたが、bluetoothヘッドフォンの切断と再接続も行いました。このスクリプトは、デバイスの切断と再接続のたびにインデックスが変化するため、プロファイルインデックスを取得します。これは、上に挙げたヘッドセットのデバイスIDでハードコードされています。
テストでは、デバイスがまだオーディオプロファイルを変更する準備ができていなかったため、スリープ時間を3秒ではなく5秒にしました。あなたの結果は数秒±5秒の違いがあるかもしれません。落とし穴の可能性について編集します。大きなスクリプトを2回実行しないと動作しない場合があることがわかりました。テストしていないので、スリープ時間を増やすことで解決するかどうかはわかりません。しかし、同じブランドのBTヘッドフォンを搭載した2台のマシンで使用したところ、ヘッドフォンで音を出すためのプロセスを自動化するという、想定された通りの効果が得られました。
この問題は最終的にはbluetoothパッケージにパッチが適用されるでしょうが、Ubuntuの新しいリリースや他のバージョンのLinuxでも再発しているようです。いずれにしても、お役に立てれば幸いです。
この問題はUbuntu 16.04.1 LTSで発生しましたが、https://wiki.debian.org/BluetoothUser/a2dp に掲載されているGDMワークアラウンドを適用することで解決しました。
具体的には、
/var/lib/gdm3/.config/pulse/client.conf
を作成/編集して、次のように読み替えます。次に
また、
/etc/pulse/default.pa
にも追加しました。これは厳密には必要ないかもしれませんが。
再起動後、bluetoothマネージャーで接続すると、オーディオプロファイルを
a2dp_sink
に切り替えることができました。lagerismiは、Jamie S.による回答をもとに、here on launchpadというスクリプトを投稿しました。
スクリプト内の変数でデバイスのMACアドレスを変更してください。(
bluetoothctl
--> Device で確認できます)スクリプトを実行可能な状態にする
chmod a-x bluetooth_headphone_reactivation.sh
。起動時に自動的に実行されるようにします(ヘッドセットがすでにオンになっている場合のみ動作します)。
手動で素早く実行するには
スクリプトは