The latest versions of Xorg display drivers for Linux and other X-Windows operating systems depend on the Display Data Channel (DDC) Standard to provide display adapter identification and the Extended Display Identification Standard to provide display monitor information. When these are successful, display configuration is automatic, and you don't need to read further
Open source drivers are not available for nVidia display hardware as well as for some older ATI, Matrox or VIA hardware. In that case, you need to follow the directions in the Binary Driver Howto.
If after following those directions, your resolution is still unsatisfactory, EDID probing may have failed and you should read the following section to help Ubuntu learn about your monitor capabilities. In the worst case, you may need to use the vesa framebuffer display driver described later.
For example, on a system I bought for $200 from Walmart (Everex TC2512) with a graphics card reported by lspci to be a "VIA UniChrome Pro IGP (rev 01)", I found it necessary to add the following lines to an /etc/X11/xorg.conf file:
Section "Module" Disable "dri" EndSection
If Ubuntu's EDID probe fails to obtain information about your monitor, it must guess the horizontal scan and vertical refresh ranges. Perhaps the monitor is old and doesn't support EDID, or perhaps the motherboard is old and doesn't support the I2C communication method, or perhaps the monitor cable or a switching box between the monitor and computer fails to connect the necessary wire for the bidirectional I2C communication.
Ubuntu then assumes the minimal capabilities of 31.5-37.9 kHz and 50-70 Hz for the respective frequencies. This allows low-resolution modes up to 640x480 at 60 Hz and 800x600 at 56 Hz or 60 Hz.
The choices might include some modes that fail to work at all, and will likely fail to include higher resolution modes that can work. On my system, Ubuntu 10.04 defaulted to 800x600 at 60 Hz which was workable but less then the full resolution possible.
On one old system that I have, Xubuntu defaults to a 960x600 mode that leaves the menu partly off the left of the screen for displays with a 4:3 aspect ratio. The screen resolution can be set by opening Applications->Settings->Xfce 4 Settings Manager->Display and choosing a mode with a 4:3 aspect ratio. If you cannot find that menu, you can press Alt-f2 and enter "xfce4-display-settings" (without quotes) and the Display window should appear.
In that system Ubuntu-10.10 also needed the display change from 960x600 to 800x600 which was done by running gnome-display-properties upon pressing Alt-f2.
Similarly, Kubuntu also defaults in the same manner on that system. For Kubuntu, typing "display" in the entry window obtained by keying Alt-f2 allowed the necessary change to the 800x600 mode. If the entry window started by Alt-f2 does not appear within the visible part of the screen, you can still blindly type the word "display" followed by the "Enter" key. The window for setting resolution should then be (partly) visible, allowing the setting. (Sometimes the top bar is off of a screen when you want to move a window. Pressing the Alt key while dragging the mouse on the window will allow the window to be moved.)
To get get a more reasonable set of modes, you need to tell the system the true horizontal scan and vertical refresh capabilities of your monitor. These can be found in the manual and advertising literature for the monitor, or upon searching the Internet. Ubuntu can use these scan rates if they are placed in a "Monitor" section of a file named xorg.conf in the directory /etc/X11. As Installed, there should not be any /etc/X11/xorg.conf file, but if there is one, you will want to first move it out of the way by entering the following command in a terminal window (Applications->Accessories->Terminal in Gnome and Xubuntu, and Applications->System->Terminal in Kubuntu):
sudo mv /etc/X11/xorg.conf /etc/X11/xorg.conf.backup
Then, if for example your monitor has a horizontal scan range of 24-82 kHz and a vertical refresh range of 56-85 Hz, you would bring up a simple editor with the command:
sudo nano /etc/X11/xorg.conf
Here sudo runs the nano editor program in superuser mode to edit/create the file /etc/X11/xorg.conf. You can then enter the following lines and save them when leaving nano:
Section "Monitor" Identifier "Configured Monitor" Horizsync 24-82 Vertrefresh 56-85 EndSection Section "Screen" Identifier "Default Screen" Monitor "Configured Monitor" Device "Configured Video Device" Subsection "Display" Modes "800x600" "1024x768" "1280x1024" "1600x1200" EndSubsection EndSection
With this file in place, the display driver will then choose modes that are compatible with these monitor frequency limits and present them in the window mentioned above for selecting the optimum display resolution. You will need, however, to restart the X-window system which might be most easily done by simply rebooting.
The Modes line is arranged so that upon booting, the resolution is a very safe 800x600 (should it be 640x480?), but with the "Monitors" tool provided in the Preferences menu allows you to choose the other resolutions up to 1600x1200. This last mode is out of range for my monitor, but if you try to set an out-of-range mode, the display will revert to the original mode unless you click on a button to keep the new mode. Once you know the modes that work, you can place the desired mode as the first in the Modes line so that it will become the default mode.
Ubuntu can usually figure out what type of display hardware you are using, and even if it can't, it can make the very likely assumption that your hardware supports the VESA BIOS Extensions standard. This is also what will happen when you use the f4 key at the installation menu to select "Safe Graphics Mode."
You will then have an /etc/X11/xorg.conf file that selects a "vesa" driver. You will still probably need to add your monitor scan rates as described above to this xorg.conf file to get a satisfactory resolution. The "vesa" driver, however, does not take advantage of hardware acceleration available in your graphics hardware and therefore will be slower and not support some advanced features used in video games and clips. For less demanding computer uses, the vesa driver may be adequate.
Here is a copy of an xorg.conf that specifies the vesa driver and the monitor used in the example given above:
Section "Device" Identifier "Configured Video Device" Driver "vesa" EndSection Section "Monitor" Identifier "Configured Monitor" Horizsync 24-82 Vertrefresh 56-85 EndSection Section "Screen" Identifier "Default Screen" Monitor "Configured Monitor" Device "Configured Video Device" Subsection "Display" Modes "800x600" "1024x768" "1280x1024" "1600x1200" EndSubsection EndSection
In these examples, I had originally left out the subsection entitled "Display", preferring to allow the X-Windows System to present choices from which you can select your desired one using a display setting window as described above. That seemed to work with Xubuntu-10.04-Alpha-1, but trying it with Kubuntu-9.10 led to "Out of Range" notice on the monitor. As a result, I have put in the "Display" subsection, but made the first mode "800x600" which is very likely certain to work (640x480 would certainly work), and additional modes known to work with the display hardware, but not necessarily with the monitor. The first mode is used at first, allowing a graphical trial of higher modes using the Applications->System Settings->Display tool. That tool allows you to try the higher modes and will revert automatically after 30 seconds if it turns out to be "Out of Range."
Once you have determined the modes that work, those can be entered on the Modes line in xorg.conf with the preferred one as the first one in the space-separated list.
A command-line tool that I found quite useful is ddcprobe which can be installed by doing
sudo apt-get install xresprobe
Running ddcprobe on my system gives the following:
$ sudo ddcprobe vbe: VESA 3.0 detected. oem: VIA P4N800 PRO vendor: product: memory: 65536kb mode: 640x480x256 mode: 640x480x64k mode: 640x480x16m mode: 800x600x256 mode: 800x600x64k mode: 800x600x16m mode: 1024x768x256 mode: 1024x768x64k mode: 1024x768x16m mode: 1280x1024x256 mode: 1280x1024x64k mode: 1280x1024x16m mode: 1600x1200x256 mode: 1600x1200x64k edid: edidfail
Notice that the attempt to probe the monitor's capabilities using the EDID protocol failed, necessitating the use of the xorg.conf file described above.
The Ubuntu Wiki has a page with screen resolution advice centered on the tool xrandr.
Last updated: October 10, 2010
Contact Craig Van Degrift to provide suggestions and corrections to this page.