使用 xrandr 設置未檢測到的解析度
我正在嘗試在 Debian 10 上執行帶有 HDMI 到 VGA 適配器的三星 SyncMaster 226 NW 顯示器。GPU 是 RTX 2060 Super,具有版本 440.64 的專有 Nvidia 驅動程序。
在 Linux 中,唯一被檢測為可用的解析度是 1280×720、1024×768、800×600 和 640x480。
但實際原生解析度為1680×1050,雙啟動Windows時,可以設置使用這個解析度。
我曾嘗試使用
xrandr
添加自定義解析度,首先使用cvt
生成模式行。用於為 xrandr 創建新模式的命令是xrandr --newmode "1680×1050_60.00" 146.25 1680 1784 1960 2240 1050 1053 1059 1089 -hsync +vsync
執行此操作後,執行
xrandr
返回Screen 0: minimum 8 x 8, current 1024 x 768, maximum 32767 x 32767 DP-0 disconnected (normal left inverted right x axis y axis) DP-1 disconnected (normal left inverted right x axis y axis) HDMI-0 connected primary 1024x768+0+0 (normal left inverted right x axis y axis) 304mm x 228mm 1024x768 60.00*+ 60.00 1280x720 60.00 800x600 60.32 640x480 59.94 DP-2 disconnected (normal left inverted right x axis y axis) DP-3 disconnected (normal left inverted right x axis y axis) DP-4 disconnected (normal left inverted right x axis y axis) DP-5 disconnected (normal left inverted right x axis y axis) USB-C-0 disconnected (normal left inverted right x axis y axis) 1680x1050_60.00 (0x1e4) 146.250MHz -HSync +VSync h: width 1680 start 1784 end 1960 total 2240 skew 0 clock 65.29KHz v: height 1050 start 1053 end 1059 total 1089 clock 59.95Hz
但是,當嘗試使用
xrandr --addmode HDMI-0 "1680×1050_60.00"`
錯誤
X Error of failed request: BadMatch (invalid parameter attributes) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 18 (RRAddOutputMode) Serial number of failed request: 43 Current serial number in output stream: 44
被退回。使用
xrandr --output HDMI-0 --mode "1680×1050_60.00"
回來
xrandr:找不到模式 1680x1050_60.00` 作為錯誤。
如何正確將輸出解析度設置為 1680x1050?
我只是在完全相同的問題上花了 2-3 個小時。太煩人了,xrandr 似乎根本不適用於新的 nvidia 驅動程序。現在,在變得瘋狂和瘋狂之後,我終於想出了一個解決方案,希望它也對你有用。
在終端“nvidia-settings”中啟動,切換到“X Server Display Configuration”,點擊底部的“Save to X configuration File”按鈕,然後點擊“Show Preview”。現在在此預覽中,轉到“部分“監視器”….. EndSection 塊並將其保存以備後用。這就是我發現 xorg.conf 的監視器設置的方式。請注意,還有其他方法,但是對於 nvidia 使用者來說,這種方法應該是相當安全和方便的。
然後為您的解析度獲取“Modelline”,輸入終端:
cvt 1680x1050
並保存輸出以備後用。
好的,現在您只需將所有這些內容添加到 xorg.conf 文件中,將其命名為 /etc/X11/xorg.conf.d/10-monitor.conf(至少是我的發行版的路徑)。因為我既沒有你的監視器部分也沒有你的模型線我會給你一個例子,我的監視器部分和我的模型線(我想要/未檢測到的解析度是 1920x1080):
Section "Monitor" Identifier "Monitor1" VendorName "Unknown" ModelName "Acer B246HL" HorizSync 30.0 - 80.0 VertRefresh 55.0 - 76.0 Option "DPMS" Modeline "1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync EndSection Section "Device" Identifier "Card0" Driver "nvidia" Option "HDMI-0" "Monitor1" EndSection Section "Screen" Identifier "Screen0" Device "Card0" Monitor "Monitor1" DefaultDepth 24 SubSection "Display" Depth 24 Modes "1920x1080_60.00" EndSubSection EndSection
因此,在監視器部分中,您只需保留第一行(標識符)並將其餘部分替換為您從 nvidia-settings 中保存的內容,最後一行是您的 cvt 命令的輸出。設備部分應該適合您。螢幕部分只需要將“模式”行更改為您的模式名稱,因此可能類似於模式“1680x1050_60.00”
在我的設備部分也是一行’BusID“PCI:39:0:0”’,但我認為你不需要。但是,我從執行“X -configure”(xorg 不能執行)中得到了這條線。BusID 應該在生成的 xorg.conf.new 中。奇怪的是,在我的情況下,它與 lspci 的 BusID 不同。
此外,如果您想執行多個監視器(如我),只需添加帶有標識符“Monitor2”等的新監視器部分,然後在設備部分添加例如“選項“HDMI-1”“Monitor2”’,然後最後在螢幕部分添加監視器,如“監視器”Monitor2“”。
就我而言,奇怪的是,我有 3 台完全相同的顯示器,其中一台總是無法被 nvidia-modeset 辨識。它與 EDID 有關,錯誤可以通過以下方式找到:
dmesg | grep EDID