Skip to content

[BUG] MTL Lenovo Yoga 7 14IML9 (ALC287, 17aa:38db): speaker click when DMIC-only capture runtime-resumes the codec #6022

Open

Description

@thebrahman

Summary

On a Lenovo Yoga 7 2-in-1 14IML9 (Meteor Lake, ALC287), the internal speakers give an audible click/pop when audio starts after the device has runtime-suspended. It is most noticeable when only the DMIC is opened (e.g. starting voice dictation), with nothing playing: opening a DMIC capture resumes the controller, which also resumes the ALC287 codec and powers up the speaker path.

The click is intermittent from the user's point of view only because it requires the device to be runtime-suspended first. If audio was used within the last couple of seconds, there is no click.

The codec has no model-specific quirk for this subsystem ID: the driver logs ALC287: picked fixup (pin match) with an empty fixup name, so the generic power-up sequencing is used.

Hardware / software

Machine Lenovo Yoga 7 2-in-1 14IML9 (83DJ), BIOS NWCN24WW, board LNVNB161216
CPU Intel Core Ultra 7 155H (Meteor Lake-P)
Codec Realtek ALC287, vendor 0x10ec0287, subsystem 0x17aa38db, rev 0x100002
Driver sof-audio-pci-intel-mtl, machine driver skl_hda_dsp_generic, DMIC x2 (NHLT)
Firmware intel/sof-ipc4/mtl/sof-mtl.ri, booted version 2.15.0.1 (sof-firmware 2026.09.2)
Topology intel/sof-ipc4-tplg/sof-hda-generic-2ch.tplg (ABI 3:29:1, kernel ABI 3:23:1)
Kernel 7.2.15 (Arch-based distro kernel)
Userspace PipeWire / WirePlumber 1.6.9, alsa-ucm-conf 1.2.16.1

Runtime PM is at defaults: PCI device 0000:00:1f.3 control=auto, autosuspend_delay_ms=2000; codec ehdaudio0D0 control=auto, autosuspend_delay_ms=1000.

Boot log:

snd_hda_codec_alc269 ehdaudio0D0: ALC287: picked fixup  (pin match)
snd_hda_codec_alc269 ehdaudio0D0: autoconfig for ALC287: line_outs=1 (0x17/0x0/0x0/0x0/0x0) type:speaker
snd_hda_codec_alc269 ehdaudio0D0:    hp_outs=1 (0x21/0x0/0x0/0x0/0x0)
snd_hda_codec_alc269 ehdaudio0D0:      Mic=0x19

Steps to reproduce

  1. Leave audio idle until both the PCI device and ehdaudio0D0 are suspended.
  2. Open a capture on the DMIC only, nothing playing:
    pw-record --target alsa_input.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__Mic1__source out.wav
    
  3. A click is heard from the internal speakers.

Polling runtime_status every 50 ms during a 2 s DMIC-only capture:

t=0ms     pci=suspended  alc287=suspended
t=100ms   pci=resuming   alc287=suspended
t=200ms   pci=active     alc287=active      <- speaker codec resumed, though only DMIC is in use
t=1250ms  pci=active     alc287=suspended

Nothing is logged in the kernel log during the transition.

Expected

No audible click from the speakers when the device resumes, and ideally the ALC287 codec should not need to resume at all for a DMIC-only capture.

Notes

  • I haven't yet separated whether the click is on codec resume, codec suspend, or both. The resume at ~200 ms matches when it is heard.
  • Setting ehdaudio0D0/power/control to on is the obvious workaround, but it keeps the DSP and controller out of runtime suspend permanently. That is a poor trade on a laptop, so I'd prefer a sequencing fix (e.g. a model quirk for 17aa:38db), or avoiding the codec resume for DMIC-only streams.
  • Happy to test patches or gather alsa-info.sh output / SOF debug logs.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions