Bug 219807 - [REGRESSION, BISECTED] Silent microphone, Linux 6.6.78, Realtek ALC256
Summary: [REGRESSION, BISECTED] Silent microphone, Linux 6.6.78, Realtek ALC256
Status: RESOLVED CODE_FIX
Alias: None
Product: Drivers
Classification: Unclassified
Component: Sound(ALSA) (show other bugs)
Hardware: Intel Linux
: P3 normal
Assignee: Jaroslav Kysela
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2025-02-23 16:59 UTC by hipcatkiss
Modified: 2025-02-25 15:41 UTC (History)
1 user (show)

See Also:
Kernel Version: 6.6.78
Subsystem:
Regression: Yes
Bisected commit-id: 3cef733e15cd8357bef2d713890a8d4884a990cc


Attachments
alsa-info on the good kernel (36.14 KB, text/plain)
2025-02-25 07:42 UTC, hipcatkiss
Details
alsa-info on the bad kernel (36.14 KB, text/plain)
2025-02-25 07:46 UTC, hipcatkiss
Details
Fix patch (1.96 KB, patch)
2025-02-25 13:01 UTC, Takashi Iwai
Details | Diff
stable/linux-6.6.y patch (831 bytes, patch)
2025-02-25 15:39 UTC, hipcatkiss
Details | Diff

Description hipcatkiss 2025-02-23 16:59:49 UTC
Codec: Realtek ALC256. 
Audio device: Intel Corporation Sunrise Point-LP HD Audio (rev 21). 
Introduced in: linux 6.6.78. 
.config: https://pastebin.com/raw/AJWU04NV (9977 lines)

dmesg | grep -i audio

[   10.995668] snd_hda_intel 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
[   11.124542] snd_hda_codec_realtek hdaudioC0D0: autoconfig for ALC256: line_outs=1 (0x14/0x0/0x0/0x0/0x0) type:speaker
[   11.124548] snd_hda_codec_realtek hdaudioC0D0:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
[   11.124551] snd_hda_codec_realtek hdaudioC0D0:    hp_outs=1 (0x21/0x0/0x0/0x0/0x0)
[   11.124554] snd_hda_codec_realtek hdaudioC0D0:    mono: mono_out=0x0
[   11.124555] snd_hda_codec_realtek hdaudioC0D0:    inputs:
[   11.124557] snd_hda_codec_realtek hdaudioC0D0:      Headset Mic=0x19
[   11.124559] snd_hda_codec_realtek hdaudioC0D0:      Internal Mic=0x1b
[   11.124560] snd_hda_codec_realtek hdaudioC0D0:      Internal Mic=0x13

Speakers work, microphone does not, though it is detected. When using pipewire and alsa it remains silent. When using pulseaudio it generates static noise. For example,

arecord -L

hw:CARD=PCH,DEV=0
    HDA Intel PCH, ALC256 Analog
    Direct hardware device without any conversions
plughw:CARD=PCH,DEV=0
    HDA Intel PCH, ALC256 Analog
    Hardware device with all software conversions

arecord -D plughw:CARD=PCH,DEV=0 sound.wav

in this case sound.wav in a silent audio file.
Comment 1 Artem S. Tashkinov 2025-02-23 20:40:56 UTC
Did it ever work?

If it did, could you bisect?

https://docs.kernel.org/admin-guide/bug-bisect.html
Comment 2 hipcatkiss 2025-02-24 10:37:13 UTC
(In reply to Artem S. Tashkinov from comment #1)
> Did it ever work?
> 
> If it did, could you bisect?
> 
> https://docs.kernel.org/admin-guide/bug-bisect.html

The bug(?) was introduced in 6.6.78, is not present before and persists after.

Bisecting: 136 revisions left to test after this (roughly 7 steps)

It will take a while. I have limited free time and build time is around 2 hours. I tried to speed it up as described in https://docs.kernel.org/admin-guide/verify-bugs-and-bisect-regressions.html by doing

yes '' | make localmodconfig

but unfortunately that makes the build fail with the error

ERROR: modpost: "sof_ipc3_do_rx_work" [sound/soc/sof/snd-sof.ko] undefined!

I am not a programmer and my knowledge is too limited to do anything about it, so I build with the config I linked to in the OP.

English is not my first language, I apologize for mistakes I might make.
Comment 3 hipcatkiss 2025-02-24 16:20:51 UTC
Turned out to take much less time than I thought. Bisection log is below

git bisect start
# status: waiting for both good and bad commits
# good: [c719455843a8bc3e969ba58ec92335ed7510e9fc] Linux 6.6.77
git bisect good c719455843a8bc3e969ba58ec92335ed7510e9fc
# status: waiting for bad commit, 1 good commit known
# bad: [4407146cf3fcfe8883f6123b89f861a11cc4e4df] Linux 6.6.78
git bisect bad 4407146cf3fcfe8883f6123b89f861a11cc4e4df
# good: [8fb062178e1ce180e2cfdc9abc83a1b9fea381ca] usbnet: ipheth: use static NDP16 location in URB
git bisect good 8fb062178e1ce180e2cfdc9abc83a1b9fea381ca
# bad: [25abffee5ceb6691ecd4f089be2bb28842e2d2fd] media: imx296: Add standby delay during probe
git bisect bad 25abffee5ceb6691ecd4f089be2bb28842e2d2fd
# bad: [5538b1b2eeb786327d5ef035ea249941640a795d] ARM: dts: ti/omap: gta04: fix pm issues caused by spi module
git bisect bad 5538b1b2eeb786327d5ef035ea249941640a795d
# good: [a80f82d31ca67f064693d776d86dc60524ca2cee] Revert "media: uvcvideo: Require entities to have a non-zero unique ID"
git bisect good a80f82d31ca67f064693d776d86dc60524ca2cee
# bad: [7bfa83ee25a68214903dc3a6b431eb8ab0a81850] scsi: st: Don't set pos_unknown just after device recognition
git bisect bad 7bfa83ee25a68214903dc3a6b431eb8ab0a81850
# bad: [8852e056e297df1d8635ee7504e780d3184e45d0] PCI: Avoid putting some root ports into D3 on TUXEDO Sirius Gen1
git bisect bad 8852e056e297df1d8635ee7504e780d3184e45d0
# bad: [3cef733e15cd8357bef2d713890a8d4884a990cc] ALSA: hda: Fix headset detection failure due to unstable sort
git bisect bad 3cef733e15cd8357bef2d713890a8d4884a990cc
# good: [125c6cb709344ed7dfb858253b513f3a4a624109] ALSA: hda/realtek: Enable headset mic on Positivo C6400
git bisect good 125c6cb709344ed7dfb858253b513f3a4a624109
# first bad commit: [3cef733e15cd8357bef2d713890a8d4884a990cc] ALSA: hda: Fix headset detection failure due to unstable sort

Then,

git switch --detach --discard-changes stable/linux-6.6.y 
git revert --no-edit 3cef733e15cd8357bef2d713890a8d4884a990cc

solves the issue.
Comment 4 Takashi Iwai 2025-02-25 07:06:54 UTC
Could you give alsa-info.sh outputs from both working and non-working cases?
Run the script with --no-upload option and use attachments on Bugzilla.
Comment 5 hipcatkiss 2025-02-25 07:42:08 UTC
Created attachment 307710 [details]
alsa-info on the good kernel
Comment 6 hipcatkiss 2025-02-25 07:46:34 UTC
Created attachment 307711 [details]
alsa-info on the bad kernel
Comment 7 Takashi Iwai 2025-02-25 12:26:27 UTC
Thanks.  Please try to pass model=1043:1271 option to snd-hda-intel module, e.g. boot with snd_hda_intel.model=1043:1271 boot option.

The problem is that a wrong quirk was used for your model and this leaded to two built-in mics.  In the earlier kernels, it casually worked because the right one was picked up the first device, but after the fix commit for another bug, a wrong one was surfaced as the primary mic.

The option above applies a different quirk for another ASUS model, and it should fit better.

If this is confirmed to work, I'll make a proper patch.
Comment 8 hipcatkiss 2025-02-25 12:49:45 UTC
(In reply to Takashi Iwai from comment #7)
> If this is confirmed to work, I'll make a proper patch.

Your solution works for me. Thank you for the work.
Comment 9 Takashi Iwai 2025-02-25 13:00:45 UTC
Good to hear!  Below is the fix patch.
Comment 10 Takashi Iwai 2025-02-25 13:01:04 UTC
Created attachment 307712 [details]
Fix patch
Comment 11 hipcatkiss 2025-02-25 15:36:33 UTC
The patch cannot be applied to the stable/linux-6.6.y branch. Manual application resulted in the patch below

diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index abe3d5b9b84b..222e109c10eb 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -10084,6 +10084,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
 	SND_PCI_QUIRK(0x1043, 0x13b0, "ASUS Z550SA", ALC256_FIXUP_ASUS_MIC),
 	SND_PCI_QUIRK(0x1043, 0x1427, "Asus Zenbook UX31E", ALC269VB_FIXUP_ASUS_ZENBOOK),
 	SND_PCI_QUIRK(0x1043, 0x1433, "ASUS GX650P", ALC285_FIXUP_ASUS_I2C_HEADSET_MIC),
+	SND_PCI_QUIRK(0x1043, 0x1460, "Asus VivoBook 15", ALC256_FIXUP_ASUS_MIC_NO_PRESENCE),
 	SND_PCI_QUIRK(0x1043, 0x1463, "Asus GA402X", ALC285_FIXUP_ASUS_I2C_HEADSET_MIC),
 	SND_PCI_QUIRK(0x1043, 0x1473, "ASUS GU604V", ALC285_FIXUP_ASUS_HEADSET_MIC),
 	SND_PCI_QUIRK(0x1043, 0x1483, "ASUS GU603V", ALC285_FIXUP_ASUS_HEADSET_MIC),

The patch works for me.
Comment 12 hipcatkiss 2025-02-25 15:39:45 UTC
Created attachment 307713 [details]
stable/linux-6.6.y patch

Pasting the patch as a comment turned out to be a bad idea due to line wrapping.

Note You need to log in before you can comment on or make changes to this bug.