Blueman Protocol not available
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
$ sudo apt-get install pulseaudio-module-bluetooth $ pactl load-module module-bluetooth-discover
$ 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
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.
6 Answers 6
For me just reloading the module by executing:
pactl unload-module module-bluetooth-discover pactl load-module module-bluetooth-discover
Works with 19.04 too. The module must be unloaded first pactl unload-module module-bluetooth-discover .
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.
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 🙂
I had the same problem on Linux Mint 20.1 (based on Ubuntu 20.04) and it solved it. Thanks @Winampah.
Just delete the device on bluetooth manager and pair again. Works for me.
Just restarting the pulseaudio worked for me.
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.
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