I have the following Problem: I have a headset which I want to connect via bluetooth - No problem (A2DP is just fine). But if I try to switch to the HSP/HFP profile I can't do this. It results in the 'Can not switch to HSP/HFP' error.

I have searched and tried many solutions but I can not make it work (I connected the Headphones via terminal, blueman, pavucontrol and so on. I even installed different linux distros hoping to use my Headset there). My Beyerdynamic Headset works fine on Windows - with the same bluetooth dongle, no need to say. Skype and discord calls are no problem there.

Here are the technical details:

0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode) on Ubuntu 18.04 with 4.15.0-91-generic Kernel (also other OS like: Elementary 19.1)

Can anybody help me with that? I really like it to work on ubuntu but if I can not use my headset microphone I have to switch OS. :( Are there any experiences with this cambridge adapter? It seems to be the reason for troubles. Is there any newer/better firmware or drivers for this? It also seems to be no ubuntu error because connecting the headset on my ubuntu laptop and using HSP/HFP there works just fine. Any help, assumptions, tips and hints appreciated! Thank you!


Due to the answer of pbhj: I tried switching via the Graphical User Interface 1. In the Os settings 2. In Pavucontrol and also in commandline. The error messages where displayed there.

EDIT #2:

In the meantime I have found this thread. It looks like there is simply no solution for this problem. The bluetooth adapter is really fine if you just need audio output A2DP, because it is low cost. But no recommodation for headphone usage on Linux (On windows it works absolutely fine). :/

Bluetooth profile locked to A2DP (high-quality audio sink) but cannot change to HFP/HSP (low-quality bidirectional headset)

  • Or are there any recommodations of usb bluetooth dongles which just work out of the box with HSP/HFP connecting headsets?
    – lfnnx
    Apr 11, 2020 at 12:37
  • I'm not familiar with your circumstances, but it would probably help if you say how you "switch" the profile and also where the "can not switch" error message is displayed. This, stackoverflow.com/q/45485365/383694, might give you a usable answer. If it does then you can post what you did here as an answer to your own question.
    – pbhj
    Apr 11, 2020 at 22:14
  • 1
    @pbhj I edited the question. Thank you for your fast response! I have already seen that question on stackoverflow and tried everything discribed there a few weeks ago... : /
    – lfnnx
    Apr 12, 2020 at 17:27
  • I think I might have the same problem as you. I have the same USB dongle adapter: 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode). I have a Sony WH-1000XM3 which I can connect via bluetooth but only via the A2DP profile. I can't change profiles either. I run Arch linux with: 5.6.5-arch3-1 Apr 24, 2020 at 8:00
  • Same problem . Using bluetooth earbuds MPOW M9. Earbuds works great with android and iOS.
    – sillo01
    Mar 6, 2021 at 0:08

2 Answers 2


I was facing the same issue with Oneplus Wireless Z Bass edition. My headset microphone was not detected by PulseAudio and the problem is that my headphones don't have HSP profile, only HFP profile. After trying for 2 days, I came to the solution of replacing PulseAudio with Pipewire sound server, which supports HSP, HFP and A2DP by itself. So there will be no need to install any other utility like ofono, phonesim. Also, to be noted that my problem wasn't resolved even after following all the steps to configure ofono in PulseAudio. So I came up with the steps to replace PulseAudio with PipeWire.

Here is the detailed article I have written to resolve this problem, the steps of which I'm also adding here. You can follow it and most probably be able to solve your problem.

Bluetooth headset microphone not detected

Open your terminal and follow these steps:

  1. We will use a PPA for adding Pipewire to Ubuntu 20.04, which is maintained regularly:

    sudo add-apt-repository ppa:pipewire-debian/pipewire-upstream
  2. To update the PPA packages in your system do:

    sudo apt update
  3. Install the package:

    sudo apt install pipewire
  4. There is also a dependency needed to be installed with Pipewire, otherwise you will face the issue of “Bluetooth headset won’t connect after installing pipewire”. Install the dependency by:

    sudo apt install libspa-0.2-bluetooth
  5. Now, to install the client libraries:

    sudo apt install pipewire-audio-client-libraries
  6. Reload the daemon:

    systemctl --user daemon-reload
  7. Disable PulseAudio:

    systemctl --user --now disable pulseaudio.service pulseaudio.socket
  8. If you are on Ubuntu 20.04, you also need to “mask” the PulseAudio by:

    systemctl --user mask pulseaudio

I am not sure but, if possible, you can try to run this on other versions too.
9. After a new update of Pipewire, you also need to enable pipewire-media-session-service:

   systemctl --user --now enable pipewire-media-session.service
  1. You can ensure that Pipewire is now running through:

    pactl info

    This command will give the following output, in Server Name you can see:

    PulseAudio (on PipeWire 0.3.28)

    Things should be working by now and you can see your microphone.

If it doesn’t show up, then try restarting Pipewire by this command:

systemctl --user restart pipewire

If it’s still not showing your microphone, you can try rebooting once and remove and pair your Bluetooth device again to check if it works now.

I hope I have helped you solve your problem.

If you want to rollback all the changes we did, you can do it by using:

systemctl --user unmask pulseaudio
systemctl --user --now enable pulseaudio.service pulseaudio.socket

I followed the above from 1infern0 on Ubuntu 22.04, but had to take additional steps. Following this post: Diagnosing a Bluetooth headset HSP/HFP issue with PipeWire - Ubuntu 20.04

..that referenced this article: https://pipewire-debian.github.io/pipewire-debian/

sudo add-apt-repository ppa:pipewire-debian/pipewire-upstream

# For WirePlumber

sudo add-apt-repository ppa:pipewire-debian/wireplumber-upstream

sudo apt-get update

# Install pipewire and additional packages

sudo apt install gstreamer1.0-pipewire libpipewire-0.3-{0,dev,modules} libspa-0.2-{bluetooth,dev,jack,modules} pipewire{,-{audio-client-libraries,pulse,bin,jack,alsa,v4l2,libcamera,locales,tests}}

# didn't work with pipewire-media-session

sudo apt-get remove pipewire-media-session

sudo apt-get install wireplumber{,-doc} gir1.2-wp-0.4 libwireplumber-0.4-{0,dev}

# Then, to install issue below command.

sudo apt-get install blueman-git

You must log in to answer this question.

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