我试图在Debian10上运行一个带有HDMI适配器的三星SyncMaster 226 NW显示器。GPU是一个RTX2060Super,拥有440.64版本的专有Nvidia驱动程序。
在Linux中,检测到的唯一可用分辨率是1280×720、1024×768、800×600和640x480。
然而,实际的本机分辨率是1680×1050,当双引导Windows时,可以设置和使用该分辨率。
我尝试使用xrandr添加自定义解析,首先使用cvt生成modeline。用于为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"返回
无法找到模式1680x1050_60.00`作为一个错误。
如何正确地将输出分辨率设置为1680x1050?
发布于 2020-07-15 23:41:15
我只是花了2-3个小时来解决同样的问题。令人讨厌的是,新的英伟达司机似乎一点也不喜欢他。现在,在疯狂和疯狂之后,我终于想出了一个解决方案,希望它也能对你有用。
从终端“nvidia-设置”开始,切换到“Preview显示配置”,单击底部“保存到X配置文件”上的按钮,然后“显示预览”。现在,在此预览转到块‘部分“”监视器“. EndSection’并保存到以后。这就是我如何发现我的显示器设置的xorg.conf。请注意,还有其他的方法,但这应该是相当安全和方便的nvidia-用户。
然后获取分辨率的"Modeline“,输入终端:
cvt 1680x1050并将输出保存到以后。
现在,您只需将所有这些内容添加到一个xorg.conf文件中,就可以将其命名为/etc/x11/xorg.con.d/10(这至少是我发行版的路径)。由于我既没有您的monitor-区段,也没有您的Modeline,所以我将以我的显示器部分和modeline为例(我想要的/未被检测到的分辨率是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因此,在Monitor-部分中,您只需保留第一行(标识符),并将其余部分替换为您从nvidia中保存的设置,再加上最后一行是cvt-命令的输出。设备部对你来说应该没问题。屏幕部分只需要将“模式”-line更改为您的模式的名称,所以很可能类似于模式"1680x1050_60.00“
在我的设备部分中,还有一行“BusID”PCI:39:0:0“,但我认为您不需要这样做。但是,我从执行"X -configure"(xorg不能运行)中得到了这一行。BusID应该在生成的xorg.conf.new中。奇怪的是,在我的例子中,它不同于lspci的BusID。
此外,如果您想运行多个监视器(如我),只需添加带有标识符"Monitor2“的新监视器部分,然后在设备-区段中添加。相应地,“选项”"HDMI-1“”Monitor2“,最后添加屏幕中的监视器,比如”监视器“”Monitor2“。
在我的情况下,奇怪的是,我有三个完全相同的监视器,其中一个总是不被nvidia-modeset识别。它与EDID有关,错误可以找到:
dmesg | grep EDIDhttps://unix.stackexchange.com/questions/574071
复制相似问题