我有一台配备 GTX1050Ti、Arch Linux 和 i3-wm 的 Dell G3 3779 笔记本电脑,我想将 HDMI 显示器连接到它。据我所知(如果我错了请纠正我),即使在 Windows 上,也无法在 GTX 上运行主显示器,也无法在集成显卡上运行 HDMI 显示器,但是 Windows 可以很好地将它们结合起来。在我的 xorg.conf 中我有:
Section "ServerLayout"
Identifier "X.org Configured"
Screen 0 "Screen0" 0 0
Screen 1 "Screen1" LeftOf "Screen0"
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Section "Files"
ModulePath "/usr/lib/xorg/modules"
FontPath "/usr/share/fonts/misc"
FontPath "/usr/share/fonts/TTF"
FontPath "/usr/share/fonts/OTF"
FontPath "/usr/share/fonts/Type1"
FontPath "/usr/share/fonts/100dpi"
FontPath "/usr/share/fonts/75dpi"
EndSection
Section "Module"
Load "glx"
EndSection
Section "Monitor"
Identifier "Monitor0"
EndSection
Section "Monitor"
Identifier "Monitor1"
EndSection
Section "Device"
Identifier "Card0"
Driver "intel"
BusID "PCI:0:2:0"
EndSection
Section "Device"
Identifier "Card1"
Driver "nvidia"
BusID "PCI:1:0:0"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
SubSection "Display"
Viewport 0 0
Depth 1
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 4
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 8
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 15
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 16
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 24
EndSubSection
EndSection
Section "Screen"
Identifier "Screen1"
Device "Card1"
Monitor "Monitor1"
SubSection "Display"
Viewport 0 0
Depth 1
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 4
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 8
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 15
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 16
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 24
EndSubSection
EndSection
(我省略了与显示器无关的所有内容)
使用此配置,它仅输出到我的主显示器,并xrandr -q
输出以下内容:
Screen 0: minimum 8 x 8, current 1920 x 1080, maximum 32767 x 32767
eDP1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 380mm x 210mm
1920x1080 60.13*+ 59.93 48.07
<other resolution info>
DP1 disconnected (normal left inverted right x axis y axis)
DP2 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
HDMI2 disconnected (normal left inverted right x axis y axis)
VIRTUAL1 disconnected (normal left inverted right x axis y axis)
需要注意的重要一点是,我的鼠标可以转到另一个显示器,我可以看到它显示为黑色十字,但我无法用它做任何事情。如果我将 xorg.conf 中的一行更改为设备,如下所示Identifier "Card0"
:
driver "intel"
->driver "nvidia"
然后它开始仅向我的 HDMI 显示器输出,并且第一个显示器显示 tty,就像运行之前一样startx
。在这种情况下的输出xrandr -q
:
Screen 0: minimum 8 x 8, current 1360 x 768, maximum 32767 x 32767
HDMI-0 connected primary 1360x768+0+0 (normal left inverted right x axis y axis) 160mm x 90mm
1360x768 60.02*+
1920x1080 59.94 50.00 29.97 25.00 23.98 60.05 60.00 50.04
1280x720 60.00 59.94 50.00
1024x768 75.03 70.07 60.00
800x600 75.00 72.19 60.32
720x576 50.00
720x480 59.94
640x480 75.00 72.81 59.94
它根本不输出有关任何其他显示器的信息,它只能看到一个显示器(分辨率差不是问题,因为这是一台旧电视)。此外,与以前的配置不同,鼠标无法转到第二台显示器。
所以问题是:如何配置 Xorg 以使 xrandr 在我的两个显示器上输出?我找到的一个相关答案是关于 Ubuntu 的:
https://askubuntu.com/questions/796827/hdmi1-is-disconnected
但它对我不起作用。此外,我的 Microsoft Edge 完全坏了,直到我重新安装了 nvidia 驱动程序(它显示随机像素)。我也尝试安装 bumblebee,但没有走太远。两个配置文件最初都是自动生成的,一个带有Xorg --configure
(输出到主显示器),另一个带有nvidia-xconfig
(输出到 HDMI 显示器)。有关其他信息,运行结果如下lspci -k | grep -A 2 -E "(VGA|3D)"
:
00:02.0 VGA compatible controller: Intel Corporation CoffeeLake-H GT2 [UHD Graphics 630]
DeviceName: Onboard - Video
Subsystem: Dell CoffeeLake-H GT2 [UHD Graphics 630]
--
01:00.0 3D controller: NVIDIA Corporation GP107M [GeForce GTX 1050 Ti Mobile] (rev a1)
Subsystem: Dell GP107M [GeForce GTX 1050 Ti Mobile]
Kernel driver in use: nvidia
我确实使用了双启动,但安全启动被禁用(问题xrandr 未检测到 HDMI 端口)
答案1
好的,我差不多解决了这个问题。
简短解决方案:
关注这arch linux wiki 页面,特别是 3.1 和 4.1 部分。这应该足够了。
更长的解释:
我已经关注了这个 Arch Linux 维基页面,第 3.1 节中的 Reverse PRIME。我从该部分偷来的 Xorg 配置文件不包含 dGPU 的 BusID,但由于它在 wiki 上,我认为它必须是那样的。当然它不起作用,我在其他地方搜索了解决方案。但是,当我再次尝试此操作时,我意外地从第 4.1 节复制了配置文件,并且由于两个 GPU 都有总线 ID,因此在运行xrandr --setprovideroutputsource Intel NVIDIA-G
xrandr 后确实看到了第二台显示器并向其输出。但我需要在配置中切换活动和非活动屏幕,并在上面的命令中切换 GPU,因为我需要将我的 iGPU 链接到 dGPU,而不是相反(如果我的第二台显示器更好,那么应该是另一种方式)。
这个问题也发布在arch linux 论坛,但该线程没有包含太多额外信息。
注意:请遵循整个 wiki 页面,不要跳过步骤。除了以正确的方式更改配置文件外,我还做了太多额外的步骤,我不知道它们是否会影响结果(例如设置内核参数,如我在评论中所示)。该指南应该是详尽无遗的。