Ubuntu – Setting VESA display mode > 800×600 in Ubuntu 9.04

displayUbuntuvesaxorg

Question

With the "vesa" driver selected, how do I choose a video mode higher than 800×600 (like 1024×768 or 1280×1024) on Ubuntu 9.04? Some source say that monitors.xml is used instead.

Subquestion 1: Do I have to use a kernel boot parameter at all? (see section below)

Subquestion 2: Is xorg.conf still in use on Ubuntu 9.04?

What I already know / tried

This is my xorg.conf:

Section "Device"
    Identifier  "Configured Video Device"
    Driver      "vesa"
EndSection

Section "Monitor"
    Identifier  "Configured Monitor"
EndSection

Section "Screen"
    Identifier  "Default Screen"
    Monitor     "Configured Monitor"
    Device      "Configured Video Device"
    SubSection "Display"
        Viewport    0 0
        Depth       16
        Modes       "1024x768"
    EndSubSection
EndSection

As you can see, I set the driver to "vesa" and added the mode 1024×768.

I always get to chose between 640×480 and 800×600 in Gnome. Calling xrandr tells me the same:

Screen 0: minimum 640 x 480, current 800 x 600, maximum 800 x 600
default connected 800x600+0+0 0mm x 0mm
   800x600        61.0* 
   640x480        60.0 

Also, I read that the VESA mode must be set at a very early stage in the boot process, because it must be switched in real mode. Therefor, I boot with an optional kernel parameter like vga=0x316 or vga=316. No matter which number I chose (from this or that table) it mostly complains that it does not know the number, and displays another table for me to chose from. Whatever I chose then, I get a boot screen at this specific resolution, which is slightly moved to the upper left.

But when Gnome comes up with the login screen, It's back at 800×600 and there are no other options than 640×480 an 800×600 for me to choose. So I'm not sure if this boot parameter has any real effect at all.

Also, I read somewhere that Ubuntu 9.04 does not use xorg.conf any more, but on the other hand, I found many tutorials for 9.04 mentioning xorg.conf and some users that reported that it worked for them. The Nvidia tool also made changes to xorg.conf which let my computer crash on a reboot, so there must be something about it.

Some more background

I've got a Dell Precision M70 Laptop with a broken graphics card, that is, some section of the video Ram is broken. The physical resolution of the LCD is 1920×1200 and it has a Nvidia Quadro FX Go 1400.

From my experience on Windows I know that using the NVidia driver I either get garbled output or the computer completely crashes, no matter which mode is chosen. But without a driver, I can happily use the display modes 640×480, 800×600, 1024×768 and 1280×1024. The higher modes fail even without a driver.

I installed Ubuntu some days ago, and using the correct driver, it always crashed, sometimes after it shows some reasonable content, sometimes even without. I can't even use 640×480 with that driver. Using the VESA driver, it's running stable, but I can't switch to any higher resolution than 800×600.

Therefor I conclude that using VESA on a higher resultion should be fine on Ubuntu, if only I could configure it.

Best Answer

Finally I got it. Its now working fine on 1280x1024.

  • I don't have to use the kernel boot parameter at all
  • xorg.conf is still in use, and the 'new' file monitors.xml seems to be neither written nor read by the system

The problem was a misconfiguration of my monitor. Without explicitly giving it a HorizSync the X.org estimated a valid range of 28-33kHz and thus only allowed the lower modes. The logfile /var/log/Xorg.0.log told me:

(II) VESA(0): Configured Monitor: Using hsync range of 31.50-37.90 kHz
(II) VESA(0): Configured Monitor: Using vrefresh range of 50.00-70.00 Hz
(WW) VESA(0): Unable to estimate virtual size
(II) VESA(0): Not using built-in mode "1280x1024" (hsync out of range)
(II) VESA(0): Not using built-in mode "1024x768" (hsync out of range)
(II) VESA(0): Not using built-in mode "640x400" (hsync out of range)
(II) VESA(0): Not using built-in mode "320x400" (hsync out of range)
(II) VESA(0): Not using built-in mode "320x240" (illegal horizontal timings)
(II) VESA(0): Not using built-in mode "320x200" (illegal horizontal timings)

With a setting of 28-73kHz, I can now chose modes up to 1280x1024.

...
Section "Monitor"
        Identifier      "Configured Monitor"
        HorizSync       28-73
EndSection
...

My screen should support even higher modes, and because I only estimated the number 73 I might have to set it even higher. However, currently I know that this is not the reason for the restriction, because modes highter than 1280x1024 are not checked at all. I think I will be able to configure those as well, and I will come back and report the solution as soon as I have it.

Related Question