After a nixos-rebuild switch my Bluetooth headset (Sony XM4) stopped producing audio entirely, despite connecting successfully.
What changed:
- PipeWire: 1.4.10 → 1.6.2
- WirePlumber: 0.5.13 → 0.5.14
- LDAC decoder library pulled in
What I think is happening:
LDAC decoder library (libldac-dec) causes PipeWire to advertise and attempt LDAC codec negotiation with Bluetooth devices. The decoder fails immediately with a fatal error and — rather than falling back to SBC or AAC — audio silently stops working.
How to confirm:
Run this and look for repeated LDAC errors:
journalctl --user -u wireplumber -n 50 | grep -i ldac
If you see LDAC decoder initialization failed: LDACBT_ERR_FATAL repeating, this is your issue.
Fix:
Add this to your configuration.nix to explicitly whitelist working codecs and exclude LDAC:
services.pipewire.wireplumber.extraConfig = {
"bluetooth" = {
"monitor.bluez.properties" = {
"bluez5.codecs" = [ "sbc" "sbc_xq" "aac" "aptx" "aptx_hd" ];
};
};
};
Then run sudo nixos-rebuild switch and reconnect your headset.
If you’d rather not touch your config, rolling back to the previous generation works too: select it from the GRUB menu on boot, then run sudo nixos-rebuild switch --rollback to make it permanent.