Bluetooth earbud devices changing encoders when playing games at full screen

is it a bug? is it intentional? can i stop it? for some reason it switch to the lowest quality codec (Headset Head Unit 'HSP/HFP, codec mSBC')
No description
Solution:
use
ujust toggle-bt-mic
ujust toggle-bt-mic
instead
Jump to solution
25 Replies
Azema Viator
Azema Viator4d ago
proton for whatever reason always switches bluetooth into headset mode I think I did something to stop it from happening on mine, but I do not remember what I did
purps
purpsOP4d ago
i can't even manually change or the earbuds just freak out and disconnect then connect again and use the low quality codec
Azema Viator
Azema Viator4d ago
yeah a lot of the time I had to just turn off my headphones and turn them back on
purps
purpsOP4d ago
No description
purps
purpsOP4d ago
hm, hopefully this will do the trick ofc assuming wireplumber is a thing on bazzite nop
$ wpctl settings --save bluetooth.autoswitch-to-headset-profile false
does nothing, it still switches
Azema Viator
Azema Viator4d ago
I went down a rabbit hole and I have no idea what I endedup doing to not have every game causing issues. it was very bad for a time with overwatch, it would switch the audio every time it tries to enable team chat, which was every game for me
purps
purpsOP4d ago
god that sounds awful, like i get its a low quality codec but damn on TF2C basically makes the sound non-existent
Azema Viator
Azema Viator4d ago
yeah I get that for me it switching to mono ontop of being very bad
purps
purpsOP4d ago
oh yeah speaking of, what does bazzite use
No description
purps
purpsOP4d ago
seaches gives some fuzzy results i assume it would be pipewire since its new and updated
asen23
asen234d ago
it does use pipewire but wireplumber and pulseaudio does work through pipewire compatibility layer
purps
purpsOP4d ago
oh
Azema Viator
Azema Viator4d ago
I know I did not fully disable auto switch because teamspeak and discord can still trigger it but games do not anymore
purps
purpsOP4d ago
No description
purps
purpsOP4d ago
arch wiki does give out some pointers but these files doesn't exist or atleast im unable to find them so wireplumber setting changes wouldn't affect it?
purps
purpsOP4d ago
hm
No description
purps
purpsOP4d ago
kinda annoying
No description
asen23
asen234d ago
it should afaik
DevilFish303
DevilFish3034d ago
i had your issue, and using arch wiki and a few wireplumber github issues listed below i just disabled microphone on my headset and instead use my webcam's mic if i need to use it if you want to do this for yourself below is the config file:
$ cat /etc/wireplumber/wireplumber.conf.d/51-mitigate-annoying-profile-switch.conf
## In WirePlumber there's a bug where some applications trigger switching to Headset Profile
## --
## See issue #634, #645, #630, #629, #613
## --
## This config mitigates the issue by completely disabling the switching and support for Headset Profile (HFP)
## Using this would only make sense if you never plan on using the microphone that comes with your headset.

wireplumber.settings = {
## Whether to use headset profile in the presence of an input stream.
## --
## Disable for now, as it causes issues. See note at the top as to why.
bluetooth.autoswitch-to-headset-profile = false
}

monitor.bluez.properties = {
## Enabled roles (default: [ a2dp_sink a2dp_source bap_sink bap_source hfp_hf hfp_ag ])
##
## Currently some headsets (Sony WH-1000XM3) are not working with
## both hsp_ag and hfp_ag enabled, so by default we enable only HFP.
##
## Supported roles: hsp_hs (HSP Headset),
## hsp_ag (HSP Audio Gateway),
## hfp_hf (HFP Hands-Free),
## hfp_ag (HFP Audio Gateway)
## a2dp_sink (A2DP Audio Sink)
## a2dp_source (A2DP Audio Source)
## bap_sink (LE Audio Basic Audio Profile Sink)
## bap_source (LE Audio Basic Audio Profile Source)
## --
## Only enable A2DP here and disable HFP. See note at the top as to why.
bluez5.roles = [ a2dp_sink a2dp_source ]
}
$ cat /etc/wireplumber/wireplumber.conf.d/51-mitigate-annoying-profile-switch.conf
## In WirePlumber there's a bug where some applications trigger switching to Headset Profile
## --
## See issue #634, #645, #630, #629, #613
## --
## This config mitigates the issue by completely disabling the switching and support for Headset Profile (HFP)
## Using this would only make sense if you never plan on using the microphone that comes with your headset.

wireplumber.settings = {
## Whether to use headset profile in the presence of an input stream.
## --
## Disable for now, as it causes issues. See note at the top as to why.
bluetooth.autoswitch-to-headset-profile = false
}

monitor.bluez.properties = {
## Enabled roles (default: [ a2dp_sink a2dp_source bap_sink bap_source hfp_hf hfp_ag ])
##
## Currently some headsets (Sony WH-1000XM3) are not working with
## both hsp_ag and hfp_ag enabled, so by default we enable only HFP.
##
## Supported roles: hsp_hs (HSP Headset),
## hsp_ag (HSP Audio Gateway),
## hfp_hf (HFP Hands-Free),
## hfp_ag (HFP Audio Gateway)
## a2dp_sink (A2DP Audio Sink)
## a2dp_source (A2DP Audio Source)
## bap_sink (LE Audio Basic Audio Profile Sink)
## bap_source (LE Audio Basic Audio Profile Source)
## --
## Only enable A2DP here and disable HFP. See note at the top as to why.
bluez5.roles = [ a2dp_sink a2dp_source ]
}
to activate it log out/in again, or run: systemctl --user restart wireplumber.service
No description
purps
purpsOP4d ago
wireplumber.conf.d doesnt exist as a directory so i'd assume i would create one there
disabled microphone on my headset and instead use my webcam's mic if i need to use it
my earbuds dont even have a microphone also i use the internal microphone my laptop has
Solution
皇家海星
皇家海星4d ago
use
ujust toggle-bt-mic
ujust toggle-bt-mic
instead
皇家海星
皇家海星4d ago
Use either (A2DP Sink, codec SBC) or (A2DP Sink, codec AAC) mode, since that is supported on your earbuds
purps
purpsOP4d ago
oh perfect
皇家海星
皇家海星4d ago
(A2DP Sink, codec SBC-XQ) support heavily depends on the manufacturer(both receiver and transmitter), and usually will not work or have heavy artifacts even if an article from 2019 says that it is mandatory SBC, ever since AAC, LDAC, AptX became mainstream, manufacturers started to focus on those instead. If you have a problem on bazzite, take a look at the ujust menu first, by using either
ujust --list
ujust --list
or only
ujust
ujust
pipewire is a lower level layer, and isn't really supposed to be interacted with by the user you can continue to use pulseaudio tools like pactl(which comes with bazzite, along with pwctl), they should work just fine Bazzite is based Bazzite is based on Fedora Kinoite/Silverblue which themselves are rolling release, which means that it is usually quite up to date. Since Fedora is usually quite bold in transitioning to new technologies, you can expect that Bazzite will also have most newer packages, systems, etc.
DevilFish303
DevilFish3034d ago
oh cool, they ended up implementing it after all yeah half the time some of these directories will not exist but yeah, what you’re going through is a known wireplumber bug, there are issues on their github/gitlab pages about this

Did you find this page helpful?