Skip to content

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

@janitooor

Description

@janitooor

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

Root Cause

The ThinkPad X1 Carbon Gen 13 has hardware variants:

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.

Metadata

Metadata

Assignees

Labels

P2Critical bugs or normal featurestopologyTopology issues

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions