Bluetooth headphones switch from high-quality mode to hands-free mode

I have some Bluetooth headphones that I’ve tried using with my system, and I have a USB Bluetooth adapter that I know works well; I’ve used it with Bluetooth controllers and even on other computers. But when I connect the headphones, they connect using the LDAC codec, work for a while, and then mute and switch to hands-free mode. I tried using other codecs in case the problem was with stability, but the same thing still happens. I’ve tried many things, but I’m stuck in a loop and don’t know what to do.

Welcome to the Manjaro community @Rodda

As a new or infrequent forum user, please take some time to familiarise yourself with Forum requirements, and the many ways to use the forum to your benefit:


Update Announcements

The Update Announcements contain important information and a Known Issues and Solutions section that should generally be checked before posting a request for support.

System Information

Output of the inxi command (with appropriate parameters, and formatted according to forum guidelines) will generate information useful for those wishing to help:

inxi --filter --verbosity=8

or the short form (preferred):

inxi -zv8
Required reading
Resources

Regards.

Probably the autoswitching of profiles. If you use wireplumber, you can try putting in ~/.config/wireplumber/wireplumber.conf.d/11-bluetooth-policy.conf

wireplumber.settings = {
    bluetooth.autoswitch-to-headset-profile = false
}

If not there was another conf but you will have to search yourself. I think i took it from the arch wiki some times ago.

1 Like

Please state make and model of Bluetooth headset and post more information about Wireplumber settings:

wpctl settings

To disable automatic switching of profiles:

PipeWire - ArchWiki

Automatic profile selection

WirePlumber has profile auto-switching enabled by default. It can automatically switch between HSP/HFP and A2DP profiles whenever an input stream is detected. You can disable it with the following command:

wpctl settings --save bluetooth.autoswitch-to-headset-profile false

To disable Headset profile completely:

Bluetooth headset - ArchWiki

Disable PipeWire HSP/HFP profile

rather than to enable automatically switching to the (lower audio quality) HSP/HFP profile if A2DP fails, you may prefer to disable the former altogether. To do so, create or edit a bluez configuration as shown below.

Note: HSP mode is required for built-in microphones to work

/etc/wireplumber/wireplumber.conf.d/51-mitigate-annoying-profile-switch.conf
or ~/.config/wireplumber/wireplumber.conf.d/51-mitigate-annoying-profile-switch.conf

## completely disable switching and support for Headset Profile (HFP)

wireplumber.settings = {
  bluetooth.autoswitch-to-headset-profile = false
}

monitor.bluez.properties = {
  bluez5.roles = [ a2dp_sink a2dp_source ]
}
2 Likes