My Sennheiser GSX 1200 Pro has incorrect audio channel assignment with PipeWire (the audio sounds lefty, spatial audio is broken).
This addition to your PipeWire config will add a new adapter with swapped channels.
Default (broken) | "FL,FR,RL,RR,FC,LFE,SL,SR" |
New (fixed) | "FL,FR,FC,LFE,RL,RR,SL,SR" |
IMPORTANT NOTICE
Currently this doesn't disable the other node (created by default). This might cause some weird behaviour.
A temporary workaround can be found at the end.
Place the code into your PipeWire config at context.objects = []
.
{ factory = adapter
args = {
factory.name = api.alsa.pcm.sink
node.nick = "Channel Swapped GSX 1200 Pro Main Audio"
node.name = "alsa_output.usb-Sennheiser_GSX_1200_Pro_Main_Audio_5698810516001679-00.analog-output-surround71"
node.description = "Channel Swapped GSX 1200 Pro Main Audio analog-output-surround71"
media.class = "Audio/Sink"
api.alsa.path = "hw:0,1"
api.alsa.period-size = 1024
api.alsa.headroom = 0
api.alsa.disable-mmap = false
api.alsa.disable-batch = false
audio.format = "S16LE"
audio.rate = 48000
audio.channels = 8
audio.position = "FL,FR,FC,LFE,RL,RR,SL,SR"
}
}
Reload your config and you should see a new adapter/node called "Channel Swapped GSX 1200 Pro Main Audio".
To remove the old adapter use the pw-cli.
List all nodes and identify the old-non-channel-swapped node with the name "GSX 1200 Pro Main Audio" and 7.1 sound.
pw-cli ls Nodes
Kill the old-non-channel-swapped node:
pw-cli destroy 43
// 43 is the id of my node, yours may vary.