$ cd pranavchip.com && cd /docs

Documentation for Disabling Headset Audio Profiles
==================================================
Author: Pranav Chiploonkar 
Date  : 2026-06-19

OS    : CachyOS x86_64
Kernel: Linux 7.0.12.1-cachyos
DE    : GNOME 50.2
WM    : Mutter (Wayland)

(1) Create the user-level wireplumber config directory

    $ mkdir -p ~/.config/wireplumber/wireplumber.conf.d/

Note that the wireplumber directory doesn't exist by default unless
used before.

(2) Create the config file

    $ cd ~/.config/wireplumber/wireplumber.conf.d
    $ touch 51-disable-handsfree.conf

Note that "51" is used to signal load order. The system's default is 50.

This means values lower than 50 load first, and are overrided by
the system.
Using 51 allows our override to take priority.

(3) Enter the config

    $ micro ./51-disable-handsfree.conf

------------------------------------------------------------------------

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

monitor.bluez.properties = {
    bluez5.roles = [ a2dp_sink a2dp_source bap_sink bap_source ]
}

------------------------------------------------------------------------

This config does two things:

(i)  It prevents wireplumber from switching to headset mode
(ii) It only allows high-quality audio profiles to load, such as
A2DP sink. This ensures only codecs like SBC/SBC-XQ/AAC are allowed
to be used, while crappy telephony profiles like hfp_hf and similar
are ignored.

(4) Restart audio stack

    $ systemctl --user restart wireplumber pipewire

(5) Reconnect devices

This will disconnect all bluetooth audio devices, requiring a
reconnection. Upon reconnection, you will notice the complete lack of
the "Headset" profile, and only "Headphones" will be displayed. Some
devices offer A2DP with the Headset profile, so it's not guaranteed.

The sound quality should, in theory, default to the highest available
quality, which is often AAC. SBC-XQ, if available, isn't switched to
by default and requires a manual toggle.

Do note that GNOME's default audio control panel is simplified,
which could cause the specific codec switch (SBC/SBC-XQ/AAC) to be
hidden. To get full access, a different control panel is needed,
such as PulseAudio Volume Control (pavucontrol).

This has not been tested, and is only provided here as a recommendation
to look into.