Ubuntu で SBC/AAC/LDAC/Headset を切り替える備忘録

Environment
Photo by hyt.

Ubuntu で SBC/AAC/LDAC/Headset の別を切り替える備忘録です.

Ubuntu で Bluetooth 接続のイヤフォンやスピーカーをつなぐと,望んでいないプロファイルやコーデックで接続されることがあります.これを切り替える方法がよく分かっていなかったんですが,以下で良いみたいです.

まず,どんな接続に対応しているのかを調べるのは pacmd コマンドを使うようです.例として手持ちの SONY WF-1000XM3 の場合は以下の通り.

$ pacmd list-cards
....
    index: 3
	name: <bluez_card.38_18_4C_AA_AA_AA>
	driver: <module-bluez5-device.c>
	owner module: 31
	properties:
		device.description = "WF-1000XM3"
		device.string = "38:18:4C:AA:AA:AA"
		device.api = "bluez"
		device.class = "sound"
		device.bus = "bluetooth"
		device.form_factor = "headset"
		bluez.path = "/org/bluez/hci0/dev_38_18_4C_5E_C7_B1"
		bluez.class = "0x240404"
		bluez.alias = "WF-1000XM3"
		device.icon_name = "audio-headset-bluetooth"
		device.intended_roles = "phone"
	profiles:
		headset_head_unit: Headset Head Unit (HSP/HFP) (priority 30, available: unknown)
		a2dp_sink_sbc: High Fidelity Playback (A2DP Sink: SBC) (priority 40, available: no)
		a2dp_sink_aac: High Fidelity Playback (A2DP Sink: AAC) (priority 40, available: unknown)
		a2dp_sink_aptx: High Fidelity Playback (A2DP Sink: aptX) (priority 40, available: no)
		a2dp_sink_aptx_hd: High Fidelity Playback (A2DP Sink: aptX HD) (priority 40, available: no)
		a2dp_sink_ldac: High Fidelity Playback (A2DP Sink: LDAC) (priority 40, available: no)
		off: Off (priority 0, available: yes)
	active profile: <headset_head_unit>
	sinks:
		bluez_sink.38_18_4C_AA_AA_AA.headset_head_unit/#2: WF-1000XM3
	sources:
		bluez_sink.38_18_4C_AA_AA_AA.headset_head_unit.monitor/#4: Monitor of WF-1000XM3
		bluez_source.38_18_4C_AA_AA_AA.headset_head_unit/#5: WF-1000XM3
	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:
....

profiles の欄に選択可能なものが表示されます.もちろん available: no となっているものは使えません(SBC には対応しているはずなんですが……,なぜか no となっています).したがって,上のリストの場合,使える可能性があるのは,unknown か yes の

  • HSP/HFP
  • A2DP Sink: AAC
  • Off

の3種類です.

切り替えは,index 番号 3 と,プロファイル名を指定して行います.

$ pacmd set-card-profile 3 a2dp_sink_aac

特に何もエラー等表示されなければ大丈夫です.

これ,実際に音を流している最中でも切り替えられます.実際,AAC から headset_head_unit に切り替えると明らかに音質が変わります.

なお,上にも書きましたが headset_had_unit プロファイルしか使えないとか,逆に a2dp_sink_aac しか使えないとかいう場合もありますが,この場合は何回か接続し直すと直ることが多いので,まだ bluez が不安定なんだと思います.

以上

EnvironmentGadget
スポンサーリンク
Following hyt!
タイトルとURLをコピーしました