Skip to content

Instantly share code, notes, and snippets.

@Sntx626
Last active March 20, 2022 21:02
Show Gist options
  • Save Sntx626/aee0e0496743bba126570906cd65ffeb to your computer and use it in GitHub Desktop.
Save Sntx626/aee0e0496743bba126570906cd65ffeb to your computer and use it in GitHub Desktop.
Pipewire: Sennheiser GSX 1000 & Sennheiser GSX 1200 Pro channel-swapped config

What does it do?

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.

The config

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".

Workaround for persistence of old note

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment