HDMI audio issue

hello i recently installed fedora but i can’t get any audio out from hdmi, it’s driving me crazy. The only thread i found is from 2017 in nvidia forum but it didn’t work.
this is my inxi -e output

System:
  Host: salvatore-linux-thefourth Kernel: 6.17.7-300.fc43.x86_64 arch: x86_64
    bits: 64
  Desktop: GNOME v: 49.1 Distro: Fedora Linux 43 (Workstation Edition)
Machine:
  Type: Laptop System: HP product: Victus by HP Gaming Laptop 15-fa0xxx v: N/A
    serial: <superuser required>
  Mobo: HP model: 8A4F v: 37.55 serial: <superuser required> UEFI: AMI
    v: F.26 date: 03/20/2024
Battery:
  ID-1: BAT0 charge: 25 Wh (42.7%) condition: 58.7/70.1 Wh (83.8%)
    volts: 14.76 min: 15.4
CPU:
  Info: 14-core (6-mt/8-st) model: 12th Gen Intel Core i7-12700H bits: 64
    type: MST AMCP cache: L2: 11.5 MiB
  Speed (MHz): avg: 999 min/max: 400/4600:4700:3500 cores: 1: 999 2: 999
    3: 999 4: 999 5: 999 6: 999 7: 999 8: 999 9: 999 10: 999 11: 999 12: 999
    13: 999 14: 999 15: 999 16: 999 17: 999 18: 999 19: 999 20: 999
Graphics:
  Device-1: Intel Alder Lake-P GT2 [Iris Xe Graphics] driver: i915 v: kernel
  Device-2: NVIDIA GA107M [GeForce RTX 3050 Mobile] driver: nvidia
    v: 580.95.05
  Device-3: Luxvisions Innotech HP Wide Vision HD Camera driver: uvcvideo
    type: USB
  Display: wayland server: X.Org v: 24.1.9 with: Xwayland v: 24.1.9
    compositor: gnome-shell driver: dri: iris gpu: i915
    resolution: 1920x1080~60Hz
  API: EGL v: 1.5 drivers: iris,nvidia,swrast
    platforms: gbm,wayland,x11,surfaceless,device
  API: OpenGL v: 4.6.0 compat-v: 4.5 vendor: intel mesa v: 25.2.5
    renderer: Mesa Intel Iris Xe Graphics (ADL GT2)
  Info: Tools: api: eglinfo,glxinfo gpu: gputop, intel_gpu_top, lsgpu,
    nvidia-settings, nvidia-smi x11: xdriinfo, xdpyinfo, xprop, xrandr
Audio:
  Device-1: Intel Alder Lake PCH-P High Definition Audio
    driver: sof-audio-pci-intel-tgl
  API: ALSA v: k6.17.7-300.fc43.x86_64 status: kernel-api
  Server-1: PipeWire v: 1.4.9 status: active
Network:
  Device-1: MEDIATEK MT7921 802.11ax PCIe Wireless Network Adapter [Filogic
    330] driver: mt7921e
  IF: wlp4s0 state: up mac: 6a:7d:95:f8:ae:f7
  Device-2: Realtek RTL8111/8168/8211/8411 PCI Express Gigabit Ethernet
    driver: r8169
  IF: eno1 state: down mac: 38:ca:84:c0:ae:5a
  IF-ID-1: br-691eaed88b5d state: down mac: 8a:1b:5c:31:33:4f
  IF-ID-2: docker0 state: down mac: 1a:8a:77:df:77:77
  IF-ID-3: tailscale0 state: unknown speed: -1 duplex: full mac: N/A
Bluetooth:
  Device-1: IMC Networks Wireless_Device driver: btusb type: USB
  Report: btmgmt ID: hci0 rfk-id: 0 state: down bt-service: enabled,running
    rfk-block: hardware: no software: yes address: B4:8C:9D:17:C2:9C bt-v: 5.3
Drives:
  Local Storage: total: 476.94 GiB used: 64.9 GiB (13.6%)
  ID-1: /dev/nvme0n1 vendor: Western Digital model: WD PC SN810
    SDCPNRY-512G-1006 size: 476.94 GiB
Partition:
  ID-1: / size: 475.35 GiB used: 64.39 GiB (13.5%) fs: btrfs
    dev: /dev/nvme0n1p3
  ID-2: /boot size: 973.4 MiB used: 510.8 MiB (52.5%) fs: ext4
    dev: /dev/nvme0n1p2
  ID-3: /boot/efi size: 598.8 MiB used: 19.3 MiB (3.2%) fs: vfat
    dev: /dev/nvme0n1p1
  ID-4: /home size: 475.35 GiB used: 64.39 GiB (13.5%) fs: btrfs
    dev: /dev/nvme0n1p3
Swap:
  ID-1: swap-1 type: zram size: 8 GiB used: 0 KiB (0.0%) dev: /dev/zram0
Sensors:
  System Temperatures: cpu: 28.0 C mobo: N/A
  Fan Speeds (rpm): cpu: 2216 fan-2: 2018
Info:
  Memory: total: 16 GiB note: est. available: 15.27 GiB used: 5.25 GiB (34.4%)
  Processes: 480 Uptime: 17m Shell: Bash inxi: 3.3.39

I would start at running aplay -l it should output something like

card 0: [Something intel or Nvida], device 3: HDMI 0
card 1: [Something intel or Nvida], device 7: HDMI 1

then once you know which it is you can try directly playing an audio file

aplay -D plughw:<card>,<device> /usr/share/sounds/alsa/Front_Center.wav

If it plays then you should be good; it might just be a muted media. If it doesn’t, then i would try running

pactl list cards short

if your HDMI is listed but it says “off,” you’re going to want to enable it through your gnome sound and then configure tab. Or run

pactl set-card-profile <card_name> output:hdmi-stereo

if all that doesn’t work, I’d post the results of the aplay and the lspci, you could also check

journalctl -b | grep -i eld
and/or
journalctl -b | grep -i hdmi
1 Like

yeah i already tried but i provide the output of those commands so you can help me. First of all, thanks for answering on this thread.

$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: sofhdadsp [sof-hda-dsp], device 0: HDA Analog (*) []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: sofhdadsp [sof-hda-dsp], device 3: HDMI1 (*) []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: sofhdadsp [sof-hda-dsp], device 4: HDMI2 (*) []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: sofhdadsp [sof-hda-dsp], device 5: HDMI3 (*) []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: sofhdadsp [sof-hda-dsp], device 31: HDA Analog Deep Buffer (*) []
  Subdevices: 1/1
  Subdevice #0: subdevice #0

i tried with speaker-test -D hw:0,3 -c 2 -l 1 trying every hdmi listed here but i got no audio.

$ pactl list cards short
43      alsa_card.pci-0000_00_1f.3-platform-skl_hda_dsp_generic alsa

showing no hdmi

journalctl -b | grep -i eld returns nothing

$ journalctl -b | grep -i hdmi

nov 08 18:02:10 salvatore-linux-thefourth kernel: skl_hda_dsp_generic skl_hda_dsp_generic: hda_dsp_hdmi_build_controls: no PCM in topology for HDMI converter 3
nov 08 18:02:10 salvatore-linux-thefourth kernel: input: sof-hda-dsp HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:1f.3/skl_hda_dsp_generic/sound/card0/input18
nov 08 18:02:10 salvatore-linux-thefourth kernel: input: sof-hda-dsp HDMI/DP,pcm=4 as /devices/pci0000:00/0000:00:1f.3/skl_hda_dsp_generic/sound/card0/input19
nov 08 18:02:10 salvatore-linux-thefourth kernel: input: sof-hda-dsp HDMI/DP,pcm=5 as /devices/pci0000:00/0000:00:1f.3/skl_hda_dsp_generic/sound/card0/input20

much more interesting is this:

$ journalctl -b | grep -i hda

nov 08 18:02:10 salvatore-linux-thefourth kernel: sof-audio-pci-intel-tgl 0000:00:1f.3: hda codecs found, mask 5
nov 08 18:02:10 salvatore-linux-thefourth kernel: sof-audio-pci-intel-tgl 0000:00:1f.3: using HDA machine driver skl_hda_dsp_generic now
nov 08 18:02:10 salvatore-linux-thefourth kernel: sof-audio-pci-intel-tgl 0000:00:1f.3:  Topology file:     intel/sof-tplg/sof-hda-generic-2ch.tplg
nov 08 18:02:10 salvatore-linux-thefourth kernel: skl_hda_dsp_generic skl_hda_dsp_generic: ASoC: Parent card not yet available, widget card binding deferred
nov 08 18:02:10 salvatore-linux-thefourth kernel: snd_hda_codec_alc269 ehdaudio0D0: ALC245: picked fixup  for PCI SSID 103c:8a4f
nov 08 18:02:10 salvatore-linux-thefourth kernel: snd_hda_codec_alc269 ehdaudio0D0: autoconfig for ALC245: line_outs=1 (0x14/0x0/0x0/0x0/0x0) type:speaker
nov 08 18:02:10 salvatore-linux-thefourth kernel: snd_hda_codec_alc269 ehdaudio0D0:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
nov 08 18:02:10 salvatore-linux-thefourth kernel: snd_hda_codec_alc269 ehdaudio0D0:    hp_outs=1 (0x21/0x0/0x0/0x0/0x0)
nov 08 18:02:10 salvatore-linux-thefourth kernel: snd_hda_codec_alc269 ehdaudio0D0:    mono: mono_out=0x0
nov 08 18:02:10 salvatore-linux-thefourth kernel: snd_hda_codec_alc269 ehdaudio0D0:    inputs:
nov 08 18:02:10 salvatore-linux-thefourth kernel: snd_hda_codec_alc269 ehdaudio0D0:      Mic=0x19
nov 08 18:02:10 salvatore-linux-thefourth kernel: skl_hda_dsp_generic skl_hda_dsp_generic: hda_dsp_hdmi_build_controls: no PCM in topology for HDMI converter 3
nov 08 18:02:10 salvatore-linux-thefourth kernel: input: sof-hda-dsp Mic as /devices/pci0000:00/0000:00:1f.3/skl_hda_dsp_generic/sound/card0/input16
nov 08 18:02:10 salvatore-linux-thefourth kernel: input: sof-hda-dsp Headphone as /devices/pci0000:00/0000:00:1f.3/skl_hda_dsp_generic/sound/card0/input17
nov 08 18:02:10 salvatore-linux-thefourth kernel: input: sof-hda-dsp HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:1f.3/skl_hda_dsp_generic/sound/card0/input18
nov 08 18:02:10 salvatore-linux-thefourth kernel: input: sof-hda-dsp HDMI/DP,pcm=4 as /devices/pci0000:00/0000:00:1f.3/skl_hda_dsp_generic/sound/card0/input19
nov 08 18:02:10 salvatore-linux-thefourth kernel: input: sof-hda-dsp HDMI/DP,pcm=5 as /devices/pci0000:00/0000:00:1f.3/skl_hda_dsp_generic/sound/card0/input20
nov 08 18:09:47 salvatore-linux-thefourth kernel: snd_hda_intel 0000:01:00.1: enabling device (0000 -> 0002)
nov 08 18:09:47 salvatore-linux-thefourth kernel: snd_hda_intel 0000:01:00.1: Disabling MSI
nov 08 18:09:47 salvatore-linux-thefourth kernel: snd_hda_intel 0000:01:00.1: Handle vga_switcheroo audio client
nov 08 18:09:47 salvatore-linux-thefourth kernel: input: HDA NVidia HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1/input26
nov 08 18:09:47 salvatore-linux-thefourth kernel: input: HDA NVidia HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1/input27
nov 08 18:09:47 salvatore-linux-thefourth kernel: input: HDA NVidia HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1/input28
nov 08 18:09:47 salvatore-linux-thefourth kernel: input: HDA NVidia HDMI/DP,pcm=9 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1/input29
nov 08 18:09:48 salvatore-linux-thefourth kernel: snd_hda_intel 0000:01:00.1: GPU sound probed, but not operational: please add a quirk to driver_denylist

thank you for helping me

So from what i am getting is that

it looks like Fedora kernel is blocking the Nvidia audio controller. so this is something i think will work, as I adapted it from looking and testing on my AMD stuff and from what i could find.

also i will leave out the sudo as just incase you are just copy and pasting and not reading through them to make sure they should work or look correct.

bash -c 'cat > /etc/modprobe.d/snd-sof-nvidia-deny.conf <<EOF
# Prevent SOF from claiming NVIDIA HDMI audio (Victus 15-fa0xxx)
options snd_sof_pci_intel_tgl deny_list=0000:01:00.1
EOF'

then run dracut -f andreboot after reboot check the aplay -l again and also run journalctl -b | grep -i "GPU sound"

if that still doesnt work then might need to force snd_hda_intel

1 Like

try using the legacy driver instead of the sof driver.

$ 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)

Add “options snd-intel-dspcfg dsp_driver=1” to /etc/modprobe.d/alsa-base.conf and restart.

see also Suggestions before filing an SOF bug — SOF Project 2.11.0 documentation

also i will leave out the sudo as just incase you are just copy and pasting and not reading through them to make sure they should work or look correct.

bash -c 'cat > /etc/modprobe.d/snd-sof-nvidia-deny.conf <<EOF
# Prevent SOF from claiming NVIDIA HDMI audio (Victus 15-fa0xxx)
options snd_sof_pci_intel_tgl deny_list=0000:01:00.1
EOF'

then run dracut -f andreboot after reboot check the aplay -l again and also run journalctl -b | grep -i "GPU sound"

I tried that but it didn’t worked. I also tried to change the name of the module inside the file you provided with snd_hda_intel but nothing, still no audio.

I tried also using the legacy driver as @Mark said but no audio from hdmi and i lost the microphone ahah.

In case you are wondering i tried with multiple hdmi cable and with ubuntu worked

that is expected using the legacy driver on this platform.

I believe this might be the only fix but i would make sure to save your old configs before doing this because if it breaks it your going to want to restore those.

so i would first remove the old configs only after making a backup of them, which i am also assuming are at these places this based off your info and what i can find

 rm -f /etc/modprobe.d/99-*.conf

I have tweaked a bash to fix the mic issues but im unsure if it will really work or not

bash -c 'cat > /etc/modprobe.d/99-hybrid-audio.conf <<EOF
# HP Victus 15-fa0xxx: SOF (Intel) + HDA (NVIDIA)
options snd_sof_pci_intel_tgl
options snd_hda_intel probe_mask=0x2 enable=0,1 power_save=0 patch_nvhdmi=1
EOF'

And then make sure to dracut -f and reboot

After reboot, if this runs and echoes “All good,” then it should all work, hopefully haha speaker-test -D hw:1,3 -c 2 -l 1 && echo "I WORKS NOW Finaly!"

Edit,
I feel like I am working a third job right now XD. I really hope this works for you let us know if it does!

Explains the snd_hda_intel and the probe_mask https://www.kernel.org/doc/Documentation/sound/hd-audio/notes.rst
This one also went into it.
More Notes on HD-Audio Driver — The Linux Kernel documentation

As well from pipewire the loopback

and my Frankenstein of code for hybrid audio

Figured id let you know where the info is if you want to look more into it

Thank you very much, i’ll read them and when i found a solution i’ll post it so everyone can benefit it!

Thanksss

Thanks to everyone for helping me on this issue. Turns out there was a udev rule in /etc/udev/rules.d/80-nvidia-pm.conf autogenerated from EnvyControl that disabled the sound card (among other stuff).
It was sufficient to comment the line to solve this issue

# Automatically generated by EnvyControl

# Remove NVIDIA USB xHCI Host Controller devices, if present
ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x0c0330
", ATTR{remove}="1"

# Remove NVIDIA USB Type-C UCSI devices, if present
ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x0c8000
", ATTR{remove}="1"

# Remove NVIDIA Audio devices, if present
# ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x0403
00", ATTR{remove}="1"

# Enable runtime PM for NVIDIA VGA/3D controller devices on driver bind
ACTION=="bind", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x03000
0", TEST=="power/control", ATTR{power/control}="auto"
ACTION=="bind", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x03020
0", TEST=="power/control", ATTR{power/control}="auto"

# Disable runtime PM for NVIDIA VGA/3D controller devices on driver unbind
ACTION=="unbind", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030
000", TEST=="power/control", ATTR{power/control}="on"
ACTION=="unbind", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030
200", TEST=="power/control", ATTR{power/control}="on"

I’ll suggest to anyone that has this issue to check udev rules.

Thank you!!

2 Likes