How to swap audio channels? (FL, FR) - Fedora Linux 41

Hi all.

I’am having trouble to swap audio channels in Fedora 41.
Following instruction leading to an error message due to changes on how config files are handled in wireplumber > v0.4.

wireplumber version:

Compiled with libwireplumber 0.5.8
Linked with libwireplumber 0.5.8

followed instructions:

error message

wireplumber: Old configuration file detected: /home/salzi/.config/wireplumber/main.lua.d/99-swap-channels.lua
Feb 23 00:55:26 salzi-pc wireplumber[12523]: wireplumber: Lua configuration files are NOT supported in WirePlumber 0.5. You need to port them to the new format if you want to use them.
                                             -> See https://pipewire.pages.freedesktop.org/wireplumber/daemon/configuration/migration.html

As for informations on following site, i changed config and path to

https://pipewire.pages.freedesktop.org/wireplumber/daemon/configuration/migration.html

path
→ .config/wireplumber/wireplumber.conf.d/51-swap-channels.conf

config

monitor.alsa.rules = [
  {
    matches = [
      {
        node.name = "alsa_output.usb-Generic_USB_Audio-00.HiFi__Speaker__sink"
      }
    ]
    actions = {
      update-props = {
        audio.position = "FR,FL"
      }
    }
  }
]

here my wpctl inspect output:

id 45, type PipeWire:Interface:Node
    alsa.card = "0"
    alsa.card_name = "USB Audio"
    alsa.class = "generic"
    alsa.components = "USB0b05:1a52"
    alsa.device = "0"
    alsa.driver_name = "snd_usb_audio"
    alsa.id = "USB Audio"
    alsa.long_card_name = "Generic USB Audio at usb-0000:0b:00.0-6, high speed"
    alsa.mixer_device = "_ucm0005.hw:Audio"
    alsa.mixer_name = "USB Mixer"
    alsa.name = "USB Audio"
    alsa.resolution_bits = "16"
    alsa.subclass = "generic-mix"
    alsa.subdevice = "0"
    alsa.subdevice_name = "subdevice #0"
    alsa.sync.id = "00000000:00000000:00000000:00000000"
    api.alsa.card.longname = "Generic USB Audio at usb-0000:0b:00.0-6, high speed"
    api.alsa.card.name = "USB Audio"
    api.alsa.headroom = "256"
    api.alsa.open.ucm = "true"
    api.alsa.path = "hw:Audio"
    api.alsa.pcm.card = "0"
    api.alsa.pcm.stream = "playback"
    api.alsa.period-num = "128"
    api.alsa.period-size = "256"
    audio.channels = "2"
    audio.position = "FL,FR"
    card.profile.device = "12"
  * client.id = "49"
    clock.quantum-limit = "8192"
    device.api = "alsa"
    device.class = "sound"
  * device.id = "35"
    device.profile.description = "Speakers"
    device.profile.name = "HiFi: Speaker: sink"
    device.routes = "1"
  * factory.id = "19"
    factory.name = "api.alsa.pcm.sink"
    library.name = "audioconvert/libspa-audioconvert"
  * media.class = "Audio/Sink"
  * node.description = "USB Audio Speakers"
    node.driver = "true"
    node.loop.name = "data-loop.0"
    node.max-latency = "16384/48000"
  * node.name = "alsa_output.usb-Generic_USB_Audio-00.HiFi__Speaker__sink"
  * node.nick = "USB Audio"
    node.pause-on-idle = "false"
  * object.path = "alsa:acp:Audio:12:playback"
  * object.serial = "79"
    port.group = "playback"
  * priority.driver = "1000"
  * priority.session = "1000"

I also tried different combinations of contend in that config file.

  • device.name, node.name, alsa.card_name…
    Changing the node.description for exampe works for me with this method.

I restarted the services with following command after every change

systemctl --user restart wireplumber pipewire pipewire-pulse

i cant get it working

Current workaround for me:

pactl load-module module-remap-sink sink_name=Hippeldibippeldi master=1 channels=2 master_channel_map=front-left,front-right channel_map=front-right,front-left set-default-sink Hippeldibippeldi

Meybe i put this in a start script and be done with it.
But it bugs me not being able to solve this via config file.