In the image above we can see ‘handsfree’ as an option.
Ideally, I want to completely delete this at the lowest possible level - as if support for this profile were completely removed from my computer.
With the audio devices I use, this ‘handsfree’ mode is nothing more than a ‘low quality audio’ mode which enables itself constantly. I do not want it. My computer should operate as if this profile has never existed.
seems like that disables the device entirely rather than just the one profile. I did go through the given wpctl commands with both headset and handsfree profiles selected but the unique node.name is the same in both cases.
I’ll keep digging, maybe the solution is in there somewhere.
you got it, there might not even be irrational bounds all things considered.
damn thing has followed me across three distros, two laptops, four headsets/earbuds, and five years. never have found a way out.
I gave that snippet a shot; add to config, rebuild, restart my laptop, but it didn’t work. I figured maybe removing everything but a2dp sink & source might work as the profile I do want defaults to a2dp, but no luck.
‘handsfree’ remains and refuses to budge.
My full config for services.pipewire below. maybe I’ve screwed up something obvious, I’m far, far from an expert at this lol
services.pipewire = {
enable = true;
# audio.enable = true;
alsa.enable = true;
# alsa.support32Bit = true;
pulse.enable = true;
jack.enable = true;
wireplumber = {
extraConfig = {
willsters-rage-at-handsfree-knows-no-rational-bounds = {
"monitor.bluez.properties" = {
"override.bluez5.roles" = ["a2dp_sink" "a2dp_source"];
};
};
# some of this is from another thread I found, didn't work.
# I'm sure I'll clean this up eventually
"override.monitor.bluez.properties" = {
"bluez5.enable-msbc" = false;
"bluez5.enable-soc" = false;
"bluez5.hfphsp-backend" = "none";
"bluez5.roles" = [
"a2dp_sink"
"a2dp_source"
];
};
};
};
};
Hardware modifications are unfortunately outside the scope of most Nix configurations. However, you could also write to Logitech and ask them to compile their firmware with Nix. Failing that, fetchurl on the headset firmware binary and a stdenv.mkDerivation call might be able to solve the problem for you too after some analysis with Ghidra.