使用 xrandr 更改分辨率的问题:Bad Match

Jon*_*bos 5 xrandr display nvidia display-resolution 15.10

我转到显示器,那里的最大分辨率为 1360x768 (16:9)。但是,在 Windows 8.1 上,我可以拥有 1680x1050(16:10) 的分辨率,没有任何类型的问题。因此,我尝试使用 xrandr 添加自定义分辨率:

xrandr --newmode "1680x1050_60.00"  146.25  1680 1784 1960 2240  1050 1053 1059 1089 -hsync +vsync

xrandr --addmode DVI-I-0 "1680x1050_60.00"
Run Code Online (Sandbox Code Playgroud)

但是,在键入最后一个命令后,会出现:

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:  39
 Current serial number in output stream:  40
Run Code Online (Sandbox Code Playgroud)

我还输入了 xrandr,我确认 DVI-I-0 是唯一表示已连接的:

Screen 0: minimum 8 x 8, current 1360 x 768, maximum 16384 x 16384
DVI-I-0 connected primary 1360x768+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
   1024x768      60.00 +
   1360x768      59.96*   59.80  
   1152x864      60.00  
   800x600       72.19    60.32    56.25  
   680x384       59.96    59.80  
   640x480       59.94  
   512x384       60.00  
   400x300       72.19  
   320x240       60.05  
DVI-I-1 disconnected (normal left inverted right x axis y axis)
HDMI-0 disconnected (normal left inverted right x axis y axis)
DP-0 disconnected (normal left inverted right x axis y axis)
DVI-D-0 disconnected (normal left inverted right x axis y axis)
DP-1 disconnected (normal left inverted right x axis y axis)
  1680x1050_60.00 (0x2ae) 146.250MHz
          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
Run Code Online (Sandbox Code Playgroud)

另外,我正在运行 Ubuntu 15.10。

如何获得 1680x1050(16:10) 分辨率?感谢你给与我的帮助。

编辑:忘了说 - 在 Ubuntu 之前,我有 Linux Mint,在那里我也遇到了同样的问题。但是,正如我之前所说,我在 Windows 上没有这个问题。

EDIT2:在以下链接上有 /var/log/Xorg.0.log 文件:http : //pastebin.com/sjSLScjK,我还有一台华硕显示器。

小智 2

好吧,在写这个答案时,你还没有菜单栏,而且我还没有看到你的 xorg.conf 文件,但我相信我足够了解你需要做什么,并且我相信你如果您无法在没有菜单栏的正常启动模式下进行更改,则可以从恢复模式更改您的 xorg.conf 文件。

首先,我相信这些[ 28.338] (WW) NVIDIA: GPU:0: Unable to read EDID for display device DVI-I-0警告很重要,但我不认为有什么“错误”,更多的是它可能是您的显示器、VGA 电缆、计算机或某些组合的限制。我的电脑、VGA、电视组合也无法自动检测 EDID。

维基百科有一个关于 EDID 的条目,您可能会找到有用的参考:https ://en.wikipedia.org/wiki/Extended_Display_Identification_Data

您已经创建了一个 xorg.conf 文件,但为了完整起见,我将在此答案中包含这些步骤。您遵循亚历山大·马拉霍夫在这个问题中的回答:

  1. Alt+Ctrl+F1 切换到控制台模式
  2. 通过停止显示管理器来停止 X 服务器:(sudo service gdm stop或者sudo service lightdm stop如果您有 Lubuntu 和/或 LXDE 环境)。
  3. sudo X -configure创建一个xorg.conf.new文件
  4. sudo mv xorg.conf.new /etc/X11/xorg.conf重命名文件并将其移动到 xorg.conf 所在的位置
  5. sudo service gdm start或者sudo service lightdm start重新启动显示管理器和 X 服务器。sudo start gdm还有sudo start lightdm工作。

您现在拥有 /etc/X11/xorg.conf 文件。现在说什么以及应该说什么取决于你自己的系统。我将在这里分享我自己的 xorg.conf 文件(为我的系统正确配置)的相关部分,并向您介绍它。

但首先,如何编辑它?如果一切正常,那么您可以通过打开终端并输入 来编辑它sudo nano /etc/X11/xorg.conf。如果您在正常启动模式下编辑它时遇到问题,那么您可以在恢复模式下编辑它:启动计算机,从 grub 启动菜单中选择“高级选项”,然后选择最新内核的恢复模式,然后选择root shell 提示符。您需要输入命令:mount -o remount,rw /使所有内容都可读写。然后您可以使用以下命令编辑 xorg.conf 文件nano /etc/X11/xorg.confsudo在 root shell 提示模式下不需要)。(完成 root shell 提示后,输入exit,然后选择“恢复正常启动”,然后您可能需要重新启动才能查看更改是否生效。)

此链接提供有关恢复模式的有用信息。

以下是我的 xorg.conf 文件的相关部分,您的可能有所不同。man xorg.conf您可以通过在终端中输入内容来访问 xorg.conf 手册,也可以在 Internet 上的多个位置找到它,例如此处这里还有一个 Ubuntu wiki 。

Section "Monitor"
    Identifier   "Monitor0"
    VendorName   "Monitor Vendor"
    ModelName    "Monitor Model"
        HorizSync       28.0 - 83.0
        VertRefresh     56.0 - 75.0
EndSection

Section "Device"
        ### Available Driver options are:-
        ### Values: <i>: integer, <f>: float, <bool>: "True"/"False",
        ### <string>: "String", <freq>: "<f> Hz/kHz/MHz",
        ### <percent>: "<f>%"
        ### [arg]: arg optional
        #Option     "SWcursor"              # [<bool>]
        #Option     "kmsdev"                # <str>
        #Option     "ShadowFB"              # [<bool>]
    Identifier  "Card0"
    Driver      "sis"
    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
                 Modes     "1360x768"
    EndSubSection
EndSection
Run Code Online (Sandbox Code Playgroud)

Driver我相信你的心里会有正确的Section "Device",你的应该是这样的nvidia

接下来我们来看一下Section "Screen"。您可能像我一样有许多小节,在这种情况下,您唯一需要担心的是小节Depth 24。插入行:

Modes "1680x1050"

进入该小节。您的计算机无法使用 EDID 确定屏幕尺寸,因此我们手动告诉计算机屏幕尺寸是多少。

我相信这是您需要做出的改变才能使其发挥作用。重新启动机器,看看分辨率是否固定。

您可能需要进行进一步的更改:在 参考资料Section "Monitor"部分中,您可以看到我的 xorg.conf 中的HorizSync和行。VertRefresh您可能也需要这些行。但是,您需要为两条线指定的范围取决于您的显示器。如果您有显示器的手册,请查看手册背面的“规格”。如果您没有手册,华硕似乎在其网站上提供了手册,但我不知道您显示器的型号/编号。您可以从显示器背面的贴纸上获取型号名称/编号。

本手册“规格”部分的某处提供了分辨率列表以及相应的水平和垂直值。您希望该HorizSync范围包含您可能使用的每种分辨率的所有水平值:找到列表中的最低值并将其作为下限,并使上限与列表中的最高值相同。同样,使用 时VertRefresh,使用垂直列中的最低和最高值(我随机挑选的华硕手册将其称为“刷新率”)。如果添加HorizSyncVertRefresh行,然后保存并重新启动以查看是否可以解决问题。

请通过评论分享,此时(如果有)解决问题已得到解决。如果仍然没有修复,我们可能需要再次查看您的 /etc/X11/xorg.conf 和 /var/log/Xorg.0.log 文件。