No HDMI (DisplayPort) audio on GTX970, Dell U3415W

Hi all

I’ve got a GTX970 using the binary nvidia drivers (378.13), outputting to a single Dell U3415W display over DisplayPort. Everything works fine except for audio.

I’ve found the following when poking around the ALSA driver’s proc directory:

$ cat /proc/asound/cards         
 0 [Webcam         ]: USB-Audio - C922 Pro Stream Webcam
                      C922 Pro Stream Webcam at usb-0000:00:1d.0-1.7.2, high speed
 1 [PCH            ]: HDA-Intel - HDA Intel PCH
                      HDA Intel PCH at 0xf7330000 irq 38
 2 [NVidia         ]: HDA-Intel - HDA NVidia
                      HDA NVidia at 0xf7080000 irq 17
ls -F /proc/asound/card2      
codec#0  eld#0.0  eld#0.1  eld#0.2  eld#0.3  id  pcm3p/  pcm7p/  pcm8p/  pcm9p/
cat /proc/asound/card2/eld*
monitor_present		0
eld_valid		0
monitor_present		0
eld_valid		0
monitor_present		0
eld_valid		0
monitor_present		0
eld_valid		0

Output from dmesg is also interesting:

dmesg|grep snd_hda_codec_hdmi
[   19.733446] snd_hda_codec_hdmi hdaudioC2D0: HDMI: invalid ELD data byte 0
[   20.116796] snd_hda_codec_hdmi hdaudioC2D0: HDMI: invalid ELD data byte 29
[ 4085.108381] snd_hda_codec_hdmi hdaudioC2D0: HDMI: invalid ELD data byte 0
[ 4085.518390] snd_hda_codec_hdmi hdaudioC2D0: HDMI: invalid ELD data byte 31
[ 4093.348532] snd_hda_codec_hdmi hdaudioC2D0: HDMI: invalid ELD data byte 0
[ 4093.785210] snd_hda_codec_hdmi hdaudioC2D0: HDMI: invalid ELD data byte 34
[ 4122.364633] snd_hda_codec_hdmi hdaudioC2D0: HDMI: invalid ELD data byte 0
[ 4122.727925] snd_hda_codec_hdmi hdaudioC2D0: HDMI: invalid ELD data byte 24
[ 4133.804265] snd_hda_codec_hdmi hdaudioC2D0: HDMI: invalid ELD data byte 0
[ 4134.207598] snd_hda_codec_hdmi hdaudioC2D0: HDMI: invalid ELD data byte 30

dmesg|grep snd_hda_intel     
[    3.096427] snd_hda_intel 0000:00:1b.0: enabling device (0000 -> 0002)
[    3.096632] snd_hda_intel 0000:01:00.1: enabling device (0000 -> 0002)
[    3.096683] snd_hda_intel 0000:01:00.1: Disabling MSI
[    3.096686] snd_hda_intel 0000:01:00.1: Handle vga_switcheroo audio client

dmesg|grep HDMI
[    3.780973] input: HDA NVidia HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2/input14
[    3.781106] input: HDA NVidia HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2/input15
[    3.781272] input: HDA NVidia HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2/input16
[    3.781462] input: HDA NVidia HDMI/DP,pcm=9 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2/input17
[   19.733446] snd_hda_codec_hdmi hdaudioC2D0: HDMI: invalid ELD data byte 0
[   20.116796] snd_hda_codec_hdmi hdaudioC2D0: HDMI: invalid ELD data byte 29
[ 4085.108381] snd_hda_codec_hdmi hdaudioC2D0: HDMI: invalid ELD data byte 0
[ 4085.518390] snd_hda_codec_hdmi hdaudioC2D0: HDMI: invalid ELD data byte 31
[ 4093.348532] snd_hda_codec_hdmi hdaudioC2D0: HDMI: invalid ELD data byte 0
[ 4093.785210] snd_hda_codec_hdmi hdaudioC2D0: HDMI: invalid ELD data byte 34
[ 4122.364633] snd_hda_codec_hdmi hdaudioC2D0: HDMI: invalid ELD data byte 0
[ 4122.727925] snd_hda_codec_hdmi hdaudioC2D0: HDMI: invalid ELD data byte 24
[ 4133.804265] snd_hda_codec_hdmi hdaudioC2D0: HDMI: invalid ELD data byte 0
[ 4134.207598] snd_hda_codec_hdmi hdaudioC2D0: HDMI: invalid ELD data byte 30

Pulseaudio reports that there is an NVidia card (I’ve snipped the extra cards that it lists from the output, as it shouldn’t be relevant)

pacmd list-cards
3 card(s) available.
    index: 0
	name: <alsa_card.pci-0000_01_00.1>
	driver: <module-alsa-card.c>
	owner module: 6
	properties:
		alsa.card = "2"
		alsa.card_name = "HDA NVidia"
		alsa.long_card_name = "HDA NVidia at 0xf7080000 irq 17"
		alsa.driver_name = "snd_hda_intel"
		device.bus_path = "pci-0000:01:00.1"
		sysfs.path = "/devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2"
		device.bus = "pci"
		device.vendor.id = "10de"
		device.vendor.name = "NVIDIA Corporation"
		device.product.id = "0fbb"
		device.product.name = "GM204 High Definition Audio Controller"
		device.string = "2"
		device.description = "GM204 High Definition Audio Controller"
		module-udev-detect.discovered = "1"
		device.icon_name = "audio-card-pci"
	profiles:
		output:hdmi-stereo: Digital Stereo (HDMI) Output (priority 5400, available: no)
		output:hdmi-surround: Digital Surround 5.1 (HDMI) Output (priority 300, available: no)
		output:hdmi-surround71: Digital Surround 7.1 (HDMI) Output (priority 300, available: no)
		output:hdmi-stereo-extra1: Digital Stereo (HDMI 2) Output (priority 5200, available: no)
		output:hdmi-surround-extra1: Digital Surround 5.1 (HDMI 2) Output (priority 100, available: no)
		output:hdmi-surround71-extra1: Digital Surround 7.1 (HDMI 2) Output (priority 100, available: no)
		output:hdmi-stereo-extra2: Digital Stereo (HDMI 3) Output (priority 5200, available: no)
		output:hdmi-surround-extra2: Digital Surround 5.1 (HDMI 3) Output (priority 100, available: no)
		output:hdmi-surround71-extra2: Digital Surround 7.1 (HDMI 3) Output (priority 100, available: no)
		output:hdmi-stereo-extra3: Digital Stereo (HDMI 4) Output (priority 5200, available: no)
		output:hdmi-surround-extra3: Digital Surround 5.1 (HDMI 4) Output (priority 100, available: no)
		output:hdmi-surround71-extra3: Digital Surround 7.1 (HDMI 4) Output (priority 100, available: no)
		off: Off (priority 0, available: unknown)
	active profile: <off>
	ports:
		hdmi-output-0: HDMI / DisplayPort (priority 5900, latency offset 0 usec, available: no)
			properties:
				device.icon_name = "video-display"
		hdmi-output-1: HDMI / DisplayPort 2 (priority 5800, latency offset 0 usec, available: no)
			properties:
				device.icon_name = "video-display"
		hdmi-output-2: HDMI / DisplayPort 3 (priority 5700, latency offset 0 usec, available: no)
			properties:
				device.icon_name = "video-display"
		hdmi-output-3: HDMI / DisplayPort 4 (priority 5600, latency offset 0 usec, available: no)
			properties:
				device.icon_name = "video-display"

I’ve read a number of forum posts and instructions around the web, including the official nvidia docs, and haven’t been able to trace this any further. The monitor_present 0 lines in the ELD entries hints to me that the driver’s having trouble probing the monitor’s audio hardware, but that’s about the extent of my knowledge here. Can anyone help out with some more things to look at?

Note: I’ve tried to attach my nvidia-bug-report.log.gz but just get a js message saying “Increase post_max_size and upload_max_size to 10M”

Experiencing the exact same problem which has reappeared in Fedora 32 (rawhide)
regarding dmesg “HDMI: invalid ELD data byte 0” and no audio from HDMI devices.
It was working in Fedora 31 (stable).
Dell Precision M4800