Skip to content

Instantly share code, notes, and snippets.

@sankao
Last active September 8, 2026 09:58
Show Gist options
  • Select an option

  • Save sankao/5200b85af887b6b0fd45260d18c0241f to your computer and use it in GitHub Desktop.

Select an option

Save sankao/5200b85af887b6b0fd45260d18c0241f to your computer and use it in GitHub Desktop.
ROG Flow Z13 2025 Audio fix

ROG Flow Z13 2025 Audio fix

ROG Flow Z13 2025 (ai max 395) 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

Also needed: Firmware Symlinks

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.zst

Optional

You 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_i2c

I measured with an iPhone SPL meter app playing the same Spotify track:

  • 19_5dB → 76.5 dB (Gain: 19 in journalctl)
  • 16_5dB → 74.1 dB (Gain: 16 in journalctl)
  • no bincfg → default Gain: 17

Links

@waltercool

Copy link
Copy Markdown

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment