首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用xrandr设置未检测分辨率

用xrandr设置未检测分辨率
EN

Unix & Linux用户
提问于 2020-03-21 12:57:46
回答 1查看 8.2K关注 0票数 4

我试图在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创建一个新模式的命令是

代码语言:javascript
复制
xrandr --newmode "1680×1050_60.00"  146.25  1680 1784 1960 2240  1050 1053 1059 1089 -hsync +vsync

执行此操作后,运行xrandr返回

代码语言:javascript
复制
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

但是,当试图使用

代码语言:javascript
复制
xrandr --addmode HDMI-0 "1680×1050_60.00"`

误差

代码语言:javascript
复制
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

被归还了。使用

代码语言:javascript
复制
xrandr --output HDMI-0 --mode "1680×1050_60.00"

返回

无法找到模式1680x1050_60.00`作为一个错误。

如何正确地将输出分辨率设置为1680x1050?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2020-07-15 23:41:15

我只是花了2-3个小时来解决同样的问题。令人讨厌的是,新的英伟达司机似乎一点也不喜欢他。现在,在疯狂和疯狂之后,我终于想出了一个解决方案,希望它也能对你有用。

从终端“nvidia-设置”开始,切换到“Preview显示配置”,单击底部“保存到X配置文件”上的按钮,然后“显示预览”。现在,在此预览转到块‘部分“”监视器“. EndSection’并保存到以后。这就是我如何发现我的显示器设置的xorg.conf。请注意,还有其他的方法,但这应该是相当安全和方便的nvidia-用户。

然后获取分辨率的"Modeline“,输入终端:

代码语言:javascript
复制
cvt 1680x1050

并将输出保存到以后。

现在,您只需将所有这些内容添加到一个xorg.conf文件中,就可以将其命名为/etc/x11/xorg.con.d/10(这至少是我发行版的路径)。由于我既没有您的monitor-区段,也没有您的Modeline,所以我将以我的显示器部分和modeline为例(我想要的/未被检测到的分辨率是1920x1080):

代码语言:javascript
复制
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有关,错误可以找到:

代码语言:javascript
复制
dmesg | grep EDID
票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/574071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档