ROG Flow Z13 2025 Audio fix
Disclaimer: I don't know much about kernel development, this fix was figured out with AI assistance.
My problem was that the speakers work but are way quieter than Windows. Kernel logs show:
cs35l41-hda: Falling back to default firmware.
The fix is simple: copy-paste the ROG Ally entry with a different device ID. It solves the audio problem subjectively (we're far from amazing sound, but at least twice as loud).
The Z13 2025 subsystem ID (10431FB3) is missing from cs35l41_hda_property.c. The Realtek quirk was added in 6.18, but the CS35L41 entry is still missing in 6.19-rc3 as far as I can tell.
File: sound/hda/codecs/side-codecs/cs35l41_hda_property.c
Add to cs35l41_config_table[] (right after the ROG Ally 104317F3 entry):
{ "10431FB3", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4500, 24 },Add to cs35l41_prop_model_table[]:
{ "CSC3551", "10431FB3", generic_dsd_config },Same values as ROG Ally except the device identifier for rog flow z13.
Before:
cs35l41-hda: Falling back to default firmware.
After:
cs35l41-hda: Adding DSD properties for 10431FB3
cs35l41-hda: DSP1: cirrus/cs35l41-dsp1-spk-prot-10431fb3.wmfw
cs35l41-hda: DSP1: spk-prot: ...\10431FB3_241018_V01_A0
cs35l41-hda: Calibration applied: R0=7052
SPKID detection fails (SPKID: -19), so also needed:
cd /lib/firmware/cirrus
ln -sf cs35l41-dsp1-spk-prot-10431fb3-spkid0-l0.bin.zst cs35l41-dsp1-spk-prot-10431fb3-l0.bin.zst
ln -sf cs35l41-dsp1-spk-prot-10431fb3-spkid0-r0.bin.zst cs35l41-dsp1-spk-prot-10431fb3-r0.bin.zstYou can also tweak gain at runtime with bincfg symlinks (available: 14_5dB, 16_5dB, 19_5dB):
cd /lib/firmware/cirrus
sudo ln -sf cs35l41/bincfgs/cs35l41-dsp1-19_5dB.bincfg.zst cs35l41-dsp1-spk-prot-10431fb3-l0.bincfg.zst
sudo ln -sf cs35l41/bincfgs/cs35l41-dsp1-19_5dB.bincfg.zst cs35l41-dsp1-spk-prot-10431fb3-r0.bincfg.zst
# reload: sudo rmmod snd_hda_scodec_cs35l41_i2c snd_hda_scodec_cs35l41 && sudo modprobe snd_hda_scodec_cs35l41_i2cI measured with an iPhone SPL meter app playing the same Spotify track:
- 19_5dB → 76.5 dB (
Gain: 19in journalctl) - 16_5dB → 74.1 dB (
Gain: 16in journalctl) - no bincfg → default
Gain: 17
I think this solution works fine, at least, using it at 19_5dB seems to be mostly equivalent to the configuration on Windows by ASUS.
The current defaults in the linux-firmware tree are still a bit off