28

Today my bluetooth headset stopped working. I haven't modified anything recently (although a few days ago I was trying to get a bluetooth headset to automatically connect in a2dp mode, which involved installing blueman and re-pairing with it, but I've connected and rebooted several times since making that change and everything was working).

Now when I try to connect the headset I get:

Connection Failed: blueman.bluez.errors.DBusFailedError: Protocol Not available

Based on a few things from here (Bluetooth - Connection Failed: blueman.bluez.errors.DBusFailedError: Protocol Not available) and other Internet searches, I've tried:

$ sudo apt-get install pulseaudio-module-bluetooth
$ pactl load-module module-bluetooth-discover

And I've tried reinstalling things:

$ sudo apt-get --purge --reinstall install bluetooth bluez blueman pulseaudio pulseaudio-module-bluetooth
$ sudo /etc/init.d/networking restart
    [ ok ] Restarting networking (via systemctl): networking.service.
$ sudo /etc/init.d/bluetooth restart
    [ ok ] Restarting bluetooth (via systemctl): bluetooth.service.

And of course rebooting, but nothing seems to help, and I can't figure out what protocol it's talking about, since I can see the headset and pair with it, but not make an audio connection.

I'm running Ubuntu 18.04.1. Some other details:

$ dpkg -l | grep blue
    blueman                            2.0.5-1ubuntu1    
    bluetooth                          5.48-0ubuntu3.1
    bluez                              5.48-0ubuntu3.1
    bluez-cups                         5.48-0ubuntu3.1
    bluez-obexd                        5.48-0ubuntu3.1
    gir1.2-gnomebluetooth-1.0:amd64    3.28.0-2ubuntu0.1
    gnome-bluetooth                    3.28.0-2ubuntu0.1
    indicator-bluetooth                0.0.6+17.10.20170605-0ubuntu3                
    libbluetooth3:amd64                5.48-0ubuntu3.1                              
    libgnome-bluetooth13:amd64         3.28.0-2ubuntu0.1
    pulseaudio-module-bluetooth        1:11.1-1ubuntu7.1

$ sudo service bluetooth status
* bluetooth.service - Bluetooth service    Loaded: loaded (/lib/systemd/system/bluetooth.service; enabled; vendor preset    Active: active (running) since Mon 2019-02-04 14:36:47 PST; 1min 13s ago
     Docs: man:bluetoothd(8)  Main PID: 6912 (bluetoothd)    Status: "Running"
    Tasks: 1 (limit: 4915)    CGroup: /system.slice/bluetooth.service
           └─6912 /usr/lib/bluetooth/bluetoothd

Feb 04 14:36:47 AVB systemd[1]: Starting Bluetooth service... Feb 04 14:36:47 AVB bluetoothd[6912]: Bluetooth daemon 5.48 Feb 04 14:36:47 AVB systemd[1]: Started Bluetooth service. Feb 04 14:36:47 AVB bluetoothd[6912]: Starting SDP server Feb 04 14:36:47 AVB bluetoothd[6912]: Bluetooth management interface 1.14 initialized

$ dmesg | grep Bluetooth
    [    5.197632] Bluetooth: Core ver 2.22
    [    5.197654] Bluetooth: HCI device and connection manager initialized
    [    5.197657] Bluetooth: HCI socket layer initialized
    [    5.197660] Bluetooth: L2CAP socket layer initialized
    [    5.197664] Bluetooth: SCO socket layer initialized
    [    5.349217] Bluetooth: hci0: Firmware revision 0.1 build 185 week 49 2017
    [    5.492623] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
    [    5.492625] Bluetooth: BNEP filters: protocol multicast
    [    5.492628] Bluetooth: BNEP socket layer initialized
    [   16.972106] Bluetooth: RFCOMM TTY layer initialized
    [   16.972113] Bluetooth: RFCOMM socket layer initialized
    [   16.972117] Bluetooth: RFCOMM ver 1.11
    [   84.672241] Bluetooth: hci0: last event is not cmd complete (0x0f)

$ hciconfig
    hci0:    Type: Primary  Bus: USB
    BD Address: 74:70:FD:B6:73:0C  ACL MTU: 1021:4  SCO MTU: 96:6
    UP RUNNING PSCAN ISCAN INQUIRY
    RX bytes:18753 acl:61 sco:0 events:738 errors:0
    TX bytes:14257 acl:60 sco:0 commands:267 errors:0

$ lspci -knn | grep Net -A3
    02:00.0 Network controller [0280]: Intel Corporation Wireless 8265 / 8275 [8086:24fd] (rev 78)
    Subsystem: Intel Corporation Dual Band Wireless-AC 8265 [8086:0010]
    Kernel driver in use: iwlwifi
    Kernel modules: iwlwifi

$ lsusb
    Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
    Bus 001 Device 003: ID 8087:0a2b Intel Corp.
    Bus 001 Device 002: ID 13d3:5a07 IMC Networks
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

$ ps aux | grep blue
    me        2032  0.0  0.6 694048 54240 tty2     Sl+  14:19   0:01 /usr/bin/python3 /usr/bin/blueman-applet
    me        2091  0.0  0.0  82728  6832 ?        Ss   14:19   0:00 /usr/lib/bluetooth/obexd
    root      6912  0.0  0.0  37992  6096 ?        Ss   14:36   0:02 /usr/lib/bluetooth/bluetoothd

Any suggestions on where to look next? Thanks.

1
  • 4
    I might have solved this myself. "sudo apt install pulseaudio-module-bluetooth" and then restarting pulse audio ("pulseaudio -k" "pulseaudio --start") and the error goes away. I still have no idea why this is necessary or what the error originally meant.
    – M. P.
    Commented Feb 5, 2019 at 17:53

6 Answers 6

43

For me just reloading the module by executing:

pactl unload-module module-bluetooth-discover
pactl load-module module-bluetooth-discover

helped solving the issue.

3
  • 4
    Works with 19.04 too. The module must be unloaded first pactl unload-module module-bluetooth-discover. Commented Oct 4, 2019 at 14:59
  • This is the only thing that worked for me with my Bose 700 headphones using blueman on cinnamon. Didn't even have to restart bluetooth service and didn't have to run the commands above as root. Commented Jul 28, 2020 at 2:56
  • Worked for me on Mint 20 (Ubuntu 20.04) too. Commented Jul 20, 2021 at 0:48
23

What did work for me was this: (as pointed above by Luca Mattia Ferrari)

$ sudo apt-get purge pulseaudio  
$ rm ~/.config/pulse && sudo killall pulseaudio  
$ sudo apt-get install pulseaudio  
$ pulseaudio --start

The above to ensure pulse is working first.
Then, this one, which is a bit weird that doesn't come by default with pulseaudio itself:

$ sudo apt-get install pulseaudio-module-bluetooth  
$ pactl load-module module-bluetooth-discover  

A bit redundant I know, but these were the exact steps worked for me 10 minutes ago.
But OK, at least it works now :)

6
  • 1
    This is the best way in 20.04. And I think this is the best way to reset audio system as well.
    – Bonn
    Commented Dec 19, 2020 at 8:32
  • These steps worked for me in 20.04 just now. Thanks @Winampah Commented Feb 18, 2021 at 18:52
  • I had the same problem on Linux Mint 20.1 (based on Ubuntu 20.04) and it solved it. Thanks @Winampah.
    – VIX
    Commented Mar 17, 2021 at 18:26
  • works perfectly !!! Commented May 8, 2022 at 12:44
  • works for me in 22.04. bluetooth in Linux is such a mess.
    – hunzter
    Commented Jul 11, 2022 at 9:34
1

Just delete the device on bluetooth manager and pair again. Works for me.

1

Just restarting the pulseaudio worked for me.

0

None of the above solutions worked for me on Ubuntu Server 20.04. This is what finally did it:

# remove pulseaudio bluetooth module
sudo apt-get purge pulseaudio-module-bluetooth

# install bluetooth plugins for PipeWire multimedia server
sudo apt-get install libspa-0.2-bluetooth

# stop or restart the service
systemctl --user stop pipewire-pulse.service pipewire.service 

After this, reconnecting the device works.

0

If you have change some setting is /etc/pulse/default.pa so I suggest you to replace it with default which is https://pastebin.com/EJ2qvZvA

#!/usr/bin/pulseaudio -nF
#
# This file is part of PulseAudio.
#
# PulseAudio is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# PulseAudio is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with PulseAudio; if not, write to the Free Software Foundation,
# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
 
# This startup script is used only if PulseAudio is started per-user
# (i.e. not in system mode)
 
.nofail
 
### Load something into the sample cache
#load-sample-lazy x11-bell /usr/share/sounds/gtk-events/activate.wav
#load-sample-lazy pulse-hotplug /usr/share/sounds/startup3.wav
#load-sample-lazy pulse-coldplug /usr/share/sounds/startup3.wav
#load-sample-lazy pulse-access /usr/share/sounds/generic.wav
 
.fail
 
### Automatically restore the volume of streams and devices
load-module module-device-restore
load-module module-stream-restore
load-module module-card-restore
 
### Automatically augment property information from .desktop files
### stored in /usr/share/application
load-module module-augment-properties
 
### Load audio drivers statically
### (it's probably better to not load these drivers manually, but instead
### use module-udev-detect -- see below -- for doing this automatically)
#load-module module-alsa-sink
#load-module module-alsa-source device=hw:1,0
#load-module module-oss device="/dev/dsp" sink_name=output source_name=input
#load-module module-oss-mmap device="/dev/dsp" sink_name=output source_name=input
#load-module module-null-sink
#load-module module-pipe-sink
 
### Automatically load driver modules depending on the hardware available
.ifexists module-udev-detect.so
load-module module-udev-detect
.else
### Use the static hardware detection module (for systems that lack udev/hal support)
load-module module-detect
.endif
 
### Automatically connect sink and source if JACK server is present
.ifexists module-jackdbus-detect.so
.nofail
load-module module-jackdbus-detect
.fail
.endif
 
### Automatically load driver modules for Bluetooth hardware
.ifexists module-bluetooth-discover.so
load-module module-bluetooth-discover
.endif
 
### Load several protocols
.ifexists module-esound-protocol-unix.so
load-module module-esound-protocol-unix
.endif
load-module module-native-protocol-unix
 
### Network access (may be configured with paprefs, so leave this commented
### here if you plan to use paprefs)
#load-module module-esound-protocol-tcp
#load-module module-native-protocol-tcp
#load-module module-zeroconf-publish
 
### Load the RTP receiver module (also configured via paprefs, see above)
#load-module module-rtp-recv
 
### Load the RTP sender module (also configured via paprefs, see above)
#load-module module-null-sink sink_name=rtp format=s16be channels=2 rate=44100 sink_properties="device.description='RTP Multicast Sink'"
#load-module module-rtp-send source=rtp.monitor
 
### Load additional modules from GConf settings. This can be configured with the paprefs tool.
### Please keep in mind that the modules configured by paprefs might conflict with manually
### loaded modules.
.ifexists module-gconf.so
.nofail
load-module module-gconf
.fail
.endif
 
### Automatically restore the default sink/source when changed by the user
### during runtime
### NOTE: This should be loaded as early as possible so that subsequent modules
### that look up the default sink/source get the right value
load-module module-default-device-restore
 
### Automatically move streams to the default sink if the sink they are
### connected to dies, similar for sources
load-module module-rescue-streams
 
### Make sure we always have a sink around, even if it is a null sink.
load-module module-always-sink
 
### Honour intended role device property
load-module module-intended-roles
 
### Automatically suspend sinks/sources that become idle for too long
load-module module-suspend-on-idle
 
### If autoexit on idle is enabled we want to make sure we only quit
### when no local session needs us anymore.
.ifexists module-console-kit.so
load-module module-console-kit
.endif
.ifexists module-systemd-login.so
load-module module-systemd-login
.endif
 
### Enable positioned event sounds
load-module module-position-event-sounds
 
### Cork music/video streams when a phone stream is active
#load-module module-role-cork
 
### Modules to allow autoloading of filters (such as echo cancellation)
### on demand. module-filter-heuristics tries to determine what filters
### make sense, and module-filter-apply does the heavy-lifting of
### loading modules and rerouting streams.
load-module module-filter-heuristics
load-module module-filter-apply
 
### Load DBus protocol
#.ifexists module-dbus-protocol.so
#load-module module-dbus-protocol
#.endif
 
# X11 modules should not be started from default.pa so that one daemon
# can be shared by multiple sessions.
 
### Load X11 bell module
#load-module module-x11-bell sample=bell-windowing-system
 
### Register ourselves in the X11 session manager
#load-module module-x11-xsmp
 
### Publish connection data in the X11 root window
#.ifexists module-x11-publish.so
#.nofail
#load-module module-x11-publish
#.fail
#.endif
 
load-module module-switch-on-port-available
 
### Make some devices default
#set-default-sink output
#set-default-source input
1
  • 1
    As it’s currently written, your answer is unclear. Please edit to add additional details that will help others understand how this addresses the question asked. You can find more information on how to write good answers in the help center.
    – Community Bot
    Commented Feb 16, 2023 at 7:04

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .