SDB:Configuring graphics cards and monitor settings

Jump to: navigation, search

Sometimes X-server may be having a problem with the monitor's Extended Display Identification Data (EDID) and falling back to a safe resolution which is much lower than what it is capable of.

If this is the case then the /etc/X11/xorg.conf.d/50-monitor.conf file may have to be modified.

For example, an Acer X223w with a resolution of 1680x1050 needs to have its HorizSync and VertRefresh defined to display its native resolution.

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

You will have to search for what the correct HorizSync and VertRefresh for your own monitor.

Then restart the X-server with CTRL-ALT-Backspace (twice).

You can also add a modeline if needed, but try the above first.

To calculate the modeline you need to use the cvt command. See the discussion here about it's usage. 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

So for a resolution of 1680x1050:

$ cvt 1680 1050

Answer:

# 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


The /etc/X11/xorg.conf.d/50-monitor.conf file now looks like this.

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 detected but wrong resolution and native resolution unavailable

It might happen with nouveau driver (nVIDIA gfx and new LCD monitors, that work best only at a "native" resolution, as declared by their vendors),but it could happen with other graphic drivers, as well.

In these cases the monitor is not working the right resolution and even the command xrandr does not show the required resolution. For example you would expect your monitor (Display ASUS VE228H + nouveau 0.0.16_20120321, even 1.0.2) to work at full HD resolution (1920x1080), but the actual resolution is different (by far inferior) and you cannot select the right resolution through xrandr or the display manager of your Desktop Environment (DE).<bf /> But if you open the file /var/log/Xorg.0.log and look for the native resolution of your screen (e.g. 1920x1080, HD resolution), you will find:

[  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)

As you can see in this real example, the modeline for that monitor resolution was provided by EDID and listed by Xorg, but was not provided by xrandr. Moreover note that commands

$ cvt 1920 1080 # 60 Hz is default (resolution "native" for the screen)
$ cvt -r 1920 1080 # reduced mode, useful for non-CRT screen

(command gtf 1920 1080 included), they all produced standard, but wrong modelines for the test monitor.

Therefore, if you have the same issue, you should check the equivalent of the modeline shown above in bold characters. That is, for example, you could use this sequence of commands (which actually add and apply that new modeline to your monitor, but as a temporary setting that will not survive an X11 restart):

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"

of course you will have to replace '"1920x1080" ...' with the modeline gathered from monitor EDID, and appropriate for your LCD screen. If you find this settings are working well, please modify the file /etc/X11/xorg.conf.d/50-screen.conf accordingly (or you might put the commands sequence above into a bash script to autorun at graphic login, for a per-user, per-session, setting).