SDB:配置显卡和显示器设置

跳转到:导航搜索

有时X服务器可能无法正确读取显示器的扩展显示识别数据 (EDID),并回退到远低于其能力的低分辨率。

在这种情况下,可能需要修改/etc/X11/xorg.conf.d/50-monitor.conf文件。

例如,一款分辨率为1680x1050的Acer X223w显示器需要定义其HorizSync和VertRefresh才能显示其原生分辨率。

Section "Monitor"
 Identifier "Monitor1"
 VendorName "Unknown"
 ModelName "Acer X223W"
 HorizSync 31.0 - 84.0
 VertRefresh 56.0 - 77.0
EndSection

您需要查找适合您自己的显示器的正确的HorizSync和VertRefresh值。

然后使用CTRL-ALT-Backspace (两次) 重新启动X服务器。

您也可以添加一个modeline,但首先尝试上述方法。

要计算modeline,您需要使用cvt命令。请在此处查看关于其用法的讨论:http://forums.opensuse.org/english/get-technical-help-here/how-faq-forums/unreviewed-how-faq/430150-opensuse-graphic-card-practical-theory-guide-users-6.html#post2280876

例如,对于1680x1050的分辨率

$ cvt 1680 1050

回答

# 1680x1050 59.95 Hz (CVT 1.76MA) hsync: 65.29 kHz; pclk: 146.25 MHz
Modeline "1680x1050_60.00"  146.25  1680 1784 1960 2240  1050 1053 1059 1089 -hsync +vsync


/etc/X11/xorg.conf.d/50-monitor.conf文件现在看起来像这样。

Section "Monitor"
 Identifier "Monitor1"

 VendorName "Unknown"
 ModelName "Acer X223W"
 HorizSync 31.0 - 84.0
 VertRefresh 56.0 - 77.0

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

EndSection

检测到EDID但分辨率错误且无法使用原生分辨率

这可能发生在nouveau驱动程序(nVIDIA显卡和新型LCD显示器,它们在“原生”分辨率下工作最佳,如其供应商所声明)的情况下,但也可能发生在其他图形驱动程序中。

在这些情况下,显示器没有以正确的分辨率工作,即使xrandr命令也没有显示所需的分辨率。例如,您期望您的显示器(Display ASUS VE228H + nouveau 0.0.16_20120321,甚至1.0.2)以全高清分辨率(1920x1080)工作,但实际分辨率却不同(远低于),并且您无法通过xrandr或您的桌面环境(DE)的显示管理器选择正确的分辨率。<bf /> 但是,如果您打开文件/var/log/Xorg.0.log并查找屏幕的本机分辨率(例如1920x1080,高清分辨率),您会发现

[  1205.464] (II) NOUVEAU(0): Using EDID range info for horizontal sync
[  1205.464] (II) NOUVEAU(0): Using EDID range info for vertical refresh
[  1205.464] (II) NOUVEAU(0): Printing DDC gathered Modelines:
[  1205.464] (II) NOUVEAU(0): Modeline "1920x1080"x0.0  148.50  1920 2008 2052 2200  1080 1084 1089 1125 +hsync +vsync (67.5 kHz eP)
[  1205.464] (II) NOUVEAU(0): Modeline "800x600"x0.0   40.00  800 840 968 1056  600 601 605 628 +hsync +vsync (37.9 kHz e)
[  1205.464] (II) NOUVEAU(0): Modeline "800x600"x0.0   36.00  800 824 896 1024  600 601 603 625 +hsync +vsync (35.2 kHz e)

如您在此真实示例中所见,该显示器分辨率的modeline由EDID提供,并由Xorg列出,但未由xrandr提供。此外,请注意,命令

$ cvt 1920 1080 # 60 Hz 是默认值(屏幕“原生”分辨率)
$ cvt -r 1920 1080 # 降频模式,适用于非CRT屏幕

(包括gtf 1920 1080命令),它们都生成了标准的,但错误的测试显示器的modeline。

因此,如果您遇到相同的问题,您应该检查上面以粗体显示的modeline的等效项。也就是说,例如,您可以使用以下命令序列(实际上将新的modeline添加到您的显示器,但作为不会在X11重新启动后保留的临时设置)

xrandr --newmode "1920x1080" 148.50 1920 2008 2052 2200 1080 1084 1089 1125 +hsync +vsync
VGA_out="$(xrandr -q | grep -m 1 '\<connected\>' | cut -d ' ' -f1)"
xrandr --addmode $VGA_out "1920x1080"
xrandr --output $VGA_out --mode "1920x1080"

当然,您需要将"1920x1080" ...替换为从显示器EDID收集的,并适合您的LCD屏幕的modeline。如果您发现这些设置工作良好,请相应地修改文件/etc/X11/xorg.conf.d/50-screen.conf(或者,您可以将上面的命令序列放入bash脚本中,以便在图形登录时自动运行,以实现每个用户、每个会话的设置)。