public inbox for stable@vger.kernel.org
 help / color / mirror / Atom feed
* [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