* [PATCH] ALSA: hda/realtek: Fix microphone regression on ASUS N705UD
@ 2025-02-26 13:55 Adrien Vergé
2025-02-26 13:59 ` Takashi Iwai
2025-02-28 4:56 ` Sasha Levin
0 siblings, 2 replies; 3+ messages in thread
From: Adrien Vergé @ 2025-02-26 13:55 UTC (permalink / raw)
To: Jaroslav Kysela, Takashi Iwai
Cc: Kailang Yang, Stefan Binding, Simon Trimmer, Joshua Grisham,
Athaariq Ardhiansyah, Kuan-Wei Chiu, Chris Chiu,
Adrien Vergé, linux-sound, linux-kernel, stable
This fixes a regression introduced a few weeks ago in stable kernels
6.12.14 and 6.13.3. The internal microphone on ASUS Vivobook N705UD /
X705UD laptops is broken: the microphone appears in userspace (e.g.
Gnome settings) but no sound is detected.
I bisected it to commit 3b4309546b48 ("ALSA: hda: Fix headset detection
failure due to unstable sort").
I figured out the cause:
1. The initial pins enabled for the ALC256 driver are:
cfg->inputs == {
{ pin=0x19, type=AUTO_PIN_MIC,
is_headset_mic=1, is_headphone_mic=0, has_boost_on_pin=1 },
{ pin=0x1a, type=AUTO_PIN_MIC,
is_headset_mic=0, is_headphone_mic=0, has_boost_on_pin=1 } }
2. Since 2017 and commits c1732ede5e8 ("ALSA: hda/realtek - Fix headset
and mic on several ASUS laptops with ALC256") and 28e8af8a163 ("ALSA:
hda/realtek: Fix mic and headset jack sense on ASUS X705UD"), the
quirk ALC256_FIXUP_ASUS_MIC is also applied to ASUS X705UD / N705UD
laptops.
This added another internal microphone on pin 0x13:
cfg->inputs == {
{ pin=0x13, type=AUTO_PIN_MIC,
is_headset_mic=0, is_headphone_mic=0, has_boost_on_pin=1 },
{ pin=0x19, type=AUTO_PIN_MIC,
is_headset_mic=1, is_headphone_mic=0, has_boost_on_pin=1 },
{ pin=0x1a, type=AUTO_PIN_MIC,
is_headset_mic=0, is_headphone_mic=0, has_boost_on_pin=1 } }
I don't know what this pin 0x13 corresponds to. To the best of my
knowledge, these laptops have only one internal microphone.
3. Before 2025 and commit 3b4309546b48 ("ALSA: hda: Fix headset
detection failure due to unstable sort"), the sort function would let
the microphone of pin 0x1a (the working one) *before* the microphone
of pin 0x13 (the phantom one).
4. After this commit 3b4309546b48, the fixed sort function puts the
working microphone (pin 0x1a) *after* the phantom one (pin 0x13). As
a result, no sound is detected anymore.
It looks like the quirk ALC256_FIXUP_ASUS_MIC is not needed anymore for
ASUS Vivobook X705UD / N705UD laptops. Without it, everything works
fine:
- the internal microphone is detected and records actual sound,
- plugging in a jack headset is detected and can record actual sound
with it,
- unplugging the jack headset makes the system go back to internal
microphone and can record actual sound.
Cc: stable@vger.kernel.org
Cc: Kuan-Wei Chiu <visitorckw@gmail.com>
Cc: Chris Chiu <chris.chiu@canonical.com>
Fixes: 3b4309546b48 ("ALSA: hda: Fix headset detection failure due to unstable sort")
Tested-by: Adrien Vergé <adrienverge@gmail.com>
Signed-off-by: Adrien Vergé <adrienverge@gmail.com>
---
sound/pci/hda/patch_realtek.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 224616fbec4f..456dfa2b4b4b 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -10656,7 +10656,6 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
SND_PCI_QUIRK(0x1043, 0x19ce, "ASUS B9450FA", ALC294_FIXUP_ASUS_HPE),
SND_PCI_QUIRK(0x1043, 0x19e1, "ASUS UX581LV", ALC295_FIXUP_ASUS_MIC_NO_PRESENCE),
SND_PCI_QUIRK(0x1043, 0x1a13, "Asus G73Jw", ALC269_FIXUP_ASUS_G73JW),
- SND_PCI_QUIRK(0x1043, 0x1a30, "ASUS X705UD", ALC256_FIXUP_ASUS_MIC),
SND_PCI_QUIRK(0x1043, 0x1a63, "ASUS UX3405MA", ALC245_FIXUP_CS35L41_SPI_2),
SND_PCI_QUIRK(0x1043, 0x1a83, "ASUS UM5302LA", ALC294_FIXUP_CS35L41_I2C_2),
SND_PCI_QUIRK(0x1043, 0x1a8f, "ASUS UX582ZS", ALC245_FIXUP_CS35L41_SPI_2),
base-commit: d082ecbc71e9e0bf49883ee4afd435a77a5101b6
--
2.48.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] ALSA: hda/realtek: Fix microphone regression on ASUS N705UD
2025-02-26 13:55 [PATCH] ALSA: hda/realtek: Fix microphone regression on ASUS N705UD Adrien Vergé
@ 2025-02-26 13:59 ` Takashi Iwai
2025-02-28 4:56 ` Sasha Levin
1 sibling, 0 replies; 3+ messages in thread
From: Takashi Iwai @ 2025-02-26 13:59 UTC (permalink / raw)
To: Adrien Vergé
Cc: Jaroslav Kysela, Takashi Iwai, Kailang Yang, Stefan Binding,
Simon Trimmer, Joshua Grisham, Athaariq Ardhiansyah,
Kuan-Wei Chiu, Chris Chiu, linux-sound, linux-kernel, stable
On Wed, 26 Feb 2025 14:55:15 +0100,
Adrien Vergé wrote:
>
> This fixes a regression introduced a few weeks ago in stable kernels
> 6.12.14 and 6.13.3. The internal microphone on ASUS Vivobook N705UD /
> X705UD laptops is broken: the microphone appears in userspace (e.g.
> Gnome settings) but no sound is detected.
> I bisected it to commit 3b4309546b48 ("ALSA: hda: Fix headset detection
> failure due to unstable sort").
>
> I figured out the cause:
> 1. The initial pins enabled for the ALC256 driver are:
> cfg->inputs == {
> { pin=0x19, type=AUTO_PIN_MIC,
> is_headset_mic=1, is_headphone_mic=0, has_boost_on_pin=1 },
> { pin=0x1a, type=AUTO_PIN_MIC,
> is_headset_mic=0, is_headphone_mic=0, has_boost_on_pin=1 } }
> 2. Since 2017 and commits c1732ede5e8 ("ALSA: hda/realtek - Fix headset
> and mic on several ASUS laptops with ALC256") and 28e8af8a163 ("ALSA:
> hda/realtek: Fix mic and headset jack sense on ASUS X705UD"), the
> quirk ALC256_FIXUP_ASUS_MIC is also applied to ASUS X705UD / N705UD
> laptops.
> This added another internal microphone on pin 0x13:
> cfg->inputs == {
> { pin=0x13, type=AUTO_PIN_MIC,
> is_headset_mic=0, is_headphone_mic=0, has_boost_on_pin=1 },
> { pin=0x19, type=AUTO_PIN_MIC,
> is_headset_mic=1, is_headphone_mic=0, has_boost_on_pin=1 },
> { pin=0x1a, type=AUTO_PIN_MIC,
> is_headset_mic=0, is_headphone_mic=0, has_boost_on_pin=1 } }
> I don't know what this pin 0x13 corresponds to. To the best of my
> knowledge, these laptops have only one internal microphone.
> 3. Before 2025 and commit 3b4309546b48 ("ALSA: hda: Fix headset
> detection failure due to unstable sort"), the sort function would let
> the microphone of pin 0x1a (the working one) *before* the microphone
> of pin 0x13 (the phantom one).
> 4. After this commit 3b4309546b48, the fixed sort function puts the
> working microphone (pin 0x1a) *after* the phantom one (pin 0x13). As
> a result, no sound is detected anymore.
>
> It looks like the quirk ALC256_FIXUP_ASUS_MIC is not needed anymore for
> ASUS Vivobook X705UD / N705UD laptops. Without it, everything works
> fine:
> - the internal microphone is detected and records actual sound,
> - plugging in a jack headset is detected and can record actual sound
> with it,
> - unplugging the jack headset makes the system go back to internal
> microphone and can record actual sound.
>
> Cc: stable@vger.kernel.org
> Cc: Kuan-Wei Chiu <visitorckw@gmail.com>
> Cc: Chris Chiu <chris.chiu@canonical.com>
> Fixes: 3b4309546b48 ("ALSA: hda: Fix headset detection failure due to unstable sort")
> Tested-by: Adrien Vergé <adrienverge@gmail.com>
> Signed-off-by: Adrien Vergé <adrienverge@gmail.com>
Thanks, applied now.
Takashi
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] ALSA: hda/realtek: Fix microphone regression on ASUS N705UD
2025-02-26 13:55 [PATCH] ALSA: hda/realtek: Fix microphone regression on ASUS N705UD Adrien Vergé
2025-02-26 13:59 ` Takashi Iwai
@ 2025-02-28 4:56 ` Sasha Levin
1 sibling, 0 replies; 3+ messages in thread
From: Sasha Levin @ 2025-02-28 4:56 UTC (permalink / raw)
To: stable, adrienverge; +Cc: Sasha Levin
[ Sasha's backport helper bot ]
Hi,
Summary of potential issues:
❌ Build failures detected
⚠️ Found matching upstream commit but patch is missing proper reference to it
Found matching upstream commit: c6557ccf8094ce2e1142c6e49cd47f5d5e2933a8
Status in newer kernel trees:
6.6.y | Not found
Note: The patch differs from the upstream commit:
---
1: c6557ccf8094c ! 1: 09b2f4d39b8aa ALSA: hda/realtek: Fix microphone regression on ASUS N705UD
@@ Commit message
Fixes: 3b4309546b48 ("ALSA: hda: Fix headset detection failure due to unstable sort")
Tested-by: Adrien Vergé <adrienverge@gmail.com>
Signed-off-by: Adrien Vergé <adrienverge@gmail.com>
- Link: https://patch.msgid.link/20250226135515.24219-1-adrienverge@gmail.com
- Signed-off-by: Takashi Iwai <tiwai@suse.de>
## sound/pci/hda/patch_realtek.c ##
@@ sound/pci/hda/patch_realtek.c: static const struct hda_quirk alc269_fixup_tbl[] = {
---
Results of testing on various branches:
| Branch | Patch Apply | Build Test |
|---------------------------|-------------|------------|
| stable/linux-6.13.y | Success | Success |
| stable/linux-6.12.y | Success | Success |
| stable/linux-6.6.y | Success | Success |
| stable/linux-6.1.y | Failed | N/A |
| stable/linux-5.15.y | Failed | N/A |
| stable/linux-5.10.y | Failed | N/A |
| stable/linux-5.4.y | Failed | N/A |
Build Errors:
Patch failed to apply on stable/linux-6.1.y. Reject:
diff a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c (rejected hunks)
@@ -10656,7 +10656,6 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
SND_PCI_QUIRK(0x1043, 0x19ce, "ASUS B9450FA", ALC294_FIXUP_ASUS_HPE),
SND_PCI_QUIRK(0x1043, 0x19e1, "ASUS UX581LV", ALC295_FIXUP_ASUS_MIC_NO_PRESENCE),
SND_PCI_QUIRK(0x1043, 0x1a13, "Asus G73Jw", ALC269_FIXUP_ASUS_G73JW),
- SND_PCI_QUIRK(0x1043, 0x1a30, "ASUS X705UD", ALC256_FIXUP_ASUS_MIC),
SND_PCI_QUIRK(0x1043, 0x1a63, "ASUS UX3405MA", ALC245_FIXUP_CS35L41_SPI_2),
SND_PCI_QUIRK(0x1043, 0x1a83, "ASUS UM5302LA", ALC294_FIXUP_CS35L41_I2C_2),
SND_PCI_QUIRK(0x1043, 0x1a8f, "ASUS UX582ZS", ALC245_FIXUP_CS35L41_SPI_2),
Patch failed to apply on stable/linux-5.15.y. Reject:
diff a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c (rejected hunks)
@@ -10656,7 +10656,6 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
SND_PCI_QUIRK(0x1043, 0x19ce, "ASUS B9450FA", ALC294_FIXUP_ASUS_HPE),
SND_PCI_QUIRK(0x1043, 0x19e1, "ASUS UX581LV", ALC295_FIXUP_ASUS_MIC_NO_PRESENCE),
SND_PCI_QUIRK(0x1043, 0x1a13, "Asus G73Jw", ALC269_FIXUP_ASUS_G73JW),
- SND_PCI_QUIRK(0x1043, 0x1a30, "ASUS X705UD", ALC256_FIXUP_ASUS_MIC),
SND_PCI_QUIRK(0x1043, 0x1a63, "ASUS UX3405MA", ALC245_FIXUP_CS35L41_SPI_2),
SND_PCI_QUIRK(0x1043, 0x1a83, "ASUS UM5302LA", ALC294_FIXUP_CS35L41_I2C_2),
SND_PCI_QUIRK(0x1043, 0x1a8f, "ASUS UX582ZS", ALC245_FIXUP_CS35L41_SPI_2),
Patch failed to apply on stable/linux-5.10.y. Reject:
diff a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c (rejected hunks)
@@ -10656,7 +10656,6 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
SND_PCI_QUIRK(0x1043, 0x19ce, "ASUS B9450FA", ALC294_FIXUP_ASUS_HPE),
SND_PCI_QUIRK(0x1043, 0x19e1, "ASUS UX581LV", ALC295_FIXUP_ASUS_MIC_NO_PRESENCE),
SND_PCI_QUIRK(0x1043, 0x1a13, "Asus G73Jw", ALC269_FIXUP_ASUS_G73JW),
- SND_PCI_QUIRK(0x1043, 0x1a30, "ASUS X705UD", ALC256_FIXUP_ASUS_MIC),
SND_PCI_QUIRK(0x1043, 0x1a63, "ASUS UX3405MA", ALC245_FIXUP_CS35L41_SPI_2),
SND_PCI_QUIRK(0x1043, 0x1a83, "ASUS UM5302LA", ALC294_FIXUP_CS35L41_I2C_2),
SND_PCI_QUIRK(0x1043, 0x1a8f, "ASUS UX582ZS", ALC245_FIXUP_CS35L41_SPI_2),
Patch failed to apply on stable/linux-5.4.y. Reject:
diff a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c (rejected hunks)
@@ -10656,7 +10656,6 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
SND_PCI_QUIRK(0x1043, 0x19ce, "ASUS B9450FA", ALC294_FIXUP_ASUS_HPE),
SND_PCI_QUIRK(0x1043, 0x19e1, "ASUS UX581LV", ALC295_FIXUP_ASUS_MIC_NO_PRESENCE),
SND_PCI_QUIRK(0x1043, 0x1a13, "Asus G73Jw", ALC269_FIXUP_ASUS_G73JW),
- SND_PCI_QUIRK(0x1043, 0x1a30, "ASUS X705UD", ALC256_FIXUP_ASUS_MIC),
SND_PCI_QUIRK(0x1043, 0x1a63, "ASUS UX3405MA", ALC245_FIXUP_CS35L41_SPI_2),
SND_PCI_QUIRK(0x1043, 0x1a83, "ASUS UM5302LA", ALC294_FIXUP_CS35L41_I2C_2),
SND_PCI_QUIRK(0x1043, 0x1a8f, "ASUS UX582ZS", ALC245_FIXUP_CS35L41_SPI_2),
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2025-02-28 5:00 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-02-26 13:55 [PATCH] ALSA: hda/realtek: Fix microphone regression on ASUS N705UD Adrien Vergé
2025-02-26 13:59 ` Takashi Iwai
2025-02-28 4:56 ` Sasha Levin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox