Sound Card Output is Swapped/Mixed up

Creative Sound Blaster AE-5 5.1 analogue connection. Centre/Sub output and Rear output are literally swapped. If I swap the plugs, it fixes the issue, but then it's plugged incorrectly and when I boot into Windows, I'll have to swap plugs.... I'd like to figure out how I can swap them to the way they should be.
33 Replies
皇家海星
皇家海星2mo ago
you can probably adjust it in windows in the sound blaster driver
DyNaMiX
DyNaMiXOP2mo ago
Unfortunately there's nothing in the Creative app or Windows settings that allows me to change anything other than reversing stereo channels, but as soon as I boot back into Linux that reverts anyway.
皇家海星
皇家海星2mo ago
I meant to also reverse it in windows trying to mess with audio in linux is a pita you can probably do it via some pipewire configs, but that's also still kinda a pita you can either do it with alsa and wireplumber, or a pipewire virtual loopback device most solutions on the internet should work if they don't touch anything in /usr/
DyNaMiX
DyNaMiXOP2mo ago
Is pipewire something I can install? I tried alsamixer but couldn't find anything in there (although that did let me turn off the creative software effects which was nice since there is no creative app in linux).
皇家海星
皇家海星2mo ago
pipewire is one of the audio systems in fedora(and most modern desktop linux distros) wireplumber is a layer that allows pipewire to run on top of existing linux audio systems alsa is advanced linux audio subsystem I'd advise you to not touch alsa if you don't know what you are doing
iMightBeSpyduck
iMightBeSpyduck2mo ago
Can you install coppwr from bazaar ? and send node name of your sound cards? I will create file for you to create new sink that will swap outputs
No description
DyNaMiX
DyNaMiXOP2mo ago
Just installed. Trying to find the nodename now Okay found it. Its "alsa_output.pci-0000_05_00.0.analog-surround-51"
iMightBeSpyduck
iMightBeSpyduck2mo ago
and can you also scroll up little and there should be audio position
DyNaMiX
DyNaMiXOP2mo ago
FL,FR,RL,RR,FC,LFE
iMightBeSpyduck
iMightBeSpyduck2mo ago
in your file browser enable showing hidden files in KDE it is (CTRL+M) and from home go to .config create folder wireplumber and inside wireplumber create another folder main.lua.d and inside main.lua.d create text file 51-fix-channels.lua in text file paste this:
rule = {
matches = {
{
{ "node.name", "matches", "alsa_output.pci-0000_05_00.0.analog-surround-51" },
},
},
apply_properties = {
-- ["audio.channels"] = 2,
["audio.position"] = "FL,FR,FC,LFE,RL,RR",
},
}

table.insert(alsa_monitor.rules, rule)
rule = {
matches = {
{
{ "node.name", "matches", "alsa_output.pci-0000_05_00.0.analog-surround-51" },
},
},
apply_properties = {
-- ["audio.channels"] = 2,
["audio.position"] = "FL,FR,FC,LFE,RL,RR",
},
}

table.insert(alsa_monitor.rules, rule)
and save
DyNaMiX
DyNaMiXOP2mo ago
Okay, done. Does the text file extension should be .txt or .lua?
iMightBeSpyduck
iMightBeSpyduck2mo ago
and restart wireplumber systemctl --user restart wireplumber.service .lua
DyNaMiX
DyNaMiXOP2mo ago
Hmm doesn't seem to have changed anything unfortunately...
iMightBeSpyduck
iMightBeSpyduck2mo ago
if you check audio position again. Is it swapped? also try restarting PC
DyNaMiX
DyNaMiXOP2mo ago
I'll quickly restart, brb. Okay restarted. So if I go back into sound test, "front left" comes from front left, "Front Center" comes from Rear Left, "Front Right" comes from front right, "Rear Left" comes from Front Center, "Subwoofer" comes from Rear Right (and she actually says Rear Center) and then "rear Right" is coming from the subwoofer.
皇家海星
皇家海星2mo ago
so it should be FL,FR,RL,RR,FC,LFE
iMightBeSpyduck
iMightBeSpyduck2mo ago
that what it was default so it doesn't make sense or rule wasn't applied
DyNaMiX
DyNaMiXOP2mo ago
Yeah it's so bizarre. And it's definitely not Bazzite specific either. I had the same problem when I was testing Manjaro and Ubuntu. I've double checked those steps, made sure it was all copied correctly.
iMightBeSpyduck
iMightBeSpyduck2mo ago
did audio possition change in coppwr?
DyNaMiX
DyNaMiXOP2mo ago
ooo looks like it didn't. It's showing as default. Showing as "FL,FR,RL,RR,FC,LFE" which is the original I think
皇家海星
皇家海星2mo ago
check systemctl --user status wireplumber maybe
iMightBeSpyduck
iMightBeSpyduck2mo ago
Ah wireplumber changed conf files. ok rename the file from 51-fix-channels.lua to 51-fix-channels.conf and remove last line table.insert(alsa_monitor.rules, rule) from it
DyNaMiX
DyNaMiXOP2mo ago
Hmm still the same. For whatever reason it doesn't want to read that file
iMightBeSpyduck
iMightBeSpyduck2mo ago
delete that file
monitor.alsa.rules = [
{
matches = [
{
device.name = "alsa_output.pci-0000_05_00.0.analog-surround-51"
}
]
actions = {
update-props = {
audio.position = "FL,FR,FC,LFE,RL,RR"
}
}
}
]
monitor.alsa.rules = [
{
matches = [
{
device.name = "alsa_output.pci-0000_05_00.0.analog-surround-51"
}
]
actions = {
update-props = {
audio.position = "FL,FR,FC,LFE,RL,RR"
}
}
}
]
and put it ~/.config/wireplumber/wireplumber.conf.d/
DyNaMiX
DyNaMiXOP2mo ago
Uh oh, now we get nothing at all from FC, Rl, LFE and RR channels 😅
iMightBeSpyduck
iMightBeSpyduck2mo ago
what does coppwr says?
DyNaMiX
DyNaMiXOP2mo ago
FL,FR,RL,RR,FC,LFE
iMightBeSpyduck
iMightBeSpyduck2mo ago
try changing audio position line to audio.position = ["FL,FR,FC,LFE,RL,RR"]
DyNaMiX
DyNaMiXOP2mo ago
Audio position is still showing "FL,FR,RL,RR,FC,LFE" but now the sound test is doing the inverted centre/rear again 😩
iMightBeSpyduck
iMightBeSpyduck2mo ago
We can try something else. Give me a minute. you can delete wireplumber config go to ~/.config/pipewire/pipewire.conf.d/ and create 51-fix-channels.conf
context.modules = [
{ name = libpipewire-module-combine-stream
args = {
combine.mode = sink
node.name = "AudioFix"
node.description = "AudioFix"
combine.latency-compensate = false
combine.props = {
audio.position = [ FL FR RL RR FC LFE ]
}
stream.props = {
stream.dont-remix = true
}
stream.rules = [
{ matches = [
{ media.class = "Audio/Sink"
node.name = "alsa_output.pci-0000_05_00.0.analog-surround-51"
} ]
actions = { create-stream = {
combine.audio.position = [ FL FR RL RR FC LFE ]
audio.position = [ FL FR FC LFE RL RR ]
} } }
]
}
}
]
context.modules = [
{ name = libpipewire-module-combine-stream
args = {
combine.mode = sink
node.name = "AudioFix"
node.description = "AudioFix"
combine.latency-compensate = false
combine.props = {
audio.position = [ FL FR RL RR FC LFE ]
}
stream.props = {
stream.dont-remix = true
}
stream.rules = [
{ matches = [
{ media.class = "Audio/Sink"
node.name = "alsa_output.pci-0000_05_00.0.analog-surround-51"
} ]
actions = { create-stream = {
combine.audio.position = [ FL FR RL RR FC LFE ]
audio.position = [ FL FR FC LFE RL RR ]
} } }
]
}
}
]
save and restart. It should create new sink called Audio fix. You will need to set it as default so all your audio is routed through it or if you still have wireplumber conf try changing it again to audio.position = ["FL", "FR", "FC" , "LFE", "RL" ,"RR"]
DyNaMiX
DyNaMiXOP2mo ago
When you say set as default, how do I do that? Oh wait I found it. It works!!!! Thank you both so much. 🙂 Curious what's causing the issue in the first place, as I said it happened in other Linux Distros I tried. But at least this seems to be a fix I can apply regardless.
皇家海星
皇家海星2mo ago
probably misconfigured driver by default, or maybe sound blaster is using some weird way to control their stuff
HarleySqrlnutz
HarleySqrlnutz2mo ago
I'm having exactly the same issue. I've followed the above steps and can see the AudioFix node in coppwr, but I'm stuck at the last step..."set it to default". I was kind of stuck. I don't know if what I did was the 'right' way to do it, but I did a 'wpctl status' , got the ID of the new AudioFix sink, and then 'wpctl set-default ID' (replaced ID with the number of my AudioFix sink. Restarted services, and things appear to be working 🙂

Did you find this page helpful?