Ubuntu – Automatically switch sound output device to Bluetooth headset & force to A2DP profile on connection


My bluetooth headset (Plantronics Backbeat Go2) is connected just fine with my system, but there are several manual steps I have to take to make this work that I would very much like to have automated:

  1. After every reboot I have to run pactl load-module module-bluetooth-discover in the terminal to get the device to connect at all. I tried putting this in a shell script to run on start up, but no dice 🙁
  2. My headset connects automatically with no issues, but it always defaults to Telephony Duplex or even Off instead of A2DP; I've tried and failed with several different strategies to force A2DP 🙁
  3. Force the BT headset to be the default output device. Tried several strategies here, too… unfortunately every time I connect the headset the index from pacmd seems to change, so I can't force a default in the PA conf file set-default-sink that way. And using the listed name doesn't seem to work either – if the headset is not present, it switches to the speakers and doesn't switch back if the headset connects 🙁

Thanks for any advice you might have on resolving these issues!

Best Answer

This worked for me: https://sandalov.org/blog/2146/

Instructions copied here for posterity:

Add to /etc/pulse/default.pa to automatically switch pulseaudio sink to Bluez:

.ifexists module-bluetooth-discover.so
load-module module-bluetooth-discover
load-module module-switch-on-connect  # Add this

Modify/Create /etc/bluetooth/audio.conf to auto select A2DP profile (instead of HSP/HFP):

Disable=Headset # Add this

Apply changes:

pulseaudio -k # Restarts pulseaudio

# You may need to turn your bluetooth headphones off, then back on