我在 HP Omen 15 上的 Ubuntu 17.10 上运行内核 v4.13.0-36-generic。我有一块混合 NVIDIA Optimus 显卡。我双启动 Windows 10,它可以通过我在 Ubuntu 中尝试使用的同一根 HDMI 电缆从同一外接显示器播放音频。我可以在 Ubuntu 中的外接显示器上看到视频。
我努力了在 Ubuntu 的内置声音设置 GUI 和脉冲音频音量控制中切换我的音频输出设备,但前者中没有出现 HDMI 音频设备,而后者中所有 HDMI 设备都显示为未插电。
我使用通过“软件和更新”的“附加驱动程序”选项卡安装的专有驱动程序取得了最大的成功nvidia-384
。使用此驱动程序,我能够在外接显示器上观看视频,通过笔记本电脑扬声器播放音频,并可靠地启动。
我曾尝试使用nvidia-387
和nvidia-390
ppa:图形驱动程序/ppa和bumblebee
、bumblebee-nvidia
和primus
安装,但我甚至无法使用这些驱动程序可靠地启动或在我的外接显示器上观看视频。我观察到了这一点,/etc/bumblebee/xorg.conf.nouveau
并将/etc/bumblebee/xorg.conf.nvidia
我的 GeForce GTX 1050 Ti 检测为独立显卡,我认为这是不正确的,但不确定如何覆盖这些设置以表明我的显卡是混合显卡。
我已将 nouveau 列入黑名单,因为在启用 nouveau 的情况下我无法可靠地启动。
我安装了NVIDIA-Linux-x86_64-390.25.运行,但重新启动后陷入了启动循环,所以我运行了sudo nvidia-uninstall
。
我禁用了安全启动。
我尝试使用内核 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)
非常感谢所有读到这里的人。任何建议都将不胜感激。
答案1
非常感谢鲁迪·戴门。我的 GTX 1060 上的音频问题通过他的解决方案得到了解决。你可以尝试他的解决方案:
创建文件
/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
创建文件
/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
并将其设置为可运行:
chmod +x /usr/local/bin/fix-hdmi-audio.sh
启用服务:
systemctl enable fix-hdmi-audio.service
安装
apt install pavucontrol
后启动“PulseAudio Volume Control”。在“Configuration”选项卡中,您只能看到“Internal Audio”。重启。插入 HDMI 并播放一些音乐。启动“PulseAudio 音量控制”。在“配置”选项卡中,您应该看到“内部音频”和“HDA NVidia”。
在“播放”选项卡中,音乐播放器右侧有一个按钮。您可以选择“内部音频”或“HDA NVidia”。选择“HDA NVidia”。
笔记
重启后就可以看到
01:00.1 Audio device: NVIDIA Corporation Device 10f1 (rev a1)
在 的输出中lscpi
。
答案2
请注意,这是针对 GTX 970M 的,但适用于 1060 和其他产品。
对我来说,该路线的问题setpci
是重新加载时多次屏幕重置lightdm
。也许是因为我有三个显示器:
- 50 英寸电视通过内置 HDMI 硬连线连接至 nVidia 卡
- 17 英寸内置显示屏,由 Intel iGPU 驱动
- 32 英寸电视通过 Thunderbolt 连接并由 Intel iGPU 驱动
更大的问题是设置systemd
和 bash 脚本的复杂性。
c
在此链接上找到的基于语言和内核的解决方案:https://bugs.freedesktop.org/show_bug.cgi?id=75985#c33远远优于其他。我已将以下链接的大部分内容添加到我的平台并进行了一些修改。
我的系统规格:
i7-6700HQ + GTX 970M
Linux kernel version: 4.13.0-26-generic
Nvidia driver Version: 384.130
OS: Ubuntu 16.04.5 LTS
我可以确认 Maik Freudenberg [评论 27] 发布的内核模块在我的系统上运行良好。感谢您的修复。HDMI 音频设备现在正常工作。
我下载并提取了文件nvhda.tar.xz。我创建了用于提取的目录~/nVidia
。
在终端中运行命令:
cd ~/nVidia
make
sudo make install
echo nvhda | sudo tee -a /etc/initramfs-tools/modules
echo "options nvhda load_state=1" | sudo tee /etc/modprobe.d/nvhda.conf
sudo update-initramfs -u # This updated newest kernel 4.15.0-26
sudo update-initramfs -u -k `uname -r` # Update booted 4.13.0-36
reboot
修复后,我没有发现任何电源管理或系统稳定性问题。系统启动时、从睡眠状态恢复后、插入/拔出 HDMI 电缆后,HDMI 音频都可以工作。
答案3
https://github.com/hhfeuer/nvhda#install-using-dkms解决了我的问题。它利用Ping 和我上面提到的策略相同. 很可能setpci -s 01:00.0 0x488.l=0x2000000:0x2000000
与我的硬件设置不兼容。
答案4
只是想分享对我有用的东西:
sudo apt-get remove --purge alsa-base pulseaudio
sudo apt-get install alsa-base pulseaudio
sudo alsa force-reload
我使用 HDMI 连接到带扬声器的外部显示器;有视频,但 HDMI 声音输出没有显示在任何位置,因此无法选择。运行这些命令后,HDMI 输出显示在系统设置中,我可以选择它。
原文链接:broadwell-rt286 升级至 19.10 后无音频 - haswell-pcm-audio 错误
祝你好运!