Debian

如何在 Lenovo LEGION 5 Pro (Nvidia RTX 3050) 上配置多台顯示器

  • December 22, 2021

我已經在配備 Nvidia RTX 3050 的新 Lenovo LEGION 5i Pro 上安裝了 Debian 11(bullseye)。

安裝Nvidia 驅動程序後:

sudo apt-get install nvidia-driver firmware-misc-nonfree

我使用 HDMI 埠連接了外接顯示器,但無法辨識,也未顯示在“顯示”設置中。

我嘗試搜尋該問題,並在某個地方找到了解決類似問題的xrandr.

~$ xrandr --listproviders
Providers: number : 2
Provider 0: id: 0x4a cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 4 outputs: 7 associated providers: 0 name:modesetting
Provider 1: id: 0x2af cap: 0x2, Sink Output crtcs: 4 outputs: 6 associated providers: 0 name:NVIDIA-G0

這個命令解決了這個問題,但老實說我不知道它做了什麼:

xrandr --setprovideroutputsource 1 0

但問題是重新啟動後更改並沒有持續存在,而且我有很多滯後並且Xorg使用了大約 30-40% 的 CPU,如使用top. 所以我解除安裝了驅動程序並重新開始。

接下來我嘗試/etc/X11/xorg.conf使用創建一個文件nvidia-xconfig,它創建了一個包含以下內容的文件:

# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig:  version 460.32.03

Section "ServerLayout"
   Identifier     "Layout0"
   Screen      0  "Screen0"
   InputDevice    "Keyboard0" "CoreKeyboard"
   InputDevice    "Mouse0" "CorePointer"
EndSection

Section "Files"
EndSection

Section "InputDevice"
   # generated from default
   Identifier     "Mouse0"
   Driver         "mouse"
   Option         "Protocol" "auto"
   Option         "Device" "/dev/psaux"
   Option         "Emulate3Buttons" "no"
   Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"
   # generated from default
   Identifier     "Keyboard0"
   Driver         "kbd"
EndSection

Section "Monitor"
   Identifier     "Monitor0"
   VendorName     "Unknown"
   ModelName      "Unknown"
   Option         "DPMS"
EndSection

Section "Device"
   Identifier     "Device0"
   Driver         "nvidia"
   VendorName     "NVIDIA Corporation"
EndSection

Section "Screen"
   Identifier     "Screen0"
   Device         "Device0"
   Monitor        "Monitor0"
   DefaultDepth    24
   SubSection     "Display"
       Depth       24
   EndSubSection
EndSection

好消息是外接顯示器已被辨識,我開始使用它,它顯示在“顯示”設置中,但我無法使用內置顯示器,如果我嘗試在沒有外接顯示器的情況下使用筆記型電腦,我會得到一個空白螢幕,我不得不刪除/etc/X11/xorg.conf文件並重新啟動才能使用內置顯示器。

如何配置我的系統以同時使用內置和外接顯示器?

更新

$ nvidia-xconfig --query-gpu-info
Number of GPUs: 1

GPU #0:
 Name      : GeForce RTX 3050 Laptop GPU
 UUID      : GPU-5f21a5b3-2add-7b3d-aa6b-1cfe5dd7085e
 PCI BusID : PCI:1:0:0

 Number of Display Devices: 1

 Display Device 0 (TV-4):
     EDID Name             : LG Electronics 24MP56
     Minimum HorizSync     : 30.000 kHz
     Maximum HorizSync     : 83.000 kHz
     Minimum VertRefresh   : 56 Hz
     Maximum VertRefresh   : 61 Hz
     Maximum PixelClock    : 150.000 MHz
     Maximum Width         : 1920 pixels
     Maximum Height        : 1080 pixels
     Preferred Width       : 1920 pixels
     Preferred Height      : 1080 pixels
     Preferred VertRefresh : 60 Hz
     Physical Width        : 510 mm
     Physical Height       : 290 mm

使用以下命令列出監視器xrandr

$ xrandr --listmonitors
Monitors: 1
0: +*eDP-1 1920/345x1200/215+0+0  eDP-1

使用此命令後,xrandr --setprovideroutputsource 1 0我得到以下輸出:

$ xrandr --listmonitors
Monitors: 2
0: +*eDP-1 2560/345x1600/215+0+0  eDP-1
1: +HDMI-1-0 1920/510x1080/290+2560+0  HDMI-1-0

但問題是Xorg程序的 CPU 使用率很高(30-40%)。

具有單獨的專用和集成顯卡的筆記型電腦將嘗試平衡用於提高電池壽命的。檢查nvidia-settings和 bios 設置,看看是否有一個選項可以指定您要使用的選項。

我已經設法通過在 BIOS 中將圖形設備模式設置為離散圖形而不是動態圖形來暫時解決我的問題,然後我能夠同時使用兩個顯示器(內置和外置)而沒有任何高 CPU 使用率Xorg並且沒有任何額外的配置。此方法僅使用專用 GPU 而不是動態模式。

Xorg我在 BIOS 中使用動態圖形模式時發現了另一種 CPU 使用率不高的解決方案,因此我同時使用了兩個 GPU。

我已按照 Debian wiki 上的說明進行操作: 使用 NVIDIA GPU 作為主 GPU

  1. 我按照以下說明安裝了 Nvidia 驅動程序:
# Add "contrib" and "non-free" components to /etc/apt/sources.list, example:
# deb http://deb.debian.org/debian/ bullseye main contrib non-free
$ sudo apt-get update
$ sudo apt-get install nvidia-driver firmware-misc-nonfree
  1. 我已經x11-xserver-utils安裝了:
$ sudo apt-get install x11-xserver-utils
  1. /etc/X11/xorg.conf使用以下內容創建一個配置文件:
Section "ServerLayout"
   Identifier "layout"
   Screen 0 "nvidia"
   Inactive "intel"
EndSection

Section "Device"
   Identifier "nvidia"
   Driver "nvidia"
   BusID "<BusID for NVIDIA device here>" # e.g. PCI:1:0:0
EndSection

Section "Screen"
   Identifier "nvidia"
   Device "nvidia"
   Option "AllowEmptyInitialConfiguration"
EndSection

Section "Device"
   Identifier "intel"
   Driver "modesetting"
   BusID "<BusID for Intel device here>" # e.g. PCI:0:2:0
   #Option "AccelMethod" "none"
EndSection

Section "Screen"
   Identifier "intel"
   Device "intel"
EndSection

lspci您可以使用以下命令獲取匯流排 ID :

$ lspci | grep -E "VGA|3D"
00:02.0 VGA compatible controller: Intel Corporation Device 9a60 (rev 01)
01:00.0 VGA compatible controller: NVIDIA Corporation Device 25e2 (rev a1)

xorg.conf在文件中像這樣使用這些 ID :

  • 00:02.0->PCI:0:2:0
  • 00:02.0->PCI:0:2:0
  1. 創建一個~/.xsessionrc包含以下內容的文件:
xrandr --setprovideroutputsource modesetting NVIDIA-0
xrandr --auto

如果您在執行第一個命令時遇到任何錯誤,請使用此命令獲取正確的名稱,它可能不是NVIDIA-0

$ xrandr --listproviders
  1. 製作~/.xsessionrc執行檔:
$ chmod +x ~/.xsessionrc
  1. 重新啟動,然後您應該能夠使用兩個顯示器並使用“顯示”設置頁面對其進行配置

引用自:https://unix.stackexchange.com/questions/682966