Spent two days on this on my desktop
I don't normally use Chatbots, but I really wanted to get away from windows 11, and Bazzite seems to over heat my computer, plus Zorin looks so much nicer, so I am posting the synopsis of my adventure to hopefully help and fix this bug
Hardware
- Motherboard: ASUS ROG Strix X870-A Gaming WiFi
- Audio codec: Realtek ALC4080 (USB Audio)
- USB Vendor/Product ID:
0b05:1b9b - OS: Zorin OS 18.1 (Ubuntu Noble)
- Kernel:
7.0.0-28-generic
Problem
The motherboard's optical S/PDIF output is detected and exposed as an IEC958 device, but no PCM audio is produced using the default ALSA UCM/PipeWire configuration.
Windows and Bazzite Linux both produce working S/PDIF output on the same hardware.
Investigation
The device is detected correctly:
USB Audio
Vendor: 0b05
Product: 1b9b
Driver: snd_usb_audio
PipeWire creates an IEC958 sink:
USB Audio Digital Stereo (IEC958)
api.alsa.path = "iec958:2"
However, playback through the logical IEC958 devices fails:
aplay -D iec958:CARD=Audio,DEV=0 ...
→ No audio
aplay -D iec958:CARD=Audio,DEV=1 ...
→ No audio
Raw hardware playback also fails:
aplay -D hw:2,3 ...
→ No audio
However:
aplay -D plughw:2,3 ...
→ Audio works correctly over optical S/PDIF
Root cause
The ASUS USB audio implementation appears to require ALSA's plug conversion layer for the optical PCM endpoint.
The current UCM profile routes the IEC958 output to a device that does not produce audio on this motherboard revision (USB ID 0b05:1b9b).
Additionally, the current UCM profile only matches older ASUS USB IDs:
0b05:1996
0b05:1999
and does not include:
0b05:1b9b
Workaround
Creating a custom ALSA PCM using the plug plugin restores S/PDIF output:
pcm.spdif_fixed {
type plug
slave.pcm "hw:2,3"
}
ctl.spdif_fixed {
type hw
card 2
}
Playback through this PCM works correctly.
Expected behavior
The ALC4080 UCM profile should correctly support ASUS USB device 0b05:1b9b and configure the S/PDIF output so that standard PipeWire/ALSA playback functions without requiring a custom .asoundrc.