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.

M. P.
  • 281
  • 1
  • 3
  • 4
  • 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. Feb 05 '19 at 17:53

6 Answers6

42

For me just reloading the module by executing:

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

helped solving the issue.

Cas
  • 8,427
  • 5
  • 69
  • 108
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 :)

Winampah
  • 682
  • 6
  • 11
1

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

Yun Caraho
  • 11
  • 1
1

Just restarting the pulseaudio worked for me.

Anish
  • 11
  • 1
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.

ssh
  • 103
  • 3
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
karel
  • 110,292
  • 102
  • 269
  • 299
  • 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](/help/how-to-answer). – Community Feb 16 '23 at 07:04