This tutorial uses WirePlumber's new JSON configuration format, replacing the legacy Lua format. Ensure you're using WirePlumber ≥ 0.5.
sudo pacman -S wireplumber
mkdir -p ~/.config/wireplumber/wireplumber.conf.d
wpctl status
Look for your device under "Sinks":
├─ Sinks:
│ * 57. USB Audio [vol: 0.50]
wpctl inspect 57 # Replace with your sink ID
Copy 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.conf
Add 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 wireplumber
Test with speaker channels:
speaker-test -c 2 -t wav
You should hear:
- Right channel audio in left speaker
- Left channel audio in right speaker
- Verify
node.name
matches 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