Repository navigation
Description
Internal DMIC dead with default topology; works with PDM1 variant — Xiaomi Redmi Book 16 2025 (TM2415)
Hardware
| Item | Value |
|---|---|
| Laptop | Xiaomi Redmi Book 16 2025 (2.5K) |
| Board | TM2415, subsystem 1d72:2415 |
| BIOS | RMARP6B2P0101 |
| Audio controller | Intel Raptor Lake-P/U/H cAVS 8086:51ca (rev 01), driver sof-audio-pci-intel-tgl |
| Codec | Realtek ALC256 (snd_hda_codec_alc269) |
Software
- Manjaro Linux, kernel
7.1.8-1-MANJARO - sof-firmware
2025.12.2(firmware ABI3:22:1, kernel ABI3:23:1) - PipeWire
1.6.8/ WirePlumber
Symptoms
NHLT advertises 2 DMICs:
sof-audio-pci-intel-tgl 0000:00:1f.3: DMICs detected in NHLT tables: 2
sof-audio-pci-intel-tgl 0000:00:1f.3: loading topology: intel/sof-tplg/sof-hda-generic-2ch.tplg
The internal digital microphones appear as a working capture device
(skl_hda_dsp_generic.HiFi__Mic1__source, PCM6), but capture yields no acoustic data:
a full-scale (32768) pop at stream open, then only a noise floor around ±52 LSB (~-56 dBFS).
Per-second analysis of a 6 s recording from the DMIC source:
sec0: peak=32768 <- stream-open pop
sec1..4: peak<=52 <- noise floor, zero acoustic content
The analog path is a red herring on this machine: the ALC256 autoconfig input
(Mic=0x19) is the external headset-jack mic only; the internal mics are not wired to
any codec pin. Booting legacy HDA (snd_intel_dspcfg.dsp_driver=1) exposes just the
headset jack and confirms there is no codec-side internal microphone.
Workaround (verified)
Selecting the PDM1 variant of the same topology makes the array work immediately:
cp /usr/lib/firmware/intel/sof-tplg/sof-hda-generic-2ch-pdm1.tplg \
/usr/lib/firmware/intel/sof-tplg/sof-hda-generic-2ch.tplg
rebootAfter this, the same DMIC source captures real audio (speech peaks up to full scale,
healthy RMS in every second of the recording).
Root cause hypothesis
The physical DMIC array on this board is wired to PDM1, while
sof-hda-generic-2ch (chosen by the dmic-count heuristic from NHLT) wires its DMIC
pipeline to PDM0. The NHLT blob apparently does not carry usable PDM-port
information for the topology chooser, so the wrong variant is picked.
Possible upstream directions:
- honor NHLT DMIC link/PDM details when selecting the generic topology
(e.g., extend thesof_use_tplg_nhltpath), or - add a platform quirk for TM2415 / subsystem
1d72:2415.
Happy to test patches or collect additional debug info (NHLT dump, sof-logger trace,
alsa-info) on request.
Activity
kv2019i commentedon Aug 25, 2026
Thank you @mpa3b for the report. I think this is first such case with a dmic connected to PDM1 on a HDA product, so we have no existing quirk mechanism in upstream kernel for this. We do have multiple I2S codec based products, but for HDA, some new quirk functionality is needed to Linux kernel side.
UPDATE: edit, actually, not first, there was this #4099
kv2019i commentedon Aug 25, 2026
@mpa3b Can you try the patch at #5895 ?
And please provide output of "sudo dmidecode -t system".
You might need to fix the DMI match strings in the patch (they need to match exactly) to match dmidecode output.
ASoC: SOF: Intel: hda: add quirk for Xiaomi Redmi Book 16 with PDM1 dmic
bardliao commentedon Aug 28, 2026
@mpa3b Can you try
options snd_sof feature_topologies=sof-hda-generic-2ch-pdm1.tplg?