Skip to content

Bug Report: No SoundWire machine driver match for Dell XPS 13 DX13260 (Wildcat Lake) — CS35L56 speaker amps run unpatched/uncalibrated #5918

Open

Description

@frankkreutzer

Summary

On a Dell XPS 13 DX13260 (Intel Wildcat Lake platform), the internal speaker amplifiers (Cirrus Logic CS35L56, SoundWire) initialize with base firmware but never receive the DSP calibration/tuning patch. The kernel falls back to a default/generic SoundWire machine driver because no machine-driver quirk matches this laptop's ACPI-reported configuration. Result: internal speaker audio is present but quiet and shallow — no bass shaping, no loudness curve, no excursion-protected max volume — consistent with the amps running on unpatched factory OTP defaults.

System Information
Model: Dell XPS 13 DX13260
Baseboard: 0865D8
Platform: Intel Wildcat Lake (Panther Lake family, "Core Series 3")
Audio PCI device: sof-audio-pci-intel-ptl 0000:00:1f.3
Sound card: sofsoundwire (SOF SoundWire)
SoundWire modalias: sdw:m01FAp4243v03c01
Speaker amps: 2x Cirrus Logic CS35L56 (spi-cs35l56-left, spi-cs35l56-right), Rev B2, OTP1
Amp firmware: fw:4.2.1 (patched=0) — base firmware loaded, calibration patch NOT applied
Also present: Cirrus Logic CS42L43 (combo codec, on SoundWire link)
OS: Kubuntu 26.04.1 LTS ("resolute")
Kernel: 7.0.0-31-generic
Expected Behavior

The kernel should match this laptop's ACPI-reported SoundWire configuration to a Dell-specific machine driver, which would request the correct cirrus/cs35l56-* .wmfw/.bin calibration files for this board and apply them to the CS35L56 amps, producing full-range, properly tuned speaker output (as on Windows).

Actual Behavior

The kernel logs a fallback and no calibration firmware is ever requested:

sof-audio-pci-intel-ptl 0000:00:1f.3: SoundWire enabled on CannonLake+ platform, using SOF driver
sof-audio-pci-intel-ptl 0000:00:1f.3: No SoundWire machine driver found for the ACPI-reported configuration:
sof-audio-pci-intel-ptl 0000:00:1f.3: Use SoundWire default machine driver with function topologies
cs35l56 spi-cs35l56-left: Cirrus Logic CS35L56 Rev B2 OTP1 fw:4.2.1 (patched=0)
cs35l56 spi-cs35l56-right: Cirrus Logic CS35L56 Rev B2 OTP1 fw:4.2.1 (patched=0)
sof_sdw sof_sdw: Setting CS42L43 Speaker volume limit to 128

sudo dmesg | grep -i -E "request_firmware|cirrus/|wmfw|.bin" returns no entries related to cirrus/ calibration files — confirming the driver never attempts to load one, rather than a load failure. /lib/firmware/cirrus/ on this system contains only one Rev B2 calibration set (cs35l56-b2-dsp1-misc-10280dd6-*), which does not correspond to this board's subsystem ID, further indicating no calibration package exists yet for this specific Dell SKU.

Playback device sofsoundwire, device 2: Speaker is present and functional at the ALSA level (aplay -l), but audio output is noticeably quiet and lacks low-end/bass compared to the same laptop under Windows.

Steps to Reproduce
Boot Kubuntu 26.04.1 (kernel 7.0.0-31-generic) on a Dell XPS 13 DX13260.
Play any audio through the internal speakers.
Observe reduced volume and shallow/flat tonal quality vs. Windows on the same hardware.
Check dmesg for the "No SoundWire machine driver found" message and fw:...(patched=0) on both CS35L56 amps.
Diagnostics Already Performed (ruled out)
Not a mixer/volume/profile issue — pavucontrol/PipeWire levels checked, no clipping or hidden low caps.
Not a missing SOF firmware issue — SOF DSP firmware itself loads fine; only the amp-specific calibration patch is affected.
Not a BIOS/firmware issue — fwupdmgr reports no updates available for any component.
Not a stale linux-firmware package — /lib/firmware/cirrus/ contains many CS35L56 calibration sets for other Dell/HP/Lenovo boards, just none matching this SKU/revision.
Confirmed this matches a known class of issue on Wildcat Lake: per a related upstream report (#5832, different codec vendor, same platform), an Intel SOF maintainer confirmed the codec/amp vendor must upstream a machine-driver match in sound/soc/sdw_utils/soc_sdw_utils.c before the correct topology/calibration path can be used — this is not fixable via firmware packages or userspace audio configuration.
Suspected Root Cause

Missing machine-driver quirk / ACPI match entry for this Dell XPS 13 DX13260 SoundWire configuration in the kernel's SOF/ASoC SoundWire machine driver table, and/or missing corresponding Dell-specific CS35L56 calibration (.wmfw/.bin) files in linux-firmware. Likely a case of hardware (Wildcat Lake, launched ~April 2026) shipping ahead of upstream driver/firmware support.

Requested Action
Add/upstream the SoundWire machine-driver match for this board's ACPI configuration (SoundWire modalias sdw:m01FAp4243v03c01, board ID 0865D8).
Publish/package the corresponding CS35L56 calibration files for this Dell SKU in linux-firmware.
Additional Notes

Happy to provide further diagnostics (full dmesg, acpidump, sof-ctl topology dump, etc.) on request — please let me know what would help triage this.

Activity

  1. DudeBro-79 commented on Sep 5, 2026

    @DudeBro-79

    audio debug.txt
    cachyos-bugreport.log
    grep.txt
    Same issue on Panther Lake Core Ultra 7 DX13260 on CachyOS.

  2. charleskeepax commented on Sep 7, 2026

    @charleskeepax

    Could you both please attach the output of "lspci -vvvnn"? I suspect just an upgrade of linux-firmware is all that is needed, but that should give me the info to check if firmware is missing for either of these SKUs.

  3. DudeBro-79 commented on Sep 7, 2026

    @DudeBro-79
  4. charleskeepax commented on Sep 7, 2026

    @charleskeepax

    @DudeBro-79 your laptop should be supported. If you look in the WHENCE file in the linux-firmware repo there is an entry to create a symlink for the firmware for your laptop (10280e54). Either your version of linux-firmware is too old (if you don't see an entry for the SSID in the WHENCE file), or the full procedure for installing linux-firmware has not been followed (if you see the entry in WHENCE but no symlink in your firmware directory).

  5. simontrimmer commented on Sep 7, 2026

    @simontrimmer
    Collaborator

    @DudeBro-79 - May I also request some additional debug output? Could you place :

    options spi_cs42l43 dyndbg=+pmf
    options snd-soc-cs35l56 dyndbg=+pmf
    options snd_soc_cs35l56_shared dyndbg=+pmf

    in a file /etc/modprobe.d/dyndbg.conf

    reboot and gather us another dmesg please?

  6. DudeBro-79 commented on Sep 7, 2026

    @DudeBro-79

    forgive me Im a noob so I got some help on your requests from claude. I attached the output. Hopefully its what you were looking for.

    @charleskeepax — WHENCE main has the entries (8911–8919), aliasing the 10280e54 .bins to the 10280e53 set and .wmfw to cs35l56/CS35L56_Rev4.5.9.wmfw. My snapshot is linux-firmware-cirrus 20260810-2, which predates that commit, so I replicated all nine links under /usr/lib/firmware/updates/cirrus/ (link and target both .zst, since Arch ships them compressed).

    Still FIRMWARE_MISSING, because the driver isn't asking for any of those names:

    spi_cs42l43:cs42l43_get_speaker_id_gpios: cs42l43-spi cs42l43-spi: spk-id-gpios = 0
    snd_soc_cs35l56_shared:cs35l56_get_speaker_id: cs35l56 spi-cs35l56-left: Speaker ID = 0
    snd_soc_cs35l56:cs35l56_dsp_work: cs35l56 spi-cs35l56-left: DSP fwf name: 'b2-dsp1' system name: '10280e54-spkid0'
    cs35l56 spi-cs35l56-left: FIRMWARE_MISSING
    cs35l56 spi-cs35l56-left: Calibration disabled due to missing firmware controls
    cs35l56 spi-cs35l56-left: Can't read tuning IDs

    Both amps read Speaker ID 0, but no spkid0 set is published for 10280e54 (or for 10280e53). Either the spk-id GPIO decode is wrong for this SKU or a spkid0 variant exists on the Windows side and hasn't been released. I haven't symlinked spkid0 to one of the others — wrong speaker tuning, and it would hide this.

    Since these are SPI-attached amps behind the CS42L43, the missing firmware means bridge mode never enables, so there's no speaker output at all: aplay -l shows only device 2: Speaker (the CS42L43's own path) plus HDMI. The kernel also still logs No SoundWire machine driver found for the ACPI-reported configuration and falls back to function topologies, so I assume the machine-driver match for this SSID is still needed independently.

    Amps: Rev B2 OTP1 fw:4.2.1 (patched=0), SiliconID 0x29da61555baea (left) / 0x29da61555bb60 (right).

    dmesg-dyndbg-fw.txt

  7. charleskeepax commented on Sep 7, 2026

    @charleskeepax

    Hm... yeah we shouldn't be seeing a spkid0 there, so something is amiss.

    Could you try this:
    sudo rmmod snd_soc_pci_intel_ptl
    sudo modprobe snd-soc-pci-intel-ptl

    The first command takes a while and will generate a few errors in the kernel log (apologies, this is a known issue with accessing soundwire registers during driver removal). Then the second command should reprobe the sound card. Could you grab a log after that and fire it over?

    Curious as to if it gets the right GPIO value the second time, or if it consistently fails with spkid0.

  8. DudeBro-79 commented on Sep 7, 2026

    @DudeBro-79

    The 2 commands you gave me errored out. I included what Claude thinks you meant lol.

    52m 56s sudo rmmod snd.txt

    systemctl user stop pipewire.txt

  9. charleskeepax commented on Sep 7, 2026

    @charleskeepax

    Ah sorry typo on my part, the commands should be:

    sudo rmmod snd_sof_pci_intel_ptl
    sudo modprobe snd-sof-pci-intel-ptl

  10. charleskeepax commented on Sep 7, 2026

    @charleskeepax

    Actually the claude version did get us there, will have a think and report back.

  11. DudeBro-79 commented on Sep 7, 2026

    @DudeBro-79

    Awesome, I look forward to hearing back.

  12. charleskeepax commented on Sep 8, 2026

    @charleskeepax

    Ok we have found an issue with the ACPI on this system, we are working out what the best solution is here, but will likely take us a few days.

  13. DudeBro-79 commented on Sep 8, 2026

    @DudeBro-79

    Sound good, thanks for looking into it. Unfortunately I'm having to return this laptop to Dell soon for some issues unrelated to this. I'll hold off for a couple of days in sending it to see if you guys follow up. Thanks for the hard work though!

  14. juanrortiz commented on Sep 13, 2026

    @juanrortiz

    Summary

    Dell XPS 13 DX13260 (Wildcat Lake, Intel Core Ultra) — CS42L43 + 2× CS35L56 SoundWire/SPI speaker path loads without errors but never applies OEM calibration firmware, leaving speakers silent. OEM calibration files for this exact board (subsystem 1028:0e53) exist in linux-firmware under spkid1/spkid2/spkid3 variants, but there is no spkid0 fallback, and this board's DSDT exposes no ACPI mechanism (no _DSD, no dedicated device nodes) for the kernel to determine which variant applies.

    System

    • Laptop: Dell XPS 13 DX13260 (Wildcat Lake)
    • Distro: CachyOS (Arch-based)
    • Kernel: 7.2.2-1-cachyos (also reproduced on subsequent kernel updates)
    • sof-firmware: 2025.12.2-1
    • alsa-ucm-conf: 1.2.16.1-1
    • Audio subsystem ID (lspci -nnk): Subsystem: Dell Device [1028:0e53]

    Hardware topology

    • CS42L43 combo codec on SoundWire (sdw:0:2:01fa:4243:01)
    • 2× CS35L56 speaker amps on SPI (spi-cs35l56-left, spi-cs35l56-right)
    • No SoundWire machine driver match for the ACPI-reported configuration; kernel falls back to "SoundWire default machine driver with function topologies"

    Observed behavior

    On a clean boot (no firmware manually added):

    sof-audio-pci-intel-ptl 0000:00:1f.3: No SoundWire machine driver found for the ACPI-reported configuration:
    sof-audio-pci-intel-ptl 0000:00:1f.3: link 2 mfg_id 0x01fa part_id 0x4243 version 0x3
    sof-audio-pci-intel-ptl 0000:00:1f.3: Use SoundWire default machine driver with function topologies
    ...
    cs35l56 spi-cs35l56-left: Cirrus Logic CS35L56 Rev B2 OTP1 fw:4.2.1 (patched=0)
    cs35l56 spi-cs35l56-right: Cirrus Logic CS35L56 Rev B2 OTP1 fw:4.2.1 (patched=0)
    cs35l56 spi-cs35l56-right: DSP1: Firmware: 1a00d6 vendor: 0x2 v4.2.1, 42 algorithms
    cs35l56 spi-cs35l56-left: DSP1: Firmware: 1a00d6 vendor: 0x2 v4.2.1, 42 algorithms
    cs35l56 spi-cs35l56-right: FIRMWARE_MISSING
    cs35l56 spi-cs35l56-right: Calibration disabled due to missing firmware controls
    cs35l56 spi-cs35l56-right: Can't read tuning IDs
    cs35l56 spi-cs35l56-left: FIRMWARE_MISSING
    cs35l56 spi-cs35l56-left: Calibration disabled due to missing firmware controls
    cs35l56 spi-cs35l56-left: Can't read tuning IDs
    

    sudo dmesg | grep -iE "request_firmware|cirrus/|wmfw" returns nothing — the driver never attempts to load a calibration file for this board, matching or failing.

    At the ALSA/routing level everything downstream is correctly configured and non-fatal: AMPL/AMPR Speaker Switch = on, volume at 370/400 (not muted), cs42l43 Speaker L/R Input correctly routed to DP6RX1/DP6RX2 per the cs42l43-spk UCM profile, speaker-test plays through all periods with zero ALSA-level errors. No audible output at any volume.

    Calibration files exist but are never requested

    /lib/firmware/cirrus/ (from sof-firmware/linux-firmware) already contains files matching this exact subsystem ID:

    cs35l56-b2-dsp1-misc-10280e53-spkid1.wmfw.zst -> cs35l56/CS35L56_Rev4.5.9.wmfw.zst
    cs35l56-b2-dsp1-misc-10280e53-spkid1-ampl.bin.zst
    cs35l56-b2-dsp1-misc-10280e53-spkid1-ampr.bin.zst
    cs35l56-b2-dsp1-misc-10280e53-spkid2-*
    cs35l56-b2-dsp1-misc-10280e53-spkid3-*
    

    There is no spkid0 variant for this ID, and no cs35l56-b2-dsp1-misc-10280e53.wmfw.zst (no-suffix fallback) either.

    ACPI investigation — no speaker-ID mechanism exists on this board

    find /sys -iname "*speaker_id*" returns nothing, and no dmesg line references speaker-ID detection. I disassembled the DSDT (iasl -d) and checked the SPI1 controller scope directly:

    Scope (_SB.PC00.SPI1)
    {
        Name (SPIP, Zero)
        Name (SPIX, Zero)
        Method (_INI, 0, NotSerialized)
        {
            SPIP = SDS7
            SPIX = 0x07
        }
    }
    

    This is the only SPI1-scoped content in the DSDT — there are no child device nodes for the CS35L56 amps at all (no _HID, no _DSD, no per-device properties of any kind). The CS35L56 devices are apparently only being enumerated via generic ASoC/SOF machine-driver inference tied to the CS42L43's SoundWire presence, not via explicit ACPI declaration. This confirms the issue isn't a kernel-side parsing gap — Dell's firmware genuinely does not expose any way to determine speaker ID or amp topology for this board via ACPI.

    Reproduction of a secondary fault (please don't do this — included for diagnostic value only)

    As a manual test, I copied spkid1's .wmfw/.bin files to the no-suffix fallback filenames the driver would use absent a resolvable speaker ID:

    cs35l56-b2-dsp1-misc-10280e53.wmfw.zst
    cs35l56-b2-dsp1-misc-10280e53-ampl.bin.zst
    cs35l56-b2-dsp1-misc-10280e53-ampr.bin.zst
    

    After reboot, this did not restore audio. Instead it introduced an SPI bus fault during probe and broke the whole card (not just the speaker):

    cs35l56 spi-cs35l56-left: Failed to schedule write: -16
    cs35l56 spi-cs35l56-left: ASoC error (-16): at snd_soc_pcm_dai_probe() on cs35l56-asp1
    

    aplay -l then reported no sound card at all. This persisted until the copied files were deleted and initramfs was rebuilt (mkinitcpio -P), confirming the files had also been baked into the initramfs image. This suggests spkid1's calibration/timing parameters are not safely interchangeable with however this specific board's two amps are actually wired, and that guessing at spkid variants isn't a safe workaround for other users hitting this.

    Request

    Since no ACPI-based speaker-ID detection exists on this board (confirmed via DSDT disassembly above), the fix likely needs to be a hardcoded quirk/mapping for Dell subsystem 1028:0e53 to the correct spkid variant, rather than relying on runtime detection. Could someone with visibility into which spkid corresponds to this Dell SKU (Cirrus/Dell likely know this from their OEM calibration submission) confirm the correct mapping, or point to where such a quirk should be added in the SOF/CS35L56 driver?

    Happy to test patches or gather any further diagnostics — this is 100% reproducible on stock CachyOS with current sof-firmware.

  15. DudeBro-79 commented on Sep 13, 2026

    @DudeBro-79

    Interesting, I have a wildcat lake as well(did have pantherlake but wound up sending it back) and speakers have been good the whole time.

  16. charleskeepax commented on Sep 14, 2026

    @charleskeepax

    @DudeBro-79 Could you attach a dmesg from your Wildcat Lake, my expectation would be that it would suffer from the same problem? I guess maybe as it only gets a single GPIO if that model has that GPIO set then it would load spkid1 and work.

  17. DudeBro-79 commented on Sep 14, 2026

    @DudeBro-79

    wildcatlake-dmesg.txt

    Ive not had an issue with this since cachyos 7.1.8. I did try Fedora 44 and it didn't load the second amp so there was no low end. But I've always had audio. Maybe if anything not tuned as well as when windows was briefly installed.

  18. charleskeepax commented on Sep 14, 2026

    @charleskeepax

    Hmm... yeah loads skdid1:

    [ 6.294395] cs35l56 spi-cs35l56-right: DSP1: cirrus/cs35l56-b2-dsp1-misc-10280e53-spkid1.wmfw: format 3 timestamp 0x68d1a788
    [ 6.294400] cs35l56 spi-cs35l56-right: DSP1: cirrus/cs35l56-b2-dsp1-misc-10280e53-spkid1.wmfw: Mon 22 Sep 2025 14:46:15 Central Daylight Time
    [ 6.521414] cs35l56 spi-cs35l56-left: DSP1: cirrus/cs35l56-b2-dsp1-misc-10280e53-spkid1.wmfw: format 3 timestamp 0x68d1a788
    [ 6.521424] cs35l56 spi-cs35l56-left: DSP1: cirrus/cs35l56-b2-dsp1-misc-10280e53-spkid1.wmfw: Mon 22 Sep 2025 14:46:15 Central Daylight Time

    I would be careful and maybe don't turn the volume up too loud until we figure out if this is the right tuning here, we don't know what the second spkid gpio should be reading. If you felt brave you could try Richard's patch from https://bugzilla.kernel.org/show_bug.cgi?id=221956 and see if you still get spkid1 loaded.

  19. DudeBro-79 commented on Sep 14, 2026

    @DudeBro-79

    Patch applied and compiled.

    wildcatlake-patched-dmesg.txt

  20. DudeBro-79 commented on Sep 14, 2026

    @DudeBro-79

    On claude's suggestion I ran de-bug then reran the dmesg.

    wildcatlake-patched-dmesg-v2.txt

  21. charleskeepax commented on Sep 17, 2026

    @charleskeepax

    Ok that looks very promising, we can see it is loading a different tuning now:

    [ 6.133488] cs35l56 spi-cs35l56-right: DSP1: cirrus/cs35l56-b2-dsp1-misc-10280e53-spkid3.wmfw: format 3 timestamp 0x68d1a788
    [ 6.300197] cs35l56 spi-cs35l56-left: DSP1: cirrus/cs35l56-b2-dsp1-misc-10280e53-spkid3.wmfw: format 3 timestamp 0x68d1a788

    Does suggest you should indeed be careful if running a kernel without that patch as the spkid1 tuning it was loading before is clearly the wrong tuning.

  22. DudeBro-79 commented on Sep 18, 2026

    @DudeBro-79

    Looks like the patch is in cachy 7.2.6-1cachyos

    wildcatlake-7.2.6-full-dmesg.txt

  23. charleskeepax commented on Sep 18, 2026

    @charleskeepax

    I don't think the patch is merged there, and if you look through the log you will see it is still loading spkid1 rather than 3, so do still continue to be careful with the volumes for now :-)

  24. juanrortiz commented on Sep 19, 2026

    @juanrortiz

    I di Richard's patch from bugzilla on 7.2.6-1-cachyos-gcc and i have working audio now.

    I'll keep audio low,out of caution atleast until this patch is officially pushed to the kernel

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