How to make an Intel video chipset work with a widescreen monitor on Linux

By Frank Cox

(July 25, 2007)

When I got my new widescreen monitor I discovered that it wouldn't actually work with my computer at any resolution higher than 1280x1024, and the picture was not very crisp.

After much head-scratching I found out how to make it work properly with my computer's Intel 915G video chipset.

This method should also work with any Intel 800- or 900-series graphics chipsets, including the 845G, 855G, 865G, 915GM and 945G and probably others as well.

Out-of-the-box, the Intel video bios doesn't support a monitor at1680x1050 resolution, which is what my Acer widescreen monitor runs at. There is a very clever program called 915resolution that modifies the video bios to support otherwise unavailable video modes.

Here is a complete set of instructions to make an Acer AL2223W 22" monitor work with Fedora Linux and an Intel 915G video chipset. I originally set this up on Fedora Core 6 but have subsequently updated this computer to Fedora 7 using exactly the same method, so it has been tested with both of these operating systems and works well with my setup.

I have also provided this method to some other people with different widescreen monitors and it has apparently worked for them as well. This method is written for Fedora Linux, but I think it will work with other distributions as well, though you may have to use apt-get instead of yum and perhaps a different method for making 915resolution start on boot-up. The modeline instructions and the 915resolution configuration file should be the same regardless of distribution.

There are two factors here. The modeline, and the 915resolution setting. Both have to be present and correctly set.

First I installed 915resolution as it wasn't already installed on this computer by default:

yum install 915resolution

Then I created a modeline from the EDID information reported in /var/log/Xorg.0.log. The neat thing here is that the computer actually tell you what settings it needs to have; you just have to copy them into the proper configuration file.

Here is the relevant section of the Xorg.0.log:

(II) I810(0): Supported additional Video Mode:
(II) I810(0): clock: 149.0 MHz Image Size: 474 x 296 mm
(II) I810(0): h_active: 1680 h_sync: 1784 h_sync_end 1960 h_blank_end 2240 h_b order: 0
(II) I810(0): v_active: 1050 v_sync: 1053 v_sync_end 1059 v_blanking: 1089 v_b order: 0
(II) I810(0): Ranges: V min: 56 V max: 76 Hz, H min: 31 H max: 82 kHz, PixClock max 150 MHz
(II) I810(0): Monitor name: AL2223W
(II) I810(0): ACER

Now here is my modeline:

Modeline "1680x1050" 149 1680 1784 1960 2240 1050 1053 1059 1089

This modeline works with the Acer AL2223W monitor.

It is easy to create a modeline that works with your monitor if it is a different make or model than mine. Look at the relationship and compare the numbers in the Xorg.0.log snippet here and the modeline, and note that it consists of the mode name, then the clock rate, then the four numbers from the h_ line, then the four numbers from the v_line, in order. It looks a lot more complex than it is because it's more-or-less a straight-across copy of the data from the Xorg.0.log!

Put this modeline as the last line in the Monitor section in /etc/X11/xorg.conf.

Add "1680x1050" to the Modes line of the Screen section in /etc/X11/xorg.conf.

Now you have to put the proper settings in /etc/sysconfig/915resolution.

Here is what works with my monitor:

# Mode to overwrite
RESOLUTION="58 1680 1050 32 2240 1089"

Your numbers may be slightly different, depending on your monitor. You create this line in a manner similar to the above modeline. The numbers consist of the mode to overwrite in the bios, the resolution that you want (x and y), the bits per pixel, h_blank_end and v_blanking from the Xorg.0.log file.

That's it. Reboot and you should see your monitor working in all its widescreen glory.


If you still don't have a widescreen display at your chosen resolution after going through this procedure, make sure that 915resolution is set to load as a service on boot. Use system-config-services or chkconfig to set 915resolution to load for runlevel 5. (I think 915resolution automatically sets itself up to load on every level 5 bootup when you install it so this step is probably unnecessary in a majority of cases.)

SAMPLE /etc/X11/xorg.conf

Finally, here is my complete /etc/X11/xorg.conf file. This file is pretty much the default /etc/X11/xorg.conf that was automatically set up when I installed Fedora on this computer, but it will show you where the newly created modeline goes and provides an example of a working /etc/X11/xorg.conf that supports a widescreen monitor with a Nvidia 915G video chipset:

# Xorg configuration created by system-config-display

Section "ServerLayout"
        Identifier     "single head configuration"
        Screen      0  "Screen0" 0 0
        InputDevice    "Mouse0" "CorePointer"
        InputDevice    "Keyboard0" "CoreKeyboard"

Section "Files"

# Multiple FontPath entries are allowed (they are concatenated together)
# By default, a font server independent of the X server is
# used to render fonts.
        FontPath     "unix/:7100"

Section "Module"
        Load  "dbe"
        Load  "extmod"
        Load  "fbdevhw"
        Load  "glx"
        Load  "record"
        Load  "freetype"
        Load  "type1"
        Load  "dri"

Section "InputDevice"

# Specify which keyboard LEDs can be user-controlled (eg, with xset(1))
#       Option  "Xleds"         "1 2 3"
# To disable the XKEYBOARD extension, uncomment XkbDisable.
#       Option  "XkbDisable"
# To customise the XKB settings to suit your keyboard, modify the
# lines below (which are the defaults).  For example, for a non-U.S.
# keyboard, you will probably want to use:
#       Option  "XkbModel"      "pc102"
# If you have a US Microsoft Natural keyboard, you can use:
#       Option  "XkbModel"      "microsoft"
# Then to change the language, change the Layout setting.
# For example, a german layout can be obtained with:
#       Option  "XkbLayout"     "de"
# or:
#       Option  "XkbLayout"     "de"
#       Option  "XkbVariant"    "nodeadkeys"
# If you'd like to switch the positions of your capslock and
# control keys, use:
#       Option  "XkbOptions"    "ctrl:swapcaps"
# Or if you just want both to be control, use:
#       Option  "XkbOptions"    "ctrl:nocaps"
        Identifier  "Keyboard0"
        Driver      "kbd"
        Option      "XkbModel" "pc105"
        Option      "XkbLayout" "us"

Section "InputDevice"
        Identifier  "Mouse0"
        Driver      "mouse"
        Option      "Protocol" "IMPS/2"
        Option      "Device" "/dev/input/mice"
        Option      "ZAxisMapping" "4 5"
        Option      "Emulate3Buttons" "yes"

Section "Monitor"

 ### Comment all HorizSync and VertSync values to use DDC:
 ### Comment all HorizSync and VertSync values to use DDC:
 ### Comment all HorizSync and VertSync values to use DDC:
 ### Comment all HorizSync and VertSync values to use DDC:
 ### Comment all HorizSync and VertSync values to use DDC:
        Identifier   "Monitor0"
        VendorName   "Monitor Vendor"
        ModelName    "Acer 2223W"
        DisplaySize     474     296
#       DisplaySize  340        270
 ### Comment all HorizSync and VertSync values to use DDC:
#       HorizSync    31.5 - 80.0
#       VertRefresh  56.2 - 75.0
#       Option      "dpms"
 Modeline "1680x1050" 149 1680 1784 1960 2240 1050 1053 1059 1089


Section "Device"
        Identifier  "Videocard0"
        Driver      "i810"
        VendorName  "Videocard vendor"
        BoardName   "Intel Corporation 82915G/GV/910GL Express Chipset Family Graphics Controller"

Section "Screen"
        Identifier "Screen0"
        Device     "Videocard0"
        Monitor    "Monitor0"
        DefaultDepth     24
        SubSection "Display"
                Viewport   0 0
                Depth     16
                Modes     "800x600" "640x480"
        SubSection "Display"
                Viewport   0 0
                Depth     24
                Modes   "1680x1050" "1280x1024"

Section "DRI"
        Mode         0666

Other articles written by Frank Cox can be found here.

Frank Cox owns and operates the Melville Theatre in Melville, Saskatchewan, Canada, and has been playing with computers for about 30 years.

July 25, 2007

Creative Commons License
This work is licensed under a Creative Commons Attribution-Share Alike 2.5 Canada License.