This page describe a quick way to generate custom video modes for X server.

/!\ WARNING: setting unsupported video modes for a certain monitor may damage it.

This is not Debian specific, but it works on Debian ;)


Many monitor (especially CRTs) have capabilities for video modes better tha the standard (VESA) ones. X server can choose automatically only VESA modes, non VESA modes must be inserteb by hand in cofiguration file.

The process of configuration may be divided into four steps:

  1. find parameters, such as pixel clock, horizontal and vertical frequencies, etc.
  2. calculate modes, either by hand or using some programs
  3. Insert in X configuration file the modes you calculated
  4. fine tuning for best fit of image on monitor

Find parameters

The parameter to find are:

Frequencies

Horizontal and vertical frequencies are the maximum number of pixel or lines that can be drawn on the monitor per second. You may find them in your monitor documentation, or googling around, or using read-edid package.

Once you have installed read-edid package, simply run (as root)

# get-edid | parse-edid

get-edid is a nice tool that reads some information directly from your monitor and print them to console in the format of X configuration file (so you can cut and paste them to get a decent monitor configuration). The lines of interst for now are:

HorizSync 30-70
VertRefresh 48-120

Another interesting information that you can find in read-edid output is something like

        Mode    "1024x768"      # vfreq 84.997Hz, hfreq 68.677kHz
                DotClock        94.500000
                HTimings        1024 1072 1168 1376
                VTimings        768 769 772 808
                Flags   "+HSync" "+VSync"
        EndMode

that is a video mode that is stored in the monitor, and should be in some way the optimal resolution/frequency for your monitor.

Pixel clock

Pixel clock (also called dot clock or bandwidth) is the number of pixel that can be drawn on the monitor per second. The value of interest is the minimum beetween the monitor and the video card pixel clock.

You might find both information on hardware documentation. You can also fetch them around. Monitor pixel clock is printed out by read-edid:

# Max dot clock (video bandwidth) 200 MHz

Video card pixel clock may be found in X server log file (/var/log/X*.log). For example you can find:

(II) NV(0): Clock range:  12.00 to 350.00 MHz 

AS far as i know, the format of output depends on the video driver you have. To find the infotmation you want in the huge log file you can start

$ vim /var/log/Xorg.0.log

using the appropriate log file, and then give the commands

:set ignorecase
/clock
/

repeat the last command untill you find what you want. Other words to try are

/pixel
/range

Another way to try is:

 grep -i "mhz" Xorg.0.log | sed -r "/[0-9]+x[0-9]+/ d"

TODO remove all the line containig something like "mode "320x240"". Please not that if you like to surf the log file you can find all the information we talked about.

Blanking times & Co.

Claculate Modes

Modify X configuration file

More tuning