How to fix HSP/HFP bluetooth profiles on linux

bluetoothmicrophonepulse-audio

I have a bluetooth headset that has worked perfectly on an older Ubuntu system and still works perfectly on my Android phone. On a newer system, though, A2DP profiles work perfectly, but HSP/HFP profiles don't work at all.

  • Nixos-16.09
  • Pulseaudio 9.0-rebootstrapped
  • bluez 5.40

When set to HSP/HFP, I will see one of two behaviors:

1) The headset vibrates, attempting to switch profiles. After a few seconds, the headset completely disappears from pavucontrol
2) The headset remains visible in pavucontrol, and appears to have switched, however the microphone does not appear to detect any actual sound input, and sound output is only an intermittent crackling.

In dmesg, I see a steady stream of messages like so:


[ 1679.524964] Bluetooth: hci0 SCO packet for unknown connection handle 65509
[ 1679.524969] Bluetooth: hci0 SCO packet for unknown connection handle 0
[ 1679.524970] Bluetooth: hci0 SCO packet for unknown connection handle 0

Numbering apparently a hundred or so per second.

Update:

Behavior is consistent between NixOS-16.09 and Ubuntu-16.04 live CD. However, the problem goes away if I use an external bluetooth dongle. So maybe an incompatibility with my laptop's chipset?

Best Answer

My Solution:

I just found my solution in Fedora 26, using Plantronics Legend and Pluggable Bluetooth USB, after a lot of searching.

I am going back through my history, and updating threads with my solution where I can. This worked for me, direct from Plugable (which is the USB module I am using).

See this post: plugable-usb-bluetooth-adapter-solving-hfphsp-profile-issues-on-linux

Command Summary per Above Link:

wget https://s3.amazonaws.com/plugable/bin/fw-0a5c_21e8.hcd

sudo mkdir /lib/firmware/brcm

sudo mv fw-0a5c_21e8.hcd /lib/firmware/brcm/BCM20702A0-0a5c-21e8.hcd

sudo cp /lib/firmware/brcm/BCM20702A0-0a5c-21e8.hcd /lib/firmware/brcm/BCM20702A1-0a5c-21e8.hcd

Then reboot.

Related Question