Inverted 5.1 channels on Soundblaster Z

I’ve just installed Garuda Linux today (I’m completely new to Linux) and I’ve got an issue with my sound.
I know that there are no official driver support from creative but my card should run.

Sound settings show CA0132 Sound Core3D Soundblaster Z - Series as my device and I do hear sound. The profile is set to Analog 5.1 Surround Output, Analog Stereo input. (The only one working)

But when I click on Test to check my speakers, some channels are mixed.
It looks like this:

Front Left playes Front Left
Front Right playes Front Right

…so far so good…but:

Rear Left playes Front Center
Rear Right playes Subwoofer
Subwoofer playes Rear Right
Front Center playes Rear Left

Sound in vlc player for example only playes when the sound device is set to Alsa in the vlc sound settings. But it has the same sound channel problem.

How can I fix that?

System:
  Kernel: 6.10.5-zen1-1-zen arch: x86_64 bits: 64 compiler: gcc v: 14.2.1 clocksource: tsc
    avail: hpet,acpi_pm parameters: BOOT_IMAGE=/@/boot/vmlinuz-linux-zen
    root=UUID=2951f1e2-3f73-4d32-9bf4-fb2ec0bd9adb rw rootflags=subvol=@ quiet loglevel=3 ibt=off
  Desktop: KDE Plasma v: 6.1.4 tk: Qt v: N/A info: frameworks v: 6.5.0 wm: kwin_wayland vt: 1
    dm: SDDM Distro: Garuda base: Arch Linux
Machine:
  Type: Desktop Mobo: Micro-Star model: MPG X570 GAMING PLUS (MS-7C37) v: 2.0
    serial: <superuser required> uuid: <superuser required> UEFI: American Megatrends LLC. v: A.M0
    date: 10/13/2023
CPU:
  Info: model: AMD Ryzen 5 5600X bits: 64 type: MT MCP arch: Zen 3+ gen: 4 level: v3 note: check
    built: 2022 process: TSMC n6 (7nm) family: 0x19 (25) model-id: 0x21 (33) stepping: 2
    microcode: 0xA20120E
  Topology: cpus: 1x cores: 6 tpc: 2 threads: 12 smt: enabled cache: L1: 384 KiB
    desc: d-6x32 KiB; i-6x32 KiB L2: 3 MiB desc: 6x512 KiB L3: 32 MiB desc: 1x32 MiB
  Speed (MHz): avg: 3878 high: 4650 min/max: 2200/4650 boost: enabled scaling:
    driver: acpi-cpufreq governor: performance cores: 1: 3700 2: 3718 3: 3700 4: 3700 5: 3787 6: 4650
    7: 3700 8: 3718 9: 3700 10: 3722 11: 3802 12: 4650 bogomips: 88804
  Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 svm
  Vulnerabilities: <filter>
Graphics:
  Device-1: Avermedia driver: N/A pcie: gen: 2 speed: 5 GT/s lanes: 4 bus-ID: 23:00.0
    chip-ID: 1461:0054 class-ID: 0400
  Device-2: AMD Navi 22 [Radeon RX 6700/6700 XT/6750 XT / 6800M/6850M XT] driver: amdgpu
    v: kernel arch: RDNA-2 code: Navi-2x process: TSMC n7 (7nm) built: 2020-22 pcie: gen: 4
    speed: 16 GT/s lanes: 16 ports: active: DP-1 empty: DP-2, DP-3, HDMI-A-1, Writeback-1
    bus-ID: 2f:00.0 chip-ID: 1002:73df class-ID: 0300
  Device-3: Logitech Webcam C930e driver: snd-usb-audio,uvcvideo type: USB rev: 2.0
    speed: 480 Mb/s lanes: 1 mode: 2.0 bus-ID: 5-4:3 chip-ID: 046d:0843 class-ID: 0102
    serial: <filter>
  Display: wayland server: X.org v: 1.21.1.13 with: Xwayland v: 24.1.2 compositor: kwin_wayland
    driver: X: loaded: amdgpu unloaded: modesetting,radeon alternate: fbdev,vesa dri: radeonsi
    gpu: amdgpu display-ID: 0
  Monitor-1: DP-1 res: 3440x1440 size: N/A modes: N/A
  API: EGL v: 1.5 hw: drv: amd radeonsi platforms: device: 0 drv: radeonsi device: 1 drv: swrast
    gbm: drv: kms_swrast surfaceless: drv: radeonsi wayland: drv: radeonsi x11: drv: radeonsi
  API: OpenGL v: 4.6 compat-v: 4.5 vendor: amd mesa v: 24.1.6-arch1.1 glx-v: 1.4
    direct-render: yes renderer: AMD Radeon RX 6700 XT (radeonsi navi22 LLVM 18.1.8 DRM 3.57
    6.10.5-zen1-1-zen) device-ID: 1002:73df memory: 11.72 GiB unified: no display-ID: :1.0
  API: Vulkan v: 1.3.279 layers: 9 device: 0 type: discrete-gpu name: AMD Radeon RX 6700 XT
    (RADV NAVI22) driver: mesa radv v: 24.1.6-arch1.1 device-ID: 1002:73df
    surfaces: xcb,xlib,wayland device: 1 type: cpu name: llvmpipe (LLVM 18.1.8 256 bits)
    driver: mesa llvmpipe v: 24.1.6-arch1.1 (LLVM 18.1.8) device-ID: 10005:0000
    surfaces: xcb,xlib,wayland
Audio:
  Device-1: Avermedia driver: N/A pcie: gen: 2 speed: 5 GT/s lanes: 4 bus-ID: 23:00.0
    chip-ID: 1461:0054 class-ID: 0400
  Device-2: Creative Labs CA0132 Sound Core3D [Sound Blaster Recon3D / Z-Series BlasterX AE-5
    Plus] driver: snd_hda_intel v: kernel pcie: gen: 1 speed: 2.5 GT/s lanes: 1 bus-ID: 29:00.0
    chip-ID: 1102:0012 class-ID: 0403
  Device-3: AMD Navi 21/23 HDMI/DP Audio driver: snd_hda_intel v: kernel pcie: gen: 4
    speed: 16 GT/s lanes: 16 bus-ID: 2f:00.1 chip-ID: 1002:ab28 class-ID: 0403
  Device-4: AMD Starship/Matisse HD Audio vendor: Micro-Star MSI driver: snd_hda_intel v: kernel
    pcie: gen: 4 speed: 16 GT/s lanes: 16 bus-ID: 31:00.4 chip-ID: 1022:1487 class-ID: 0403
  Device-5: Trust USB microphone driver: hid-generic,snd-usb-audio,usbhid type: USB rev: 2.0
    speed: 480 Mb/s lanes: 1 mode: 2.0 bus-ID: 5-3.2:4 chip-ID: 145f:02e6 class-ID: 0300
  Device-6: Logitech Webcam C930e driver: snd-usb-audio,uvcvideo type: USB rev: 2.0
    speed: 480 
Mb/s lanes: 1 mode: 2.0 bus-ID: 5-4:3 chip-ID: 046d:0843 class-ID: 0102
    serial: <filter>
  API: ALSA v: k6.10.5-zen1-1-zen status: kernel-api with: aoss type: oss-emulator
    tools: alsactl,alsamixer,amixer
  Server-1: PipeWire v: 1.2.2 status: active with: 1: pipewire-pulse status: active
    2: wireplumber status: active 3: pipewire-alsa type: plugin 4: pw-jack type: plugin
    tools: pactl,pw-cat,pw-cli,wpctl
Network:
  Device-1: Realtek RTL8111/8168/8211/8411 PCI Express Gigabit Ethernet vendor: Micro-Star MSI
    X570-A PRO driver: r8169 v: kernel pcie: gen: 1 speed: 2.5 GT/s lanes: 1 port: d000
    bus-ID: 27:00.0 chip-ID: 10ec:8168 class-ID: 0200
  IF: enp39s0 state: up speed: 1000 Mbps duplex: full mac: <filter>
  Info: services: NetworkManager, smbd, systemd-timesyncd
Drives:
  Local Storage: total: 3.18 TiB used: 841.44 GiB (25.8%)
  SMART Message: Unable to run smartctl. Root privileges required.
  ID-1: /dev/nvme0n1 maj-min: 259:1 vendor: Samsung model: SSD 970 EVO Plus 500GB
    size: 465.76 GiB block-size: physical: 512 B logical: 512 B speed: 31.6 Gb/s lanes: 4 tech: SSD
    serial: <filter> fw-rev: 2B2QEXM7 temp: 41.9 C scheme: GPT
  ID-2: /dev/nvme1n1 maj-min: 259:0 vendor: Samsung model: SSD 970 EVO Plus 500GB
    size: 465.76 GiB block-size: physical: 512 B logical: 512 B speed: 31.6 Gb/s lanes: 4 tech: SSD
    serial: <filter> fw-rev: 2B2QEXM7 temp: 44.9 C scheme: GPT
  ID-3: /dev/sda maj-min: 8:0 vendor: Samsung model: SSD 840 EVO 250GB size: 232.89 GiB
    block-size: physical: 512 B logical: 512 B speed: 6.0 Gb/s tech: SSD serial: <filter>
    fw-rev: CB6Q scheme: GPT
  ID-4: /dev/sdb maj-min: 8:16 vendor: Samsung model: SSD 850 EVO 250GB size: 232.89 GiB
    block-size: physical: 512 B logical: 512 B speed: 6.0 Gb/s tech: SSD serial: <filter>
    fw-rev: 1B6Q scheme: GPT
  ID-5: /dev/sdc maj-min: 8:32 vendor: Seagate model: ST2000VX008-2E3164 size: 1.82 TiB
    block-size: physical: 4096 B logical: 512 B speed: 6.0 Gb/s tech: HDD rpm: 5900 serial: <filter>
    fw-rev: CV12 scheme: GPT
Partition:
  ID-1: / raw-size: 232.59 GiB size: 232.59 GiB (100.00%) used: 15.77 GiB (6.8%) fs: btrfs
    dev: /dev/sda2 maj-min: 8:2
  ID-2: /boot/efi raw-size: 300 MiB size: 299.4 MiB (99.80%) used: 584 KiB (0.2%) fs: vfat
    dev: /dev/sda1 maj-min: 8:1
  ID-3: /home raw-size: 232.59 GiB size: 232.59 GiB (100.00%) used: 15.77 GiB (6.8%) fs: btrfs
    dev: /dev/sda2 maj-min: 8:2
  ID-4: /var/log raw-size: 232.59 GiB size: 232.59 GiB (100.00%) used: 15.77 GiB (6.8%) fs: btrfs
    dev: /dev/sda2 maj-min: 8:2
  ID-5: /var/tmp raw-size: 232.59 GiB size: 232.59 GiB (100.00%) used: 15.77 GiB (6.8%) fs: btrfs
    dev: /dev/sda2 maj-min: 8:2
Swap:
  Kernel: swappiness: 133 (default 60) cache-pressure: 100 (default) zswap: no
  ID-1: swap-1 type: zram size: 31.27 GiB used: 0 KiB (0.0%) priority: 100 comp: zstd
    avail: lzo,lzo-rle,lz4,lz4hc,842 max-streams: 12 dev: /dev/zram0
Sensors:
  System Temperatures: cpu: 48.9 C mobo: N/A gpu: amdgpu temp: 52.0 C mem: 58.0 C
  Fan Speeds (rpm): N/A gpu: amdgpu fan: 520
Info:
  Memory: total: 32 GiB available: 31.27 GiB used: 4.53 GiB (14.5%)
  Processes: 309 Power: uptime: 34m states: freeze,mem,disk suspend: deep avail: s2idle
    wakeups: 0 hibernate: platform avail: shutdown, reboot, suspend, test_resume image: 12.49 GiB
    services: org_kde_powerdevil, power-profiles-daemon, upowerd Init: systemd v: 256
    default: graphical tool: systemctl
  Packages: pm: pacman pkgs: 1921 libs: 576 tools: gnome-software, octopi, pamac, paru Compilers:
    clang: 18.1.8 gcc: 14.2.1 Client: shell wrapper v: 5.2.32-release inxi: 3.3.35
Garuda (2.6.26-1):
  System install date:     2024-08-18
  Last full system update: 2024-08-19
  Is partially upgraded:   No
  Relevant software:       snapper NetworkManager dracut
  Windows dual boot:       Probably (Run as root to verify)
  Failed units:            

Edit: Added garuda-inxi

A potential solution is install qpwgraph (or helvum) and route your audio channels manually using qpwgraph. You can save the configuration in qpwgraph if you ever need it again (or do it in pipewire for a really permanent fix, but I’m not knowledgeable on configuring pipewire).

Fix it with pipewire.
Open a terminal and run

pw-link -o

You’ll get some output for your card. This is two lines of mine for example.

alsa_output.usb-MOTU_828ES_0001f2fffe012e87-00.pro-output-0:monitor_AUX0
alsa_output.usb-MOTU_828ES_0001f2fffe012e87-00.pro-output-0:monitor_AUX1

Note your card name before the colon and the channel names, in my case after monitor_.
Create the path if it doesn’t exist then go there

mkdir -p ~/.config/pipewire/pipewire.conf.d
cd ~/.config/pipewire/pipewire.conf.d

Open your new config file, name it whatever you like so long as it ends in .conf

nano 10-channelremap.conf

Here’s a template to paste & edit

context.modules = [
{ name = libpipewire-module-loopback
    args = {
        audio.position = [ FL FR FC LFE RL RR ]
        capture.props = {
            media.class = Audio/Sink
            node.name = creative_5.1_remap_c
            node.description = "Remapped 5.1 Output"
        }
        playback.props = {
            #media.class = Audio/Source
            node.name = creative_5.1_remap_p
            node.description = "Creative 5.1 Input"
            audio.position = [ AUX0 AUX1 AUX2 AUX3 AUX4 AUX5 ]
            node.target = "alsa_output.usb-MOTU_828ES_0001f2fffe012e87-00.pro-output-0"
        }
    }
}
]

Edit node.target under playback.props. The node.target is the name of your card you got from pwlink, without the colon and channel.
Edit audio.position under playback props. Use the channel names you got from pwlink and what you know about which goes where to put them in the right order.
(Edit) It was a creative card in the example below, so you might be able to use their line:
audio.position = [ FC LFE RL RR FL FR ]

Save your changes then restart pipewire to apply

systemctl --user restart pipewire.service

Test again and see if you got it right on the first try, good luck.

Adapted from the pipewire issue discussion I used to fix this for myself a while back:

4 Likes

Why not just vi for beginners :wink: ?

 ╭─sgs@y7p in ~ as 🧙 took 14s
 🕙 12:48:11
 ╰─λ nano
nano may be found in the following packages:
  core/nano 5.9-1	/usr/bin/nano

@NeoSephiroth just use micro

micro 10-channelremap.conf`

or kate in KDE

Welcome :slight_smile:

Thanks, both of you.^^
I’ll try that tomorrow. Hopefully it’ll work.

So, I did everything like described by dawe now.
The speaker positions changed again (still not correct order)…but now fixed, no matter what order I set in the conf in the marked line in the picture below.
It stays the same but different than before.

Do I need to set the node.target 6 times like the console shows with pw-link -o ?

Just to be clear, I use analog outputs, not digital.
FR FL green Cable
RL RR black cable
FC LFE orange cable


It should move the channels around as ordered in the line you have highlighted, so long as you restart pipewire after making changes.

Do I need to set the node.target 6 times like the console shows with pw-link -o ?

No, that looks right.

Btw, no pictures from text, terminal or other.

Post and format it like the garuda-inxi, please.
Images can be read worse, are not searchable and copyable for further search.

3 Likes

Ah, sorry, makes sense. I’ll keep that in mind.^^

To my problem: still no resolve.

Changing the audio positions in the .conf file changes nothing. And yes, I do restart pipewire with that command after making changes to the .conf.

Edit:
When testing with a AAC 5.1 test file in VLC (Alsa with pipewire sound server) , all front channels work fine like they should, but subwoofer doesn’t work at all and both rear channels are on the front speakers as well. So basically a 2.1 system without subwoofer.
Same goes for video playback in Firefox.

Sound position testing in “system settings → sound” still does the same as written by me in my first post.
Also it is set to the new option (Remapped 5.1 Output) that appeared there after doing that pipewire .conf stuff.

1 Like

Re-reading your first post, your playback audio.position array should go

[ FL FR RL RR FC LFE ]

Give that a try.

Like I said before: It changes nothing.

Delete the config, swap the black and orange cables and call it good enough?

Just tried that.

When I delete the config, it messes up badly with inverted black and orange cables.

When I keep the config with the inverted cables, all speakers behave like they should except for Rear Right. It plays really quietly on the subwoofer instead of Rear Right. Subwoofer plays Subwoofer normally though…(Audio test in “system settings → sound”)

But that messes up the audio in VLC and all other programs (including games on Steam) because now the center speaker is played by the subwoofer and there is nothing comming out of the center speaker at all.
(all still Alsa with Pipewire Server)

I don’t get it. This doesn’t behave logically at all… >.<

Have you tried installing a patchbay application? Something like Helvum or Carla would show you how everything is routed, you can also change the routing in the case of Carla.

2 Likes

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.