No audio over HDMI

Hello,

I have a problem with a laptop. I was never able to get sound through the HDMI output. It’s the same issue with all the distros I tried, and if I remember correctly, it had the problem years ago so I don’t think it is a regression.

When I plug a display in, it displays fine but no audio and no audio device shows up.

Everything works fine on Windows so it’s not a hardware issue.

Where should I look for an issue ? Pipewire ?

I will be running Windows until the end of the week so in the meantime I will try everything in a live ISO.

Specs :

Intel Celeron N4120

Intel UHD Graphics 600

HP ProBook x360 11 G5 EE

does the kernel detect the hdmi port and enable audio?

check output of
journalctl --no-hostname -b -k -g 'snd|hda' and aplay -l
both commands should list hdmi devices

➜  journalctl --no-hostname -b -k -g 'snd|hda'
Mar 20 20:47:19 kernel: ata1.00: Features: Dev-Sleep HIPM DIPM NCQ-sndrcv
Mar 20 20:47:34 kernel: snd_soc_avs 0000:00:0e.0: bound 0000:00:02.0 (ops intel_audio_component_bind_ops [i915])
Mar 20 20:47:35 kernel: snd_hda_codec_alc269 hdaudioB0D0: ALC236: picked fixup  for PCI SSID 103c:0000
Mar 20 20:47:35 kernel: snd_hda_codec_alc269 hdaudioB0D0: autoconfig for ALC236: line_outs=1 (0x14/0x0/0x0/0x0/0x0) type:speaker
Mar 20 20:47:35 kernel: snd_hda_codec_alc269 hdaudioB0D0:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
Mar 20 20:47:35 kernel: snd_hda_codec_alc269 hdaudioB0D0:    hp_outs=1 (0x21/0x0/0x0/0x0/0x0)
Mar 20 20:47:35 kernel: snd_hda_codec_alc269 hdaudioB0D0:    mono: mono_out=0x0
Mar 20 20:47:35 kernel: snd_hda_codec_alc269 hdaudioB0D0:    inputs:
Mar 20 20:47:35 kernel: snd_hda_codec_alc269 hdaudioB0D0:      Internal Mic=0x12
Mar 20 20:47:35 kernel: snd_hda_codec_alc269 hdaudioB0D0:      Mic=0x19
Mar 20 20:47:35 kernel: snd_hda_codec_alc269 hdaudioB0D0: creating for ALC236 Analog 0
Mar 20 20:47:35 kernel: snd_soc_avs 0000:00:0e.0: Direct firmware load for intel/avs/hda-10ec0236-tplg.bin failed with error -2
Mar 20 20:47:35 kernel: snd_soc_avs 0000:00:0e.0: request topology "intel/avs/hda-10ec0236-tplg.bin" failed: -2
Mar 20 20:47:36 kernel: avs_hdaudio avs_hdaudio.0: trying to load fallback topology hda-generic-tplg.bin
Mar 20 20:47:36 kernel: avs_hdaudio avs_hdaudio.0: ASoC: Parent card not yet available, widget card binding deferred
Mar 20 20:47:36 kernel: input: AVS HD-Audio Mic as /devices/platform/avs_hdaudio.0/sound/card0/input36
Mar 20 20:47:36 kernel: input: AVS HD-Audio Headphone as /devices/platform/avs_hdaudio.0/sound/card0/input37
Mar 20 20:47:36 kernel: snd_hda_codec_intelhdmi hdaudioB0D2: creating for HDMI 0 0
Mar 20 20:47:36 kernel: snd_hda_codec_intelhdmi hdaudioB0D2: skipping capture dai for HDMI 0
Mar 20 20:47:36 kernel: snd_hda_codec_intelhdmi hdaudioB0D2: creating for HDMI 1 1
Mar 20 20:47:36 kernel: snd_hda_codec_intelhdmi hdaudioB0D2: skipping capture dai for HDMI 1
Mar 20 20:47:36 kernel: snd_hda_codec_intelhdmi hdaudioB0D2: creating for HDMI 2 2
Mar 20 20:47:36 kernel: snd_hda_codec_intelhdmi hdaudioB0D2: skipping capture dai for HDMI 2
Mar 20 20:47:36 kernel: snd_soc_avs 0000:00:0e.0: Direct firmware load for intel/avs/hda-8086280d-tplg.bin failed with error -2
Mar 20 20:47:36 kernel: snd_soc_avs 0000:00:0e.0: request topology "intel/avs/hda-8086280d-tplg.bin" failed: -2
Mar 20 20:47:36 kernel: avs_hdaudio avs_hdaudio.2: trying to load fallback topology hda-8086-generic-tplg.bin
Mar 20 20:47:36 kernel: avs_hdaudio avs_hdaudio.2: ASoC: Parent card not yet available, widget card binding deferred
Mar 20 20:47:36 kernel: avs_hdaudio avs_hdaudio.2: avs_card_late_probe: mapping HDMI converter 1 to PCM 0 (0000000097df99ab)
Mar 20 20:47:36 kernel: avs_hdaudio avs_hdaudio.2: avs_card_late_probe: mapping HDMI converter 2 to PCM 1 (000000000ffeba10)
Mar 20 20:47:36 kernel: avs_hdaudio avs_hdaudio.2: avs_card_late_probe: mapping HDMI converter 3 to PCM 2 (000000001b055b49)
Mar 20 20:47:36 kernel: input: AVS HDMI HDMI/DP as /devices/platform/avs_hdaudio.2/sound/card1/input38
Mar 20 20:47:36 kernel: input: AVS HDMI HDMI/DP,pcm=1 as /devices/platform/avs_hdaudio.2/sound/card1/input39
Mar 20 20:47:36 kernel: input: AVS HDMI HDMI/DP,pcm=2 as /devices/platform/avs_hdaudio.2/sound/card1/input40

liveuser at aurora in ~ 
➜  aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: HDAudio [AVS HD-Audio], device 0: HDAudio Analog (*) []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: HDMI [AVS HDMI], device 0: HDMI1 (*) []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: HDMI [AVS HDMI], device 1: HDMI2 (*) []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: HDMI [AVS HDMI], device 2: HDMI3 (*) []
  Subdevices: 1/1
  Subdevice #0: subdevice #0

the system could not find required firmware files. They don’t exist.
This is available on a F43 live iso:

$ pwd
/usr/lib/firmware/intel
$ ll avs/hda*
-rw-r--r--. 1 root root 596 Oct 21 02:00 avs/hda-808628xx-3ep-tplg.bin.xz
lrwxrwxrwx. 1 root root  28 Oct 21 02:00 avs/hda-8086-generic-tplg.bin.xz -> hda-808628xx-3ep-tplg.bin.xz
-rw-r--r--. 1 root root 708 Oct 21 02:00 avs/hda-generic-1ep-tplg.bin.xz
lrwxrwxrwx. 1 root root  27 Oct 21 02:00 avs/hda-generic-tplg.bin.xz -> hda-generic-1ep-tplg.bin.xz

try booting with legacy hda option enabled. Interrupt boot process in grub2 and add the kernel argument snd-intel-dspcfg.dsp_driver=1.

$ modinfo -p snd-intel-dspcfg
dsp_driver:Force the DSP driver for Intel DSP (0=auto, 1=legacy, 2=SST, 3=SOF, 4=AVS) (int)

You could also check the BIOS for an option to disable the DSP if possible.

Hello, and thank you for your help.

I think I have the right firmware if I understand this correctly :

liveuser at aurora in lib/firmware/intel
➜  pwd
/usr/lib/firmware/intel

liveuser at aurora in lib/firmware/intel
➜  ll avs/hda\*
lrwxrwxrwx. 1 root root  28 Jan  1  1970 avs/hda-8086-generic-tplg.bin.xz → hda-808628xx-3ep-tplg.bin.xz
-rw-r–r–. 1 root root 596 Jan  1  1970 avs/hda-808628xx-3ep-tplg.bin.xz
-rw-r–r–. 1 root root 708 Jan  1  1970 avs/hda-generic-1ep-tplg.bin.xz
lrwxrwxrwx. 1 root root  27 Jan  1  1970 avs/hda-generic-tplg.bin.xz → hda-generic-1ep-tplg.bin.xz

I can also confirm that booting with snd-intel-dspcfg.dsp_driver=1 fixes the issue. With this option, I only had one audio device (in KDE) instead of the usual two. However, it was still tied to the laptop speakers, but I had different audio profiles with HDMI in the name, and selecting those made the sound working.

Also I don’t have any options about DSP in the BIOS settings.

What is causing this issue ?

those two fw files were requested by the driver

Mar 20 20:47:35 kernel: snd_soc_avs 0000:00:0e.0: request topology “intel/avs/hda-10ec0236-tplg.bin” failed: -2
and
Mar 20 20:47:36 kernel: snd_soc_avs 0000:00:0e.0: request topology “intel/avs/hda-8086280d-tplg.bin” failed: -2

and it seems that the generic fall back did not work on your system.

boot with the option or
add "options snd-intel-dspcfg dsp_driver=1” to /etc/modprobe.d/alsa-base.conf.
see Suggestions before filing an SOF bug — SOF Project 2.11.0 documentation

If everything works with hda then leave it at that. You probably would want to test the internal microphone. It’s probably not available in legacy HDA mode.