System:
- Dell XPS 17 9710 (replacement motherboard)
- Fedora 44, kernel 6.19.14-300.fc44.x86_64
- BIOS 1.38.0 (December 2025, current)
- alsa-sof-firmware 2025.12.2
Problem:
Internal speakers and headphone jack show as “Dummy Output”. Bluetooth audio works fine.
Root cause identified:
After extensive debugging, the replacement motherboard’s BIOS NHLT (Non-HDA Link Table) ACPI table is missing SoundWire endpoint descriptors. The NHLT only contains 2 endpoints (Bluetooth SSP only) with no Realtek SoundWire vendor IDs. All four SoundWire codecs enumerate on the bus but never attach.
Evidence:
# NHLT has only 2 endpoints, no Realtek SoundWire vendor ID (0x025d):
sudo python3 -c "
with open('/sys/firmware/acpi/tables/NHLT', 'rb') as f:
data = f.read()
ep_count = data[36]
print(f'NHLT endpoint count: {ep_count}')
rt_positions = [i for i in range(len(data)-1) if data[i]==0x5d and data[i+1]==0x02]
print(f'Realtek SDW vendor ID (5d 02) at positions: {rt_positions}')
print(f'Total NHLT size: {len(data)} bytes')
"
# Output:
# NHLT endpoint count: 2
# Realtek SDW vendor ID (5d 02) at positions: []
# Total NHLT size: 753 bytes
# SOF driver confirms no SoundWire in NHLT:
# "DMICs detected in NHLT tables: 0"
# "BT link detected in NHLT tables: 0x4" (Bluetooth only)
# Codecs enumerate but never attach:
cat /sys/bus/soundwire/devices/sdw:0:0:025d:0711:00/status
# UNATTACHED
# All four codecs present but unattached:
ls /sys/bus/soundwire/devices/
# sdw:0:0:025d:0711:00 (rt711 - headset)
# sdw:0:1:025d:1308:00 (rt1308 - speaker L)
# sdw:0:2:025d:1308:00 (rt1308 - speaker R)
# sdw:0:3:025d:0715:00 (rt715 - mic)
# dmesg on every playback attempt:
# soundwire_intel.link.0: Bus clash for control word
# soundwire_intel.link.0: IO transfer timed out
# rt711: DPN_PortCtrl register write failed for port 3
# soundwire sdw-master-0-0: Program transport params failed: -110
What has been tried (all ineffective):
- alsa-sof-firmware — already current
- BIOS version — already current (1.38.0)
- PipeWire/WirePlumber restart and state reset
soundwire_intel sdw_mclk_divider=2and=4- SOF IPC3 → IPC4 switch (
options snd_sof ipc_type=1) — IPC4 loads correctly but physical bus still fails snd_sof_intel_hda_common sof_use_tplg_nhlt=0- Attempted BIOS reflash via USB — BIOS flasher did not detect USB drive, likely blocking same-version reflash (1.38.0 → 1.38.0)
Proposed solution:
Override the broken NHLT via initrd using the kernel’s ACPI_TABLE_UPGRADE facility. This requires a working NHLT binary from an original (non-replacement) XPS 9710 board.
Request:
If you have a Dell XPS 17 9710 with working audio, please run this and share the output file:
sudo cat /sys/firmware/acpi/tables/NHLT > nhlt_9710_working.bin
Alternatively, does anyone have experience constructing a correct SoundWire NHLT table manually for TGL-H with rt711/rt1308/rt715, or know of another way to force the BIOS to regenerate the correct NHLT on a replacement board without Windows?
Update:
Narrowed this down further — 3 of 4 SoundWire links (rt1308 x2, rt715) attach and work correctly; only Link 0 (rt711) fails at the hardware level, with identical ACPI/DSDT configuration across all links. This points to a physical hardware fault on this specific replacement board rather than a firmware/BIOS issue. Pursuing a replacement with the seller. Leaving this up in case it helps anyone else diagnosing a similar “partial SoundWire failure” pattern.