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
  • 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

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.

Cas
  • 8,557
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
  • 732
1

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

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
  • 114,770
  • 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 Feb 16 '23 at 07:04