[PATCH REQUEST] ASUS ROG Zephyrus G14 GA403W - CS35L56 volume controls not exposed correctly
After extensive debugging, the issue has been isolated to incorrect ALSA mixer control mapping.
Technical Details
Hardware Configuration:
- Laptop Model: ASUS ROG Zephyrus G14 (GA403W) - Audio Codec: Realtek ALC285 (Subsystem ID: 0x10431024) - Amplifiers: Dual Cirrus Logic CS35L56 smart amplifiers - ALSA Card: Card 2 (HD-Audio Generic) - Driver: snd_hda_intel with cs35l56-hda module
Amplifier Status: The CS35L56 amplifiers are being detected and initialized correctly:
cs35l56-hda i2c-CSC3556:00-cs35l56-hda.0: DSP1: Firmware: 1a00d6 vendor: 0x2 v3.11.16
cs35l56-hda i2c-CSC3556:00-cs35l56-hda.1: DSP1: Firmware: 1a00d6 vendor: 0x2 v3.11.16
Firmware files loaded:
- cirrus/cs35l56-b0-dsp1-misc-10431024-spkid1.wmfw - cirrus/cs35l56-b0-dsp1-misc-10431024-spkid1-amp1.bin - cirrus/cs35l56-b0-dsp1-misc-10431024-spkid1-amp2.bin
The Actual Problem
Current (broken) behavior:
- The volume slider controls Master Playback Volume (numid=24) on the ALC285 codec - This control only affects the analog signal level going into the CS35L56 amplifiers - Lowering this control degrades signal quality (adds muffling/distortion) without actually reducing speaker output volume - The CS35L56 amplifiers remain at a fixed gain, so perceived loudness doesn't change significantly
Correct behavior should be:
- The volume slider should control AMP1 Speaker Playback Volume (numid=6) and AMP2 Speaker Playback Volume (numid=12) - The codec's Master and Speaker controls should remain at 100% for optimal signal-to-noise ratio
Verified working configuration:
bash
# Codec output (should be fixed at these values)
amixer -c2 sset
'Master'
100
%
amixer -c2 sset
'Speaker'
100
%
# Amplifier controls (should be user-adjustable via volume slider)
amixer -c2 sset
'AMP1 Speaker'
85
%
amixer -c2 sset
'AMP2 Speaker'
85
%
``
`
Manual testing confirms:
- ✅
`
AMP1 Speaker
`
and
`
AMP2 Speaker
`
controls properly adjust speaker loudness
- ✅ Volume range
0
-100% works without distortion when codec is at
100
%
- ❌ PipeWire/desktop environment uses the wrong mixer controls
### PipeWire Configuration
Current sink properties show it's using ACP
(
ALSA Card Profiles
)
:
`
`
`
api.alsa.use-acp
=
"true"
api.alsa.path
=
"front:2"
`
`
`
The automatically selected mixer path is choosing
`
Master
`
as the primary volume control instead of the CS35L56 amp controls.
### Required Fix
This needs one of the following solutions:
1
. **ALSA UCM
(
Use Case Manager
)
profile**
for
device ID
`
10431024
`
:
- Lock codec controls at
100
%
- Expose AMP1/AMP2 Speaker controls as primary volume
2
. **Custom ALSA mixer path** at
`
/usr/share/alsa/mixer/paths/
`
:
- Define AMP1/AMP2 Speaker as volume elements
- Set Master/Speaker to
`
volume
=
ignore
`
or
`
volume-limit
=
0.0
`
3
. **Kernel quirk**
in
`
sound/pci/hda/patch_realtek.c
`
:
- Add model-specific configuration
for
GA403W
- Similar to how other ASUS models with CS35L41/CS35L56 are handled
4
. **PipeWire/WirePlumber profile update**:
- Device-specific configuration to use correct mixer elements
### Relevant Files
**ALSA Controls Output:**
`
``
numid
=
6
,iface
=
MIXER,name
=
'AMP1 Speaker Playback Volume'
:
values
=
400
|
dBscale-min
=
-100.00dB,step
=
0
.25dB,mute
=
0
|
Range:
0
-448
numid
=
12
,iface
=
MIXER,name
=
'AMP2 Speaker Playback Volume'
:
values
=
400
|
dBscale-min
=
-100.00dB,step
=
0
.25dB,mute
=
0
|
Range:
0
-448
numid
=
24
,iface
=
MIXER,name
=
'Master Playback Volume'
:
values
=
39
|
dBscale-min
=
-65.25dB,step
=
0
.75dB,mute
=
0
|
Range:
0
-87
Codec Information:
- See full codec dump at: https://paste.centos.org/view/6c3a3640 - Full diagnostics at: https://paste.centos.org/view/c0d20bf3
Temporary Workaround
Users can manually set correct levels on boot with this autostart script:
~/.config/autostart/audio-fix.desktop:
desktop
[Desktop Entry]
Type=Application
Name=Audio Fix
Exec=/usr/bin/bash -c "sleep 5 && amixer -c2 sset 'Master' 100%% && amixer -c2 sset 'Speaker' 100%% && amixer -c2 sset 'AMP1 Speaker' 85%% && amixer -c2 sset 'AMP2 Speaker' 85%%"
Hidden=false
NoDisplay=false
However, the volume slider will still not function correctly.
Sent with [Proton Mail](https://proton.me/mail/home) secure email.
participants (1)
-
John DelTorchio