NVIDIA GeForce GTX 1050 Ti 上没有 HDMI 音频

lig*_*ter 6 nvidia nvidia-optimus drivers nvidia-prime 17.10

我在 HP Omen 15 上的 Ubuntu 17.10 上运行内核 v4.13.0-36-generic。我有一个混合 NVIDIA Optimus 显卡。我双启动 Windows 10,它可以通过我试图在 Ubuntu 中使用的同一条 HDMI 电缆播放来自同一台外部显示器的音频。我可以在 Ubuntu 的外接显示器上看到视频。

我尝试在 Ubuntu 的内置声音设置 GUI 和 Pulse Audio Volume Control 中切换我的音频输出设备,但在前者中没有出现 HDMI 音频设备,而在后者中,所有 HDMI 设备都显示为未插入。

我使用nvidia-384通过软件和更新的附加驱动程序选项卡安装的专有驱动程序取得了最大的成功。使用此驱动程序,我可以在外接显示器上观看视频、通过笔记本电脑扬声器播放音频并可靠启动。

我曾尝试使用nvidia-387nvidia-390ppa:graphics-drivers/ppa with bumblebee,bumblebee-nvidiaprimusinstalled,但我什至无法使用这些驱动程序可靠地在外部显示器上启动或观看视频。我观察到/etc/bumblebee/xorg.conf.nouveau/etc/bumblebee/xorg.conf.nvidia检测到我的 GeForce GTX 1050 Ti 是独立显卡,我认为这是不正确的,但我不确定如何覆盖这些设置以表明我的显卡是混合显卡。

我已将 nouveau 列入黑名单,因为我无法在启用 nouveau 的情况下可靠地启动。

我安装了NVIDIA-Linux-x86_64-390.25.run,但重启后卡在引导循环中,所以我跑了sudo nvidia-uninstall.

我没有安装低延迟内核。

我禁用了 Wayland,以防它引起问题。

我禁用了安全启动。

我尝试使用内核 v4.15.4,但发现它更难以可靠启动。

我尝试重新扫描 GPU 连接到的 PCI 桥上的 PCI 总线。我不知道如何像该解决方案的作者所建议的那样从混合模式切换到专用图形模式,所以这可能是它对我不起作用的原因。

$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC295 Analog [ALC295 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 8: HDMI 2 [HDMI 2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 9: HDMI 3 [HDMI 3]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 10: HDMI 4 [HDMI 4]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

$ lspci
00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers (rev 05)
00:01.0 PCI bridge: Intel Corporation Skylake PCIe Controller (x16) (rev 05)
00:02.0 VGA compatible controller: Intel Corporation Device 591b (rev 04)
00:04.0 Signal processing controller: Intel Corporation Skylake Processor Thermal Subsystem (rev 05)
00:14.0 USB controller: Intel Corporation Sunrise Point-H USB 3.0 xHCI Controller (rev 31)
00:14.2 Signal processing controller: Intel Corporation Sunrise Point-H Thermal subsystem (rev 31)
00:16.0 Communication controller: Intel Corporation Sunrise Point-H CSME HECI #1 (rev 31)
00:17.0 SATA controller: Intel Corporation Sunrise Point-H SATA Controller [AHCI mode] (rev 31)
00:1c.0 PCI bridge: Intel Corporation Sunrise Point-H PCI Express Root Port #1 (rev f1)
00:1c.4 PCI bridge: Intel Corporation Sunrise Point-H PCI Express Root Port #5 (rev f1)
00:1c.5 PCI bridge: Intel Corporation Sunrise Point-H PCI Express Root Port #6 (rev f1)
00:1c.6 PCI bridge: Intel Corporation Sunrise Point-H PCI Express Root Port #7 (rev f1)
00:1f.0 ISA bridge: Intel Corporation Sunrise Point-H LPC Controller (rev 31)
00:1f.2 Memory controller: Intel Corporation Sunrise Point-H PMC (rev 31)
00:1f.3 Audio device: Intel Corporation Device a171 (rev 31)
00:1f.4 SMBus: Intel Corporation Sunrise Point-H SMBus (rev 31)
01:00.0 3D controller: NVIDIA Corporation GP107M [GeForce GTX 1050 Mobile] (rev a1)
03:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTS522A PCI Express Card Reader (rev 01)
04:00.0 Network controller: Intel Corporation Wireless 7265 (rev 61)
05:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 15)
Run Code Online (Sandbox Code Playgroud)

非常感谢所有做到这一点的人。任何建议将不胜感激。

小智 5

非常感谢Rudi Daemen。我的 GTX 1060 上的音频问题被他的解决方案解决了。你可以试试他的解决方案:

  1. 创建文件 /etc/systemd/system/fix-hdmi-audio.service

    [Unit]
    Description=nVidia HDMI Audio Fixer
    Before=systemd-logind.service display-manager.service
    After=module-init-tools.service
    
    [Service]
    Type=oneshot
    ExecStart=/usr/local/bin/fix-hdmi-audio.sh
    
    [Install]
    WantedBy=multi-user.target
    
    Run Code Online (Sandbox Code Playgroud)
  2. 创建文件 /usr/local/bin/fix-hdmi-audio.sh

    #!/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
    
    Run Code Online (Sandbox Code Playgroud)

    并将其设置为可运行: chmod +x /usr/local/bin/fix-hdmi-audio.sh

  3. 启用服务: systemctl enable fix-hdmi-audio.service

  4. 安装apt install pavucontrol然后启动“PulseAudio Volume Control”。在“配置”选项卡中,您只能看到“内部音频”。

  5. 重启。插入 HDMI 并播放一些音乐。启动“PulseAudio 音量控制”。在“配置”选项卡中,您应该看到“内部音频”和“HDA NVidia”。
    在“播放”选项卡中,音乐播放器右侧有一个按钮。您可以选择“内部音频”或“HDA NVidia”。选择“HDA NVidia”。

笔记

重启后可以看到

01:00.1 Audio device: NVIDIA Corporation Device 10f1 (rev a1)
Run Code Online (Sandbox Code Playgroud)

在 的输出中lscpi


lig*_*ter 1

https://github.com/hhfeuer/nvhda#install-using-dkms解决了我的问题。它利用了Ping 和我本人在上面链接的相同策略。很可能setpci -s 01:00.0 0x488.l=0x2000000:0x2000000不适合我的硬件设置。