Bug Report: No Analog Audio Output with SOF on Intel Tiger Lake + SoundWire Codec
Summary: Analog audio output is not available on an Intel Tiger Lake system using Sound Open Firmware (SOF). HDMI outputs work, but the internal analog codec (likely Realtek via SoundWire) is not detected or bound.
System Info:
- Distro: Ubuntu 24.04 LTS
- Kernel: 6.11.0-26-generic (installed via mainline)
- Firmware: Reinstalled linux-firmware (version 20240318.git3b128b60-0ubuntu2.12)
- Audio Driver: sof-hda-dsp loaded successfully
- Device: Intel Smart Sound Technology (Tiger Lake-LP)
Troubleshooting Steps Taken:
- Installed latest kernel using mainline
- Forced SOF driver via snd-intel-dspcfg.dsp_driver=3
- Verified SOF firmware loads (sof-tgl.ri)
- Verified HDMI devices appear (pactl list short sinks, aplay -l)
- Installed latest alsa-ucm-conf and linux-firmware
- PipeWire & WirePlumber restarted
- Analog audio (e.g., analog-stereo) never appears
Key dmesg Output:
sof-audio-pci-intel-tgl 0000:00:1f.3: No SoundWire machine driver found for the ACPI-reported configuration soundwire sdw-master-0-0: Slave Entry not found soundwire sdw-master-0-1: Slave Entry not found sof-audio-pci-intel-tgl 0000:00:1f.3: hda codecs found, mask 4 sof-audio-pci-intel-tgl 0000:00:1f.3: using HDA machine driver skl_hda_dsp_generic now
Problem:
No analog-stereo sink is exposed in PipeWire. No SoundWire codec is successfully bound, despite SOF being active and firmware loading correctly. Realtek codec is likely present via SoundWire but unsupported or missing UCM config.
Can you attach the file generated by alsa-info.sh --no-upload?
Can you also rename sof-dyndbg.conf.txt to sof-dyndbg.conf and put it in the /etc/modprobe.d/ folder and share the full dmesg log after rebooting?
Is this a chromebook or a Windows laptop converted to run Linux? The kernel log fragment tells that there is no SoundWire or analog HDA codec present in the system.
@bardliao, FYI
@Christodoulos123 Slave Entry not found means the ACPI ADR of the codecs are not in your AVPI table. Please get the dmesg log with debug trace enabled as @ujfalusi mentioned to know the codec address exactly. You may need to add the ACPI ADR manually if your BIOS doesn't support the codecs.
https://github.com/thesofproject/acpi-scripts
@ujfalusi I've attached the following files:
- alsa-info.txt (generated with alsa-info.sh --no-upload)
- dmesg_after_sof_debug.txt (after rebooting with debug flags) alsa-info.txt dmesg_after_sof_debug.txt
I also added /etc/modprobe.d/sof-dyndbg.conf with the following content: options snd_sof sof_debug=1 sof_debug_check fw_trace=0x3ff
This is a dual-boot Windows laptop, not a Chromebook. Let me know if you need anything else, thank you.
@Christodoulos123, please drop the snd_intel_dspcfg.dsp_driver=1 parameter (or replace it with snd_intel_dspcfg.dsp_driver=3, if you force legacy HDA driver we cannot see the soundwire related prints.
It looks like this is a NUC M15 laptop kit and the audio should be using Realtek ALC711 (speaker + audio jack) and 4 DMICs.
@bardliao, fyi
@ujfalusi How did you know it is a NUC M15 laptop? According to the DMI information, the manufacturer is BLEU JOUR.
!!DMI Information
!!---------------
Manufacturer: BLEU JOUR
Product Name: EVO
Product Version: M28198-502
Firmware Version: BCTGL357.0075.2022.0513.1246
System SKU: BBC510BCBXBC2
Board Vendor: Intel Corporation
Board Name: LAPBC510
And according to @Christodoulos123 provided dmesg log
soundwire sdw-master-0-0: Slave Entry not found
soundwire sdw-master-0-1: Slave Entry not found
There are 2 SoundWire codecs not just 1.
@Christodoulos123 We do need the "SDW Slave Addr:" log in the dmesg to know what the codecs are exactly.
I still think the best way to fix the issue is to add the proper SDW ADR to the ACPI table https://github.com/thesofproject/acpi-scripts. But it seems have some incorrect SDW ADRs in the ACPI table. We may convert them to the correct one by adding DMI quirk. See https://github.com/thesofproject/linux/blob/topic/sof-dev/drivers/soundwire/dmi-quirks.c
!!ACPI SoundWire Device Status Information
!!---------------
Realtek 0x000010025d070100
Realtek 0x000110025d070100
Realtek 0x000210025d070100
Realtek 0x000310025d070100
Realtek 0x000010025d070000
Realtek 0x000110025d070000
Realtek 0x000210025d070000
Realtek 0x000310025d070000
@ujfalusi I've attached the updated alsa-info.txt and dmesg_after_dsp3.txt after switching to snd_intel_dspcfg.dsp_driver=3 as requested.
@bardliao I checked the dmesg logs using grep "SDW Slave Addr" and grep -i sdw, but there are no SDW Slave Addr: entries. Here's the full output I got:
[ 3.155525] soundwire sdw-master-0-1: Slave Entry not found
[ 3.155545] soundwire sdw-master-0-0: Slave Entry not found
[ 3.156235] soundwire sdw:0:1:025d:1308:00:0: PARITY error detected before INT mask is enabled
[ 3.156353] soundwire sdw:0:0:025d:0711:00:0: PARITY error detected before INT mask is enabled
@bardliao, https://duckduckgo.com/?t=ffab&q=BBC510BCBXBC2&atb=v352-1&ia=web
@Christodoulos123 It seems the sof-dyndbg.conf didn't enable properly. If you look at the code, dev_err(bus->dev, "Slave Entry not found\n");, is inside sdw_program_device_num and before sdw_program_device_num is called the driver calls dev_dbg(bus->dev, "Slave attached, programming device number\n");. Luckily, the parity error happened and we can get the codecs there.
[ 3.156235] soundwire sdw:0:1:025d:1308:00:0: PARITY error detected before INT mask is enabled
[ 3.156353] soundwire sdw:0:0:025d:0711:00:0: PARITY error detected before INT mask is enabled
And more Luckly, the config is the same as a HP laptop.
Please clone https://github.com/thesofproject/acpi-scripts.git on your device.
git clone https://github.com/thesofproject/acpi-scripts.git
And follow the instruction of https://github.com/thesofproject/acpi-scripts to add TGL/HP-spectre-360.asl to your device.
Basically, what you need is:
sudo ./install_hooks
sudo acpi-add TGL/HP-spectre-360.asl
Then reboot and get the dmesg again.
@bardliao I followed your suggestion and applied TGL/HP-spectre-360.asl using acpi-add. The "Slave Entry not found" messages are gone, but now I'm getting topology load errors. Here's my full dmesg after reboot.
@Christodoulos123 Good, looks like we made some progress. And the issue seems to be related to the HDMI. However, I can't get what happened exactly without the debug level dmesg.
[ 3.280459] sof-audio-pci-intel-tgl 0000:00:1f.3: error: can't connect DAI HDA3.OUT stream iDisp4
[ 3.280463] sof-audio-pci-intel-tgl 0000:00:1f.3: failed to add widget type 27 name : HDA3.OUT stream iDisp4
[ 3.280591] sof_sdw sof_sdw: ASoC: failed to load widget HDA3.OUT
[ 3.280593] sof_sdw sof_sdw: ASoC: topology: could not load header: -22
[ 3.280614] sof-audio-pci-intel-tgl 0000:00:1f.3: error: tplg component load failed -22
[ 3.280620] sof-audio-pci-intel-tgl 0000:00:1f.3: error: failed to load DSP topology -22
[ 3.280622] sof-audio-pci-intel-tgl 0000:00:1f.3: ASoC: error at snd_soc_component_probe on 0000:00:1f.3: -22
[ 3.281310] sof_sdw sof_sdw: ASoC: failed to instantiate card -22
[ 3.281706] iwlwifi 0000:00:14.3 wlo1: renamed from wlan0
[ 3.282191] sof_sdw sof_sdw: error -EINVAL: snd_soc_register_card failed -22
[ 3.282214] sof_sdw sof_sdw: probe with driver sof_sdw failed with error -22
Could you double check the https://github.com/user-attachments/files/19363599/sof-dyndbg.conf.txt is renamed to sof-dyndbg.conf and in your laptop's /etc/modprobe.d/ folder? And you have to reboot your laptop after putting the sof-dyndbg.conf in the /etc/modprobe.d/ folder.
Please also run alsa-info after the above procedure and provide the output.
and also the full dmesg with the dyndbg. My guess is that the IDs do not match up with the topology and the iDisp dais
Here are the files: cat /etc/modprobe.d/sof-dyndbg.conf options snd_sof sof_debug=1 sof_debug_check fw_trace=0x3ff
alsa-info.txt dmesg_debug_enabled.txt
thank you for the continuing help
@Christodoulos123, the /etc/modprobe.d/sof-dyndbg.conf should contain 103 lines.
I'm not sure from where the sof_debug_check fw_trace=0x3ff is coming from, but we don't have these module options...
sorry about that, i placed the correct /etc/modprobe.d/sof-dyndbg.conf containing 103 lines dmesg_debug_enabled.txt
@bardliao, from where this ALH514.OUT coming from? I cannot see it in /lib/firmware/intel/sof-tplg/sof-tgl-rt711-rt1308-4ch.tplg
/usr/lib/firmware/intel/sof-tplg/sof-tgl-rt711-rt1308-4ch.tplg is owned by sof-firmware 2025.05-1
@Christodoulos123, what is the version of sof-firmware (sof-bin) on your setup?
I don’t have the sof-firmware package installed via APT (dpkg -l | grep sof-firmware returns nothing), but the SOF firmware is present in /lib/firmware/intel/sof/, including sof-tgl.ri.zst.
@Christodoulos123, I think ubuntu calls the package firmware-sof-signed
@bardliao, from where this
ALH514.OUTcoming from? I cannot see it in /lib/firmware/intel/sof-tplg/sof-tgl-rt711-rt1308-4ch.tplg
That is from IPC3 topology and 514 means (sdw link 2 * 256 + pin 2). For IPC3 topologies, you may need to refer to the stable-v2.2 branch
@bardliao, I have checked the installed topology and it does not show alh514: tplgtool2.py -D /tmp -d graph,pcm /lib/firmware/intel/sof-tplg/sof-tgl-rt711-rt1308-4ch.tplg
@ujfalusi You are right. Looking at the code. https://github.com/thesofproject/sof/blob/stable-v2.2/tools/topology/topology1/sof-tgl-rt711-rt1308.m4#L34 And "sof-tgl-rt711-rt1308;sof-tgl-rt711-rt1308-4ch;-DCHANNELS=4;-DEXT_AMP;-DDMICPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_48khz.m4;-DDMIC16KPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_16khz.m4;-DPLATFORM=tgl" in https://github.com/thesofproject/sof/blob/stable-v2.2/tools/topology/topology1/CMakeLists.txt#L145
The AMP_1_LINK is supposed to be 1 since it is the default value.
@Christodoulos123 Could you try https://github.com/thesofproject/sof-bin/blob/main/v2.2.x/sof-tplg-v2.2/sof-tgl-rt711-rt1308-4ch.tplg?
@bardliao, interesting that topology has PCM for a fourth HDMI? We only create idisp0-3. I don't know what UCM will do does with this as the sof-soundwire anticipate only three HDMI PCMs...
@ujfalusi Yes, we set the SOF_SDW_TGL_HDMI quirk and create 4 HDMI links for TGL devices.
@Christodoulos123 Can you add options snd_soc_sof_sdw quirk=0x21 to /etc/modprobe.d/alsa-base.conf and reboot the device ?
Thanks a lot, audio is finally working now I added options snd_soc_sof_sdw quirk=0x21 to /etc/modprobe.d/alsa-base.conf, rebooted, and everything initialized correctly. Internal speakers and headphones are functional now.
@Christodoulos123 Could you share the output of sudo dmidecode so that we can add the options snd_soc_sof_sdw quirk=0x21 to the kernel?