This tutorial uses WirePlumber's new JSON configuration format, replacing the legacy Lua format. Ensure you're using WirePlumber ≥ 0.5.
sudo pacman -S wireplumbermkdir -p ~/.config/wireplumber/wireplumber.conf.dwpctl statusLook for your device under "Sinks":
├─ Sinks:
│ * 57. USB Audio [vol: 0.50]
wpctl inspect 57 # Replace with your sink IDCopy the node.name value from output:
node.name = "alsa_output.pci-0000_00_1f.3.analog-stereo"Create new config file:
nano ~/.config/wireplumber/wireplumber.conf.d/99-swap-channels.confAdd this content (replace with your node.name):
monitor.alsa.rules = [
{
matches = [
{
node.name = "alsa_output.pci-0000_00_1f.3.analog-stereo"
}
]
actions = {
update-props = {
audio.position = ["FR", "FL"]
}
}
}
]systemctl --user restart wireplumberTest with speaker channels:
speaker-test -c 2 -t wavYou should hear:
- Right channel audio in left speaker
- Left channel audio in right speaker
- Verify
node.namematches exactly fromwpctl inspect - Check config file location:
~/.config/wireplumber/wireplumber.conf.d/ - View logs:
journalctl --user -u wireplumber -f
- Remove config file:
rm ~/.config/wireplumber/wireplumber.conf.d/99-swap-channels.conf - Restart WirePlumber:
systemctl --user restart wireplumber
Note: Configuration persists across reboots