精简版
在 Ubuntu 20.04 上,内部和外部显示器无法同时工作。只能在内部使用默认驱动程序,或者只能在外部使用手动安装的 NVIDIA 驱动程序。帮助!
我的系统是华硕 TUF A15 游戏笔记本电脑 (FA506)。它具有带集成显卡的 AMD® Ryzen™ 7 4800H 处理器和 NVIDIA RTX 2060。
- 全新 Ubuntu 20.04 安装
- 需要
nouveau.modeset=0
在 grub 条目中设置以使图形工作 - 未检测到外部显示器
- Ubuntu 20.04 在 Additional Drivers 对话框中不显示任何内容
- 安装
nvidia-driver-440
和运行nvidia-xconfig
使 nvidia 卡工作,但仅检测到外部显示器(usbc 端口上的 displayport),内部显示器不工作 - 只能通过删除
/etc/X11/xorg.conf
并重新启动来切换回内部显示器,但随后会丢失外部显示器和未使用的 NVIDIA 驱动程序 nvidia-xconfig
可以通过再次运行并重新启动切换回 NVIDIA
长版
在全新的 Ubuntu 20.04 安装(启用安装专有软件)后,笔记本电脑启动到带有文本的背景屏幕
[ 7.779369] ucsi_acpi USBC000:00: PPM init failed (-110)
我可以通过切换到具有ctrl + alt + F2
. 在我登录后,屏幕被垃圾邮件发送了超过一分钟,并显示以下消息:
[ 80.199703] nouveau 0000:01:00.0 fifo: SCHED_ERROR 08 []
其次是
[ 80.206302] nouveau 0000:01:00.0 DRM: failed to idle channel 0 [DRM]
在此之后,我可以访问终端。根据互联网建议,我可以通过更改以下行来修改 linux grub 条目/etc/default/grub
:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
至
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nouveau.modeset=0"
并运行
sudo update-grub
重新启动后,我得到 gdm 登录屏幕并可以登录到图形会话,但如果我连接外部,则不会检测到它。xrandr
通过 DisplayPort-USBC 和 HDMI 连接或不连接外部显示器的输出是
xrandr: Failed to get size of gamma for output default
Screen 0: minimum 1920 x 1080, current 1920 x 1080, maximum 1920 x 1080
default connected primary 1920x1080+0+0 0mm x 0mm
1920x1080 77.00*
Nvidia 驱动程序尚未安装,因此我首先使用 和 更新系统sudo apt update
并sudo apt dist-upgrade
重新启动。我检查了软件和更新的附加驱动程序选项卡,但它显示“没有可用的附加驱动程序”。跑步ubuntu-drivers devices
什么都没有。
下一个最佳建议是通过 apt 安装 nvidia 驱动程序
sudo apt install nvidia-driver-440
重新启动后,监视器情况没有改变,仍然只有内部监视器。xrandr
输出相同,但现在安装了 Nvidia 驱动程序。nvidia-smi
显示:
Thu May 28 09:42:22 2020
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.64 Driver Version: 440.64 CUDA Version: 10.2 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce RTX 2060 Off | 00000000:01:00.0 Off | N/A |
| N/A 46C P0 9W / N/A | 0MiB / 5934MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
nvidia-settings
显示一个小的空窗口。启动来自终端打印:
ERROR: Unable to load info from any available system
(nvidia-settings:2986): GLib-GObject-CRITICAL **: 09:45:58.786: g_object_unref: assertion 'G_IS_OBJECT (object)' failed
** Message: 09:45:58.789: PRIME: No offloading required. Abort
** Message: 09:45:58.789: PRIME: is it supported? no
现在我运行sudo nvidia-xconfig
生成/etc/X11/xorg.conf
. 重新启动后,外部监视器正在工作,我在外部(显示端口)监视器上看到了正常的 gdm 登录屏幕,并且可以登录到图形会话。遗憾的是,内部显示器不再被检测到,只显示华硕标志。nvidia-settings
对话框现在具有我期望的所有选项(从终端启动会提供与以前相同的输出)
根据kanehekili
输出的要求,xrandr -q
现在是:
Screen 0: minimum 8 x 8, current 2560 x 1440, maximum 32767 x 32767
DP-0 connected primary 2560x1440+0+0 (normal left inverted right x axis y axis) 597mm x 336mm
2560x1440 60.00*+ 144.00 120.00 84.98
1920x1080 60.00 59.94 50.00
1680x1050 59.95
1440x900 59.89
1440x576 50.00
1440x480 59.94
1280x1024 75.02 60.02
1280x960 60.00
1280x720 60.00 59.94 50.00
1152x864 75.00
1024x768 75.03 70.07 60.00
800x600 75.00 72.19 60.32 56.25
720x576 50.00
720x480 59.94
640x480 75.00 72.81 59.94 59.93
DP-1 disconnected (normal left inverted right x axis y axis)
的完整输出lspci -vv
在这里。但图形设备的条目如下:
01:00.0 VGA compatible controller: NVIDIA Corporation TU106 [GeForce RTX 2060] (rev a1) (prog-if 00 [VGA controller])
Subsystem: ASUSTeK Computer Inc. Device 1e21
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
Interrupt: pin A routed to IRQ 94
Region 0: Memory at fb000000 (32-bit, non-prefetchable) [size=16M]
Region 1: Memory at b0000000 (64-bit, prefetchable) [size=256M]
Region 3: Memory at c0000000 (64-bit, prefetchable) [size=32M]
Region 5: I/O ports at f000 [size=128]
Expansion ROM at fc000000 [virtual] [disabled] [size=512K]
Capabilities: <access denied>
Kernel driver in use: nvidia
Kernel modules: nvidiafb, nouveau, nvidia_drm, nvidia
06:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Renoir (rev c6) (prog-if 00 [VGA controller])
Subsystem: ASUSTeK Computer Inc. Renoir
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 255
Region 0: Memory at d0000000 (64-bit, prefetchable) [size=256M]
Region 2: Memory at e0000000 (64-bit, prefetchable) [size=2M]
Region 4: I/O ports at c000 [disabled] [size=256]
Region 5: Memory at fc500000 (32-bit, non-prefetchable) [size=512K]
Capabilities: <access denied>
Kernel modules: amdgpu
请帮我解决这个问题
从我的互联网搜索来看,我并不是唯一一个与这种 AMD/NVIDIA 混合图形配置作斗争的人。圣杯将是两个显卡的无缝集成,以尽可能节省电池,并在需要时使用独立显卡,但我很乐意在两台显示器都工作的情况下满足永久耗电的英伟达!
根据我的研究,问题的核心是 nvidia 卡硬连线到显示端口,集成显卡连接到内部显示器。理想情况下,nvidia 可以渲染到可以复制到集成显卡的缓冲区,但我不知道具体细节,也不知道如何配置它。
注意:一些互联网建议建议在安装 nvidia 驱动程序之前添加 nvidia ppa:
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
我过去曾尝试过,但没有区别,该 ppa 和 ubuntu 存储库中的 nvidia-driver-440 包是相同的版本440.82+really.440.64-0ubuntu6
,并且“附加驱动程序”选项卡没有变化。
另请注意:我已禁用安全启动
编辑:这篇文章Ubuntu 20.04 无法识别第二台显示器
建议安装nvidia-driver-435
,但在我的情况下,这并不能解决问题。
我对自己的问题有部分答案,但仍然需要帮助。
在阅读了这篇 reddit 帖子后,我开始怀疑 Ubuntu 20.04 中的内核版本 5.4 对最新的 AMD APU 没有很好的支持。为了测试这一点,我使用此处的说明安装了最新的内核 5.6.15 。安装了较新的内核后,我现在可以在集成显卡上运行时将 HDMI 端口用于外接显示器。那就是删除 xorg.confsudo rm /etc/X11/xorg.conf
并重新启动。但是当使用 nvidia 卡时,我仍然只能使用 displayport(在 usbc 上)。我仍然希望能够在内部显示器上使用 NVIDIA。
我设法使用 Ubuntu 20.04 附带的 Linux 内核中对 Renoir 的实验性支持来运行 AMD 图形。
您需要添加
amdgpu.exp_hw_support=1
到/etc/default/grub
.为此,请以 root 身份打开文件进行编辑,例如运行
并在行开头
GRUB_CMDLINE_LINUX_DEFAULT=
,在双引号中的参数列表中添加amdgpu.exp_hw_support=1
. 例如,根据您之前的内容,该行在编辑后可能如下所示:保存文件并退出,然后运行以下命令使更改生效:
并重新启动。现在,将新手司机列入黑名单。为此,请
/etc/modprobe.d/
使用例如创建一个新的配置文件添加以下条目:
保存更改并退出(如果使用 nano,请按 ctrl+x)。现在更新 initramfs
重启。这支持内部和外部显示器。
不过仍然没有nvidia图形。最好知道让这台机器(带有 Ryzen 7 4800H 和 RTX 2060 的 AsusTUF)使用 switchabme AMD/Nvidia 显卡的方法。
编辑:在内部/外部显示器 (HDMI) 上激活 NVidia 卡
如果您乐于仅使用集成显卡(amdgpu 驱动程序),请不要进一步阅读。要更改为 NVidia 图形,请继续。
首先在终端中清除以前安装的 NVidia 驱动程序:
重新启动系统。现在,重新安装 NVidia 驱动程序
编辑 amdgpu 和 nvidia 驱动程序的 X11 配置文件。这些位于
/usr/share/X11/sorg.conf.d/
. 首先,更改 amdgpu 的 conf 文件:更改文件内容,使其看起来像:
现在,更改 NVidia 的 conf 文件:
使用以下条目编辑文件
重新启动系统。这个解决方案对我有用。您现在应该有一个带有 Nvidia 驱动程序的工作系统,用于使用 HDMI 的内部/外部显示器配置(我没有要测试的显示端口或 USB-C)。
要恢复到 amdgpu,请将“PrimaryGPU”条目的标志从“yes”适当地更改为“no”。这个解决方案是次优的,我将继续寻找更强大的交换解决方案(例如 nvidia on-demand)。作为旁注,我无法通过更新内核(尝试 5.5.19 和 5.6.19)使任何东西正常工作。尽管有一些有趣的功能将使这台笔记本电脑在较新的内核版本中受益。在我的尝试中,Nvidia 模块没有正确安装(如果编译与系统其余部分的集成可能会更健壮)。
我有同样的笔记本电脑。在尝试了很多对我有用的事情之后。
内核 5.7.15(或来自https://kernel.ubuntu.com/~kernel-ppa/mainline/的更高版本)此内核具有 amd cpu 和 apu 的驱动程序,可以使用 hdmi/外部监视器。(如果已安装,请删除 amdgpu 或 amdgpu-pro)
Nvidia PPA sudo add-apt-repository ppa:graphics-drivers/ppa && sudo apt-get upgrade && sudo apt-get update sudo apt-get install nvidia-driver-450
我的华硕 FA506 4800H 和 rtx2060 也有同样的问题。我尝试了两种方法来解决它,这是第一种方法:
然后HDMI工作。我在五月份试过这个,但不知何故它不能暂停。然后我挣扎着暂停我的笔记本电脑并重新安装了几次 Ubuntu。后记我找到了另一种启用挂起的方法(来自另一个 BBS),它还修复了 HDMI 问题:
Ubuntu 20.04 是 5.4 内核的,而且内核 5.7 似乎已经添加了 amd 图形驱动程序,所以升级内核后,HDMI 工作。
其实没那么简单,我还需要修复 nvme 设置,我不记得我是否有 block nouveau。
听说FA506的这个HDMI口是4800H上的AMD RYZEN图形芯片专用的,如果rtx2060工作,它的数据还是需要导出到锐龙图形芯片,然后芯片导出到HDMI口。HDMI 端口没有直接连接到 rtx2060。不过我也听说如果你通过USB-C导出一个HDMI端口,那么它是直接连接到rtx2060的,但我没有尝试。我的笔记本电脑仍然运行内核 5.7.0rc4,没有 nvidia 驱动程序。
我仍在寻找一种仅使用 AMD 图形芯片并关闭 rtx2060 的方法,因为它会消耗大量电池。