XRandR 在笔记本电脑上看不到 HDMI 显示器(Arch linux)

XRandR 在笔记本电脑上看不到 HDMI 显示器(Arch linux)

我有一台配备 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-Gxrandr 后确实看到了第二台显示器并向其输出。但我需要在配置中切换活动和非活动屏幕,并在上面的命令中切换 GPU,因为我需要将我的 iGPU 链接到 dGPU,而不是相反(如果我的第二台显示器更好,那么应该是另一种方式)。

这个问题也发布在arch linux 论坛,但该线程没有包含太多额外信息。

注意:请遵循整个 wiki 页面,不要跳过步骤。除了以正确的方式更改配置文件外,我还做了太多额外的步骤,我不知道它们是否会影响结果(例如设置内核参数,如我在评论中所示)。该指南应该是详尽无遗的。

相关内容