Ubuntu
bluetooth
A2DP

UbuntuにBluetoothで接続したヘッドセットがA2DPプロファイルを適用するための設定

はじめに

以前は問題なかったんですが、いつのまにかUbuntuにBluetoothで接続しているヘッドセットがA2DPプロファイルでなくHSP/HFPプロファイルしか適用できなくなっていました。いろいろと調べた結果、A2DPプロファイルが適用できるようになった設定です。

環境

Ubuntu 16.04です。ちなみに、それまで14.04でしたが、もしかしたら16.04に上げれば直るかも、と期待してバージョンアップしましたが変わらなかったので、少し真面目に調べました。

現象

「すべての設定」から「サウンド」を選択して「出力」タブで「サウンド出力デバイスの選択」からBluetoothで接続しているデバイスを選択すると、「プロファイル」のメニューで以下の2つを選択できるようになります。

  • High Fidelity Playback(A2DP Sink)
  • Headset Head Unit (HSP/HFP)

HSP/HFPが設定されていたので、これをA2DP Sinkに変更して「スピーカーのテスト」をしてもステレオになりませんし、「サウンド」画面を閉じてから開くとHSP/HFPに戻っていました。

Bluetoothマネージャーを起動してBluetoothで接続しているデバイスを右クリックして「オーディオプロファイル」からHigh Fidelity Playback(A2DP Sink)を選択すると、

Failed to change profile to a2dp_sink

というエラーメッセージが画面の下に表示されてプロファイルが変更されませんでした。

変更点

いろいろと検索した結果、以下のリンク先に書かれていたコメントを見つけました。

Bluetooth Speaker not doing A2DP Ubuntu Gnome 17.04

どうやらGnome Display Manager(GDM)がpulseaudioのBluetooth接続を有効にしているのが問題で、それを無効にすればいい、ということのようです。

GDMのpulseaudioを無効にする設定が以下の通りです。

  1. /var/lib/gdm3/.config/pulse/default.paをテキストエディタでオープンします。私の環境には、そもそも該当するファイルがなかったので作成しました。ファイルの作成およびオープンにはroot権限が必要です。

  2. 以下の内容を追加します。

default.pa
#!/usr/bin/pulseaudio -nF
#

# load system wide configuration
.include /etc/pulse/default.pa

### unload driver modules for Bluetooth hardware
.ifexists module-bluetooth-policy.so
  unload-module module-bluetooth-policy
.endif

.ifexists module-bluetooth-discover.so
  unload-module module-bluetooth-discover
.endif

エディタを閉じてOSを再起動するとA2DPプロファイルに切り替えられるようになりました。