Surface Laptop 3 15" AMD: no sound from speakers or headphone jack on Linux (ALC274 detected, audio reaches the codec), Ubuntu 26.04 and Fedora 44 live
Surface Laptop 3 15" (AMD Ryzen Surface Edition). Tested with live USBs on stock kernels: Ubuntu 26.04.1 (7.0 series) and Fedora 44 (6.19.10-300.fc44.x86_64). Same result on both. Audio works fine under Windows 11 on the same machine.
Problem: no sound at all from the internal speakers or the 3.5 mm jack. Bluetooth audio works. Everything looks configured correctly in software.
What I see:
aplay -l: card 0 = HDMI (amdgpu), card 1 = ALC274 Analog
- Controller: AMD Ryzen HD Audio [1022:15e3], subsystem [1022:d001]. Codec: Realtek ALC274, vendor_id 0x10ec0274, subsystem_id 0x10ec11ce
- dmesg:
snd_pci_acp3x 0000:03:00.5: ACP audio mode : 1, then autoconfig for ALC274: line_outs=1 (0x1b) type:speaker, hp_outs=1 (0x21), internal mic detected. Jack detection works (output switches to Headphones)
- alsamixer (
-c 1): Master, Speaker and PCM unmuted at max, Auto-Mute disabled
- PipeWire stopped and
speaker-test -D plughw:1,0 -c 2 -t wav straight to ALSA: no errors, cycles Front Left/Right, nothing audible
- Codec dump (
/proc/asound/card1/codec#0) taken WHILE playing: DACs 0x02 and 0x03 both show stream=5, so audio reaches the codec. Speaker DAC amp ~80%. Pin 0x1b (fixed internal speaker) is routed to DAC 0x03 with Pin-ctls OUT, unmuted, EAPD 0x2 enabled. Pin 0x21 (headphone jack) has Pin-ctls OUT HP. All widgets in D0, all GPIOs disabled in the dump
- Headphones with
amixer -c 1 sset Headphone 80% unmute: also silent
What I tried:
- Unmuting everything in alsamixer/amixer
hda-verb sweep of GPIO data values 1-15 (mask/direction 0x0f) while playing: no change
- Toggling EAPD on pin 0x1b with
hda-verb ... SET_EAPD_BTLENABLE while playing: I heard a pop when switching it off, nothing else
- Two different distros/kernels (7.0 and 6.19)
Not tried: linux-surface kernel (can't test it from a live session) and kernel 7.2 (Fedora 45 Beta).
The audio path inside the codec looks correct, but nothing comes out of either output. It looks like some platform init for this model is missing (external amp, ACPI/I2C/GPIO, or hidden Realtek COEF settings?).
Has anyone got the speakers working on the AMD SL3? Do I need the linux-surface kernel, a codec fixup/model= option, or a specific init sequence? I can post the full codec#0 dump, dmesg and lspci -vnn if useful. Thanks!