Video Modes FAQ
When I change modes with ctrl-alt-(keypad''+) or ctrl-alt-(keypad''-) I get a virtual screen. I don't want that
In X the size of the root window (ie. your desktop) is fixed. When you change the video mode using the hotkey sequence of xvidtune
you therefore get a 'virtual' screen, ie. a screen that is bigger than your desktop and you can use your mouse to 'pan' thru it.
There now is an extension which allows to change the video mode along with the size of the root window. It is called the RandR extension. You can use xrandr
to set the desired mode. Use xrandr --query
to get a list of available modes. With xrandr --size <width>x<height>
you can pick one of the available resolutions. Try man 1x xrandr
or xrandr -help
to get more information on xrandr
.
Please note! If your application/window manager doesn't support the RandR extension you are likely to lose those windows which are entirely located outside of your new desktop. You can get them back when you restore your desktop to the original size.
Why can't I get a 1400x1050 video mode (or some other size)
Some drivers are limited to the set of modes in the video BIOS. The most common examples is vesa. Usually there's nothing you can do in this situation, because it's not possible to modify the BIOS. Sorry. The exception is some Intel chips, where you can use the 855resolution or 915resolution hacks, and it might work and it might not.
Obtaining modelines from Xorg log
The Xorg log may contain the information needed to manually create an optimized modeline. Usually the more user friendly automatic setup tools will do this job for you. But sometimes those tools fail. In those cases you are left with the task of reading the Xorg log file to figure out what to do.
Using this information does require manually editing the configuration file, but this is not a terribly difficult process. The key is to have a mostly correct configuration file as a starting point. In my situation I had a valid configuration file, but it was for the old monitor. The new LCD panel has a much more limited frequency range than the old monitor, and it could not accept the previous setup. I could have done a full re-install of X (I think), but it was easier to just edit the configuration file.
I switched into a text mode VT (CTL-ATL-F2), edited the config file, and restarted X. Voila.
The Xorg log contained
(II) R128(0): Supported additional Video Mode: (II) R128(0): clock: 162.0 MHz Image Size: 432 x 324 mm (II) R128(0): h''active: 1600 h''sync: 1664 h''sync''end 1856 h''blank''end 2160 h_border: 0 (II) R128(0): v''active: 1200 v''sync: 1201 v''sync''end 1204 v''blanking: 1250 v''border: 0 (II) R128(0): Ranges: V min: 56 V max: 75 Hz, H min: 30 H max: 81 kHz, PixClock max 170 MHz (II) R128(0): Monitor name: SyncMaster (II) R128(0): Serial No: H4JW502073 (``) R128(0): Using gamma correction (1.0, 1.0, 1.0) (II) R128(0): Monitor[0]: Using hsync range of 30.00-81.00 kHz (II) R128(0): Monitor[0]: Using vrefresh range of 56.00-75.00 Hz (II) R128(0): Clock range: 12.50 to 250.00 MHz
I used this information to update the Monitor section and add the appropriate modeline to the Modes section:
Section "Monitor" Option "CalcAlgorithm" "UseFrameBufferTiming" DisplaySize 432 324 HorizSync 30-81 Identifier "Monitor[0]" ModelName "SyncMaster" Option "DPMS" VendorName "Samsung" VertRefresh 56-75 UseModes "Modes[0]" EndSection
The VertRefresh
range, HorizSync
range, and DisplaySize
were obtained from the log. I copied the ModelName
and VendorName
but these do not really matter.
Modeline "1600x1200" 162.00 1600 1664 1856 2160 1200 1201 1204 1250
The name 1600x1200 is just a normal convention. The recommended clock speed of 162.00 and the pixel timings are taken from the log.
Obtaining modelines from Windows program PowerStrip
If you have a dual boot system and a monitor / graphics card that works fine under MS Windows but you can't figure out the equivalent modeline parameters for Linux, you can use the Windows program PowerStrip.
I used this to configure X.org to work correctly with my Sun X7200A 20.1" LCD monitor and my Dell C400 Latitude notebook.
Download and install PowerStrip from http://entechtaiwan.net/util/ps.shtm
Once installed and running you will see a PowerStrip icon in the system tray.
With the display using the required settings (for me this was 1600x1200).
Right Click on the PowerStrip icon in the system tray to display the pop up menu.
Select sub menu "Display Profiles" then select menu item "Configure"
The "Display profiles" window will be displayed, click button "Advanced timing options".
The "Advanced Timing Options" window will be displayed, click button copy timings to clip board (this button is the icon to the right of the "Cancel" button.
Paste your clipboard somewhere (notepad will do) and have a look. You will see at the end of the pasted data will be the information you need for an Xorg modeline.
For my setup PowerStrip put the following information in the clipboard
PowerStrip timing parameters: 1600x1200=1600,8,64,104,1200,5,10,24,132000,512 Generic timing details for 1600x1200: HFP=8 HSW=64 HBP=104 kHz=74 VFP=5 VSW=10 VBP=24 Hz=60 VESA detailed timing: PClk=132.00 H.Active=1600 H.Blank=176 H.Offset=-8 HSW=64 V.Active=1200 V.Blank=39 V.Offset=5 VSW=10 Linux modeline parameters: "1600x1200" 132.000 1600 1608 1672 1776 1200 1205 1215 1239 +hsync +vsync
As you can see the last line is all you need to know to create a modeline.
With that information you can boot back into Linux and add the modeline to the monitor section. Within my xorg.conf file I now have:
Section "Monitor" Identifier "Generic Monitor" VendorName "Sun" ModelName "X7200A" Option "DPMS" ModeLine "1600x1200" 132.000 1600 1608 1672 1776 1200 1205 1215 1239 +hsync +vsync EndSection
Setting up a Dell 2001FP LCD
Above was followed pretty much as a guide.
This information is provided to show the variation of Log messages which may appear.
Monitor Dell 2001FP (for 1600x1200) on X.org (Ubuntu Linux)
Graphics Card Intel i810 Card
The ?ModeLine entry needs to go in the
Section "Monitor"
The X.org Log entry showed # from the /var/log/Xorg.0.log
(II) I810(0): clock: 162.0 MHz Image Size: 367 x 275 mm (II) I810(0): h_active: 1600 h_sync: 1664 h_sync_end 1856 h_blank_end 2160 h_border: 0 (II) I810(0): v_active: 1200 v_sync: 1201 v_sync_end 1204 v_blanking: 1250 v_border: 0 (II) I810(0): Serial No: XXXXXXXXXXXX (removed serial number) (II) I810(0): Monitor name: DELL 2001FP (II) I810(0): Ranges: V min: 56 V max: 76 Hz, H min: 31 H max: 80 kHz, PixClock max 160 MHz (II) I810(0): Using detected DDC timings (II) I810(0): HorizSync 31-80 (II) I810(0): VertRefresh 56-76 (WW) I810(0): config file vrefresh range 56-86Hz not within DDC vrefresh range 56-76Hz (II) I810(0): Will use BIOS call 0x5f05 to set refresh rates for CRTs. (--) I810(0): Maximum space available for video modes: 12288 kByte
I modified my Monitor section to the following
Section "Monitor" Identifier "DELL 2001FP" DisplaySize 367 275 HorizSync 31-80 VertRefresh 56-76 Option "DPMS" ModeLine "1600x1200" 160.00 1600 1664 1856 2160 1200 1201 1204 1250 EndSection
?DisplaySize, if included really should be the actual size of your display in mm. This is best assessed by determining the LCD's native resolution and dotpitch and multiplying the two. For a Dell 2001FP, the native resolution is 1600x1200 and the dotpitch is .255 mm, thus the display size should be 408 306. The display size listed above will not correctly display paper sizes in word processing or other programs (e.g., openoffice, gv).
DisplaySize 408 306