sof icon indicating copy to clipboard operation
sof copied to clipboard

[BUG] ThinkPad X1 Carbon Gen 13 (LNL) - Topology fails due to DMIC mismatch (RT713-L0 + RT1318-L1, no DMICs)

Open janitooor opened this issue 1 month ago • 3 comments

Describe the bug

On ThinkPad X1 Carbon Gen 13 (Lunar Lake) with RT713 + RT1318 SoundWire codecs, the topology sof-lnl-rt713-l0-rt1318-l1-2ch.tplg fails to load because it includes DMIC widgets, but the hardware has no DMICs according to NHLT tables.

The driver reports "DMICs detected in NHLT tables: 0" but the topology expects 2-channel PCH-attached DMICs, causing the topology load to fail with error -22 (EINVAL).

To Reproduce

  1. Boot ThinkPad X1 Carbon Gen 13 (21NSCTO1WW) with Lunar Lake CPU
  2. Ensure sof-bin firmware is installed (tested with v2.13 / 2025.05.1)
  3. Check sudo dmesg | grep -i sof

Reproduction Rate

100% - Every boot

Expected behavior

Sound card should initialize. Either:

  1. A no-DMIC topology variant should exist for this hardware configuration
  2. The driver should select a topology based on NHLT DMIC count

Impact

Showstopper - No audio output or input. Sound card fails to initialize.

Environment

  1. Kernel/SOF versions:
    • Kernel: 6.16.12+deb13-amd64 (Devuan)
    • SOF: sof-bin v2.13 (2025.05.1)
  2. Topology file:
    • Requested: intel/sof-ipc4-tplg/sof-lnl-rt713-l0-rt1318-l1.tplg
    • Symlinked to: sof-lnl-rt713-l0-rt1318-l1-2ch.tplg
  3. Platform:
    • ThinkPad 21NSCTO1WW (X1 Carbon Gen 13)
    • Intel Lunar Lake CPU
    • Audio Controller: Intel Lunar Lake-M HD Audio Controller [8086:a828]
    • Subsystem: Lenovo [17aa:2339]

Hardware Configuration

Codecs detected:
- RT713 on SoundWire Link 0 (headphone jack/audio)
- RT1318 on SoundWire Link 1 (speaker amplifier)

NHLT Tables:
- DMICs detected: 0 (NONE)
- BT link detected: 0x4
- HDA codecs found, mask 4

Console output

[   23.820064] sof-audio-pci-intel-lnl 0000:00:1f.3: enabling device (0004 -> 0006)
[   23.820263] sof-audio-pci-intel-lnl 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if 0x040100
[   24.282295] sof-audio-pci-intel-lnl 0000:00:1f.3: bound 0000:00:02.0 (ops intel_audio_component_bind_ops [xe])
[   24.289433] sof-audio-pci-intel-lnl 0000:00:1f.3: use msi interrupt mode
[   24.319601] sof-audio-pci-intel-lnl 0000:00:1f.3: hda codecs found, mask 4
[   24.319608] sof-audio-pci-intel-lnl 0000:00:1f.3: BT link detected in NHLT tables: 0x0
[   24.319611] sof-audio-pci-intel-lnl 0000:00:1f.3: DMICs detected in NHLT tables: 0
[   24.322756] sof-audio-pci-intel-lnl 0000:00:1f.3: Firmware paths/files for ipc type 1:
[   24.322761] sof-audio-pci-intel-lnl 0000:00:1f.3:  Firmware file:     intel/sof-ipc4/lnl/sof-lnl.ri
[   24.322762] sof-audio-pci-intel-lnl 0000:00:1f.3:  Firmware lib path: intel/sof-ipc4-lib/lnl
[   24.322763] sof-audio-pci-intel-lnl 0000:00:1f.3:  Topology file:     intel/sof-ipc4-tplg/sof-lnl-rt713-l0-rt1318-l1.tplg
[   24.323505] sof-audio-pci-intel-lnl 0000:00:1f.3: Loaded firmware library: ADSPFW, version: 2.13.0.1
[   24.599008] sof-audio-pci-intel-lnl 0000:00:1f.3: firmware: failed to load intel/sof-ipc4/lnl/sof-lnl-openmodules.ri (-2)
[   24.599033] sof-audio-pci-intel-lnl 0000:00:1f.3: firmware: failed to load intel/sof-ipc4/lnl/sof-lnl-openmodules.ri (-2)
[   24.599044] sof-audio-pci-intel-lnl 0000:00:1f.3: firmware: failed to load intel/sof-ipc4/lnl/sof-lnl-openmodules.ri (-2)
[   24.599063] sof-audio-pci-intel-lnl 0000:00:1f.3: firmware: failed to load intel/sof-ipc4/lnl/sof-lnl-debug.ri (-2)
[   24.599073] sof-audio-pci-intel-lnl 0000:00:1f.3: firmware: failed to load intel/sof-ipc4/lnl/sof-lnl-debug.ri (-2)
[   24.599082] sof-audio-pci-intel-lnl 0000:00:1f.3: firmware: failed to load intel/sof-ipc4/lnl/sof-lnl-debug.ri (-2)
[   24.601665] sof-audio-pci-intel-lnl 0000:00:1f.3: Booted firmware version: 2.13.0.1
[   24.648016] sof-audio-pci-intel-lnl 0000:00:1f.3: Topology: ABI 3:29:1 Kernel ABI 3:23:1
[   24.648290] sof-audio-pci-intel-lnl 0000:00:1f.3: error: can't connect DAI dai-copier.DMIC.dmic01.capture stream dmic01
[   24.648334] sof-audio-pci-intel-lnl 0000:00:1f.3: failed to add widget type 28 name : dai-copier.DMIC.dmic01.capture stream dmic01
[   24.648356] sof_sdw sof_sdw: ASoC: failed to load widget dai-copier.DMIC.dmic01.capture
[   24.648369] sof_sdw sof_sdw: ASoC: topology: could not load header: -22
[   24.648407] sof-audio-pci-intel-lnl 0000:00:1f.3: tplg intel/sof-ipc4-tplg/sof-lnl-rt713-l0-rt1318-l1.tplg component load failed -22
[   24.648423] sof-audio-pci-intel-lnl 0000:00:1f.3: error: failed to load DSP topology -22
[   24.648435] sof-audio-pci-intel-lnl 0000:00:1f.3: ASoC error (-22): at snd_soc_component_probe() on 0000:00:1f.3
[   24.648468] sof_sdw sof_sdw: ASoC: failed to instantiate card -22
[   24.648589] sof_sdw sof_sdw: error -EINVAL: snd_soc_register_card failed -22
[   24.648627] sof_sdw sof_sdw: probe with driver sof_sdw failed with error -22

Note: The sof-lnl-openmodules.ri and sof-lnl-debug.ri failures are expected (optional debug modules).

Analysis

The original PR #9550 that added RT713/RT1318 support for LNL specifies "2ch PCH-attached DMICs" in the commit message. However, not all ThinkPad X1 Gen 13 variants have DMICs - this unit reports 0 DMICs in NHLT.

Available RT713/RT1318 topologies in sof-bin v2.13:

  • sof-lnl-rt713-l0-rt1318-l1.tplg → symlink to -2ch variant
  • sof-lnl-rt713-l0-rt1318-l1-2ch.tplg - Includes DMIC widgets (incompatible with no-DMIC hardware)

No 0-channel DMIC variant exists for this codec configuration.

Other LNL topologies available (for reference):

  • sof-lnl-rt713-l2-rt1320-l13.tplg
  • sof-lnl-rt1318-l12-rt714-l0.tplg
  • sof-lnl-rt712-l2-rt1320-l1.tplg
  • Various cs42l43 configurations (some with -2ch/-4ch variants)

Proposed Fix

  1. Add a no-DMIC topology variant: sof-lnl-rt713-l0-rt1318-l1-0ch.tplg or similar
  2. Alternatively, modify the driver/topology selection logic to account for NHLT DMIC count when selecting the topology file

Workarounds Attempted

  1. Kernel parameter snd_sof_intel_hda_common.dmic_num=0 - No effect (topology selection happens before this is checked)

  2. Potential workaround (untested): Manually create a no-DMIC topology by stripping DMIC widgets from the existing topology using sof-tplgreader tools

  3. Possible kernel parameter override for topology filename - Needs investigation:

    snd_sof_intel_lnl.tplg_filename=<alternative>
    

    However, no suitable alternative topology exists for RT713-L0 + RT1318-L1 without DMIC.

Related Issues

  • #9681 - Same hardware platform (ThinkPad X1G13 with RT713/RT1318) - but their unit has DMICs and topology loads successfully. This confirms the topology works when DMIC hardware is present. Our issue is specifically the no-DMIC variant.
  • #9550 - Original PR adding RT713/RT1318 LNL support (commit message states "2ch PCH-attached DMICs" - assumes DMICs present)
  • #9690 - PR that added DMIC pre-processing to ACE 1/2/3.x PCH DMIC topologies

Root Cause

The ThinkPad X1 Carbon Gen 13 has hardware variants:

  • Some units have PCH-attached DMICs (2ch) → topology loads fine (#9681)
  • Some units have no DMICs (0ch) → topology fails (this bug)

The topology sof-lnl-rt713-l0-rt1318-l1-2ch.tplg unconditionally includes DMIC widgets regardless of actual hardware presence, causing EINVAL when the DAI can't be connected.

janitooor avatar Nov 29 '25 11:11 janitooor

@janitooor Can you test add tplg in #10410 ? Attaching a prebuilt tplg binary here

sof-lnl-rt713-l0-rt1318-l1-v2.zip

UPDATE: uploaded v2 with fixed HDMI ids.

kv2019i avatar Dec 02 '25 18:12 kv2019i

@janitooor Any update?

kv2019i avatar Dec 08 '25 17:12 kv2019i

@janitooor ?

kv2019i avatar Dec 17 '25 08:12 kv2019i