Comment 19 for bug 1377653

Revision history for this message
Rudi Daemen (fludizz) wrote :

I have a very useful update on the Skylake/nvidia GTX1060 case where the HDMI Audio device does not show up in lspci. Based on information found on the NVidia Developer forum, I was able to get my HDMI audio device show up in Ubuntu 17.10 as per my posting there:

https://devtalk.nvidia.com/default/topic/1024022/linux/gtx-1060-no-audio-over-hdmi-only-hda-intel-detected-azalia/post/5216905/#5216905

Crossposting the information here so affected people can try this as well:

Create the file "/etc/systemd/system/fix-hdmi-audio.service" as per below:
[Unit]
Description=nVidia HDMI Audio Fixer
Before=systemd-logind.service display-manager.service
After=module-init-tools.service

[Service]
Type=oneshot
ExecStart=/root/fix-hdmi-audio.sh

[Install]
WantedBy=multi-user.target

Create the file "/root/fix-hdmi-audio.sh" as per below (Note, adjust the PCI device paths to the PCI ID of the PCIe Bride and NVidia card):

#!/bin/sh
setpci -s 01:00.0 0x488.l=0x2000000:0x2000000
rmmod nvidia-uvm nvidia-drm nvidia-modeset nvidia
sh -c 'echo 1 > /sys/bus/pci/devices/0000:01:00.0/remove'
sh -c 'echo 1 > /sys/bus/pci/devices/0000:00:01.0/rescan'
modprobe nvidia nvidia-modeset nvidia-drm nvidia-uvm

And then execute the following commands (as root) to make it do this at boot:

chmod +x /root/fix-hdmi-audio.sh
systemctl enable fix-hdmi-audio.service

After each reboot, I now see the HDMI audio device on my laptop:

fludizz@tongerlo:~$ lspci | grep "PCIe Controller\|NVIDIA"
00:01.0 PCI bridge: Intel Corporation Skylake PCIe Controller (x16) (rev 07)
01:00.0 VGA compatible controller: NVIDIA Corporation GP106M [GeForce GTX 1060 Mobile] (rev a1)
01:00.1 Audio device: NVIDIA Corporation GP106 High Definition Audio Controller (rev a1)

fludizz@tongerlo:~$ aplay -l | grep NVidia
card 1: NVidia [HDA NVidia], device 3: HDMI 0 [HDMI 0]
card 1: NVidia [HDA NVidia], device 7: HDMI 1 [HDMI 1]
card 1: NVidia [HDA NVidia], device 8: HDMI 2 [HDMI 2]