54

UPDATE Aug 2017: The solution marked as accepted by me apppears to have worked until Ubuntu 15.10. For 16.04+ choose one of the more recent solutions.

For 16.04+ the config file is /etc/bluetooth/main.conf NOT /etc/bluetooth/audio.conf .

I have a bluetooth speaker, Sony SRS-BTX300, which works in linux/ubuntu 13.04, but only after some fiddling. (Update Dec 2013: same problems remain in 13.10)

I have to set the preferred bandwidth mode to "High fidelity playback" (A2DP) each time after switching on the computer and reconnecting the speaker.

The mode resets itself to "telephony/duplex" (=low bandwidth) every time. It takes about 20 clicks to reset the speaker, (click through menu, disconnect, reconnects, select mode, test), and these are definitely too many clicks.

How can I make "A2DP" mode the default mode, an do so in a persistent manner?

A few screen shots will illustrate.

After choosing this menu by clicking on the bluetooth icon in the top panel in Unity...

Bluetooth Icon on panel

After setting up this...

A2DP

... the preferred mode will be reset to this after restarting/suspending the computer

Telephony Duplex

knb
  • 5,004
  • You may try playing with the settings in the /etc/bluetooth/audio.conf file. E.g. if you don't use any headset, change the MaxConnected=1 setting to 0. – falconer Dec 17 '13 at 11:39
  • @falconer This worked on 15.04. Thanks. – black Oct 28 '15 at 17:02

7 Answers7

31

There's an option in /etc/bluetooth/audio.conf called aAutoConnect=truewhich is hashed out.

sudo nano /etc/bluetooth/audio.conf

Delete the "#" at the start of the AutoConnect=true line

I found enabling this option by removing the # and got things connecting properly with my bluetooth headset

Restart the bluetooth service for the change to take effect:

sudo service bluetooth restart
Tim
  • 32,861
  • 27
  • 118
  • 178
Joe
  • 334
  • Thanks! - in that config file, the comment text above that option was quite verbose, and a bit misleading ("so the default setting of true is usually a good idea." and it's commented out: #AutoConnect=true. --- Removal of the "#" now also seems to work for me, although I haven't rebooted yes (just switched speaker on and off) – knb Dec 21 '14 at 16:11
  • 1
    First it worked, but now it doesn't anymore. More ideas? – TIIUNDER Jan 06 '16 at 20:03
  • 9
    No such file in Ubuntu 15.10? – timr Mar 27 '16 at 22:21
  • Same as @tim and adding the file didn't help. – Nathan J.B. Apr 04 '16 at 18:27
  • Why does this not have all the upvotes? – John Blackberry Apr 25 '16 at 15:33
  • 8
    no such file in 16.04 either... – knocte Jun 16 '16 at 18:34
  • This worked for my new Bose Quiet Control 30 headphones/neckbuds (QC30). It sounded pretty hissy and was driving me crazy, now it sounds like something I expect from Bose! – Elijah Lynn Jan 02 '17 at 02:37
  • 8
    As of Ubuntu 17.04, no such file either. I tried to modify main.conf instead, adding AutoConnect=true someplace in the file, but it didn't solve my problem... – Johannes Lemonde Jul 16 '17 at 18:42
  • @JohannesLemonde - uncommenting Name = BlueZ in that file and restarting bluetooth solved it for me in Xfce (18.04): https://askubuntu.com/a/1087118/925128 – cipricus Jun 04 '19 at 18:39
  • Worked for me on Ubuntu 19.04, though I had to re-pair my headset (Sony 700N) – Ryan Krage Sep 12 '19 at 21:23
  • 1
    The configuration in /etc/bluetooth/main.conf didn't work for me. Every time my headphones or laptop go off and on again the automatically reconnected headphones go into 'HSP/HFP' and they can not be set to 'A2DP Sink'. They require to reconnect/repair. So I scripted it into this gist: https://gist.github.com/egelev/2e6b57d5a8ba62cf6df6fff2878c3fd4 – egelev Nov 12 '19 at 12:20
  • @knb It is commented out, because true is the default, built-in setting. – Bachsau May 25 '21 at 10:01
29

Add the following line to /etc/bluetooth/audio.conf:

[General]
Disable=Headset

and then run this command:

sudo service bluetooth restart

Thread: (Natty) Connect only A2DP profile for bluetooth headset.

Tim
  • 32,861
  • 27
  • 118
  • 178
amagnoni
  • 391
  • 3
  • 4
12

For those wondering, I found in Ubuntu 16.04 there is a slight difference to the answer:

sudo gedit /etc/bluetooth/main.conf

And update the following line

#AutoEnable=false

to

AutoEnable=true

Followed by

sudo service bluetooth restart

For me, this defaulted the audio profile to A2DP Sink when connecting a bluetooth audio device.

  • 1
    works, but I also added Disable=Headset and restarted my computer – wordsforthewise Jan 04 '18 at 01:28
  • Dunno what you mean @cipricus. I added Disable=Headset to my /etc/bluetooth/main.conf file I think. – wordsforthewise Jun 11 '19 at 22:29
  • @wordsforthewise - I wanted to find if both lines are needed or, if only one is enough, whether both work. - Trying to test, I find that in fact I had both. Commenting Disable=Headset & restarting bluetooth, all is fine. Commenting also AutoEnable=true & restarting bluetooth: cannot connect the headset. But after restarting the system I can connect it, and all is fine although both lines are commented now. Odd. – cipricus Jun 13 '19 at 18:38
  • Just because this worked for you by coincidence, doesn't mean it is a solution. AutoEnable does nothing else but enable the adapter on boot. – Bachsau May 25 '21 at 10:04
5

I'm using Gnome3 and after some time my headset no longer connected at A2DP again. I had to stop Gnome creating a pulseaudio daemon by creating the file /var/lib/gdm3/.config/pulse/client.conf (as root) and adding the following lines to it:

autospawn = no
daemon-binary = /bin/true

Then set the owner to gdm:

sudo chown gdm:gdm /var/lib/gdm3/.config/pulse/client.conf

Then log off/on or look for the pulseaudio process running as the gdm user with ps aux | grep pulse

(Trimmed) output looks like:

gdm       2943  10616 ?        S<l  Sep01   0:00 /usr/bin/pulseaudio..

Then kill the process with kill <pid> which for me was 2943

Running bluetoothctl and connecting again, I could then run pacmd list-cards and find my device index: 2 and change to the a2dp_sink with pacmd set-card-profile 2 a2dp_sink.

Finally working again!

Dylan
  • 181
2

In order to auto switch audio into A2DP bluetooth device when connected in Ubuntu 14.04 I followed the instructions from https://sandalov.org/blog/2146/ and it worked perfectly.

Modify /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
.endif

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

[General]
Disable=Headset # Add this

Apply changes:

pulseaudio -k # Restarts pulseaudio
sudo service bluetooth restart # Restarts BT

More info at: https://wiki.archlinux.org/index.php/Bluetooth_headset

Caumons
  • 441
  • 4
  • 12
  • 2
    Not working for 16.04. This answer disables all audio output sources (creates a fault in PulseAudio). – stevenmc Jan 12 '18 at 16:26
  • This worked for me on Ubuntu 19.10 with my Sony Headset WH-1000XM3. (Except that I put the changes for audio.conf in main.conf under [Policy]) – Vegard Mar 20 '20 at 15:30
  • Btw, it did look like it disabled the audio at first, but then it came back after a bit. Restarting could probably help. – Vegard Mar 20 '20 at 15:47
0

The real problem here is, that the default configuration allows only one profile per device. This can be changed by setting MultiProfile to single or multiple in /etc/bluetooth/main.conf. Restart the bluetooth daemon afterwards. You will then be able to change the profile on the fly.

Bachsau
  • 176
0

Tested in Ubuntu 22.04

Edit /etc/bluetooth/main.conf

sudo nano /etc/bluetooth/main.conf

Uncomment or add
MultiProfile = off

Restart bluetooth service

sudo systemctl restart bluetooth

Then you will be able to change output device configuration from Settings > Sound