Bug 219158

Summary: ASUS GA402XY (ACL285) Headset mic not working with 6.9 and 6.10 kernel
Product: Drivers Reporter: Austrum (austrum.lab)
Component: Sound(ALSA)Assignee: Jaroslav Kysela (perex)
Status: NEW ---    
Severity: normal CC: austrum.lab, gio.spacedev
Priority: P3    
Hardware: All   
OS: Linux   
Kernel Version: Subsystem:
Regression: No Bisected commit-id:
Attachments: $(dmesg | grep -iE 'snd|hda|realtek|alc|cirrus') and $(cat /proc/asound/card2/codec#0)

Description Austrum 2024-08-14 14:14:39 UTC
Created attachment 306722 [details]
$(dmesg | grep -iE 'snd|hda|realtek|alc|cirrus') and $(cat /proc/asound/card2/codec#0)

Laptop Model: Asus ROG G14 GA402XY
Codec: Realtek ALC285 + Cirrus logic cs35l41
OS: Debian Testing
Kernel: 6.9.x, 6.10 represents the issue, 6.8.x no
DE: Gnome 46, wayland

Here's the issue. When using the 6.9 or the 6.10 kernel system doesn't see an external mic from the headset (3.5 jack). Instead, there's only an internal mic available.

When using the 6.8 kernel or less it's okay, I can use mic from the headset. So currently I'm on 6.8.12.


What I've tried:

- Play with snd_hda_intel model parameters from there: https://www.kernel.org/doc/html/latest/sound/hd-audio/models.html?highlight=headset+mic ex: options snd_hda_intel model=dell-headset-mic
- Retask jack with hdajackretask
- Install a fresh system on another ssd (latest PopOS) - after kernel update to 6.9.x (from the repository) it's the same issue.
Comment 1 Gio 2024-11-15 14:24:26 UTC
System Information:

Laptop Model: Asus ROG G14 GA402XY
Codec: Realtek ALC285 + Cirrus Logic CS35L41
Operating System: Arch Linux
Kernel: Issue starts from version 6.9; 6.8.x works (tested up to 6.8.9)
Desktop Environment: KDE 6.2.3 + Wayland


I performed a bisection to identify the cause of the headset microphone issue. The first commit introducing the problem is the following:

https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=0e02ca29a5634dfb90fe1bad9467ee0965a1e170

Starting from this commit, the headset microphone is no longer recognized. After investigating further, it seems the issue is related to the sort.r function in lib/sort.c.

To verify, I checked out the latest stable kernel and replaced the sort.r function with the version from the last known "good" kernel (commit https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/lib/sort.c?id=db946a42226052a13fbce8757ff77b3107dd2030#n210). With this change, the headset microphone works correctly, even on the latest kernel.