This document describes a Linux software configuration that offers widescreen VGA video output (at 1680x1050 px) for an Acer AL2223W monitor using an integrated Intel 946GZ video adapter (AcerPower desktop workstation).
Manuel Feier, June 2007
Although Intel claims to have excellent video drivers for Linux ("Intel's commitment to providing high-quality drivers that meet the needs of the mobile Linux community is second to none."), there are problems running a Intel graphics adapters (in my case a onboard 82946GZ/GL chip) with special video resolutions like 1680x1050 pixels on the X window system.
As a first step, one should install the latest xorg version and Intel video drivers. At the time of the creation of this document these were xorg-server 1.3.0.0 and xf86-i810 2.0.0. Furthermore, the utility "915resolution" has to be installed. It can be fetched here. This utility is necessary to patch the video memory in order to offer the special video mode. It must be run again at every system boot with the appropriate parameters before the X server is launched, so an automatic startscript needs to be configured/installed (Gentoo Linux offers a nice 915resolution init script that is automatically installed when emerging 915resolution, see also here for more information on this.). In my case, the command that proved successful was:
Explanation: "58" is the video mode that should be overwritten, as listed by "915resolution -l". "1680" and "1050" is the new resolution (X and Y), 32 is the color depth and "2240" and "1089" are [htotal] [vtotal] values belonging to a monitors modeline (not explained in the documentation and called optional in 915resolution program source code). More information about these values and how to find them for a system can be found here. In my case, the "optional" values were needed in order to start X properly. Without specifying the values, it launched with no apparent errors, but screen output was shifted and distorted.
For the X configuration, I suggest to adapt the following xorg.conf that works here:
Section "ServerLayout" Identifier "X.org Configured" Screen 0 "Screen0" 0 0 InputDevice "Mouse0" "CorePointer" InputDevice "Keyboard0" "CoreKeyboard" EndSection Section "Files" RgbPath "/usr/share/X11/rgb" ModulePath "/usr/lib/xorg/modules" FontPath "/usr/share/fonts/misc/" FontPath "/usr/share/fonts/TTF/" FontPath "/usr/share/fonts/OTF" FontPath "/usr/share/fonts/Type1/" FontPath "/usr/share/fonts/100dpi/" FontPath "/usr/share/fonts/75dpi/" EndSection Section "Module" Load "extmod" Load "dri" Load "GLcore" Load "dbe" Load "record" Load "xtrap" Load "glx" Load "freetype" Load "type1" EndSection Section "InputDevice" Identifier "Keyboard0" Driver "kbd" Option "XkbLayout" "ch" EndSection Section "InputDevice" Identifier "Mouse0" Driver "mouse" Option "Protocol" "auto" Option "Device" "/dev/input/mice" Option "ZAxisMapping" "4 5 6 7" EndSection Section "Monitor" #DisplaySize 470 300 # mm Identifier "Monitor0" VendorName "ACR" ModelName "AL2223W" ### Comment all HorizSync and VertRefresh values to use DDC: HorizSync 31.0 - 81.0 VertRefresh 56.0 - 75.0 Option "DPMS" ModeLine "1680x1050" 146.25 1680 1784 1960 2240 1050 1053 1059 1089 Option "PreferredMode" "1680x1050" EndSection Section "Device" ### Available Driver options are:- ### Values: < i >: integer, < f >: float, < bool >: "True"/"False", ### < string >: "String", < freq >: "< f > Hz/kHz/MHz" ### [arg]: arg optional #Option "NoAccel" # [] #Option "SWcursor" # [ ] #Option "ColorKey" # < i > #Option "CacheLines" # < i > #Option "Dac6Bit" # [ ] #Option "DRI" # [ ] Option "NoDDC" # [ ] #Option "ShowCache" # [ ] #Option "XvMCSurfaces" # < i > #Option "PageFlip" # [ ] Identifier "Card0" Driver "intel" VendorName "Intel Corporation" BoardName "82946GZ/GL Integrated Graphics Controller" BusID "PCI:0:2:0" Option "MonitorLayout" "CRT,CRT" # VideoRam 64 # Option "VBERestore" "true" # Option "LinearAlloc" "6144" # Option "DevicePresence" "true" # Option "DisplayInfo" "true" # Option "XVideo" "true" # Option "XAANoOffscreenPixmaps" "true" # Option "Monitor-VGA" "Monitor0" # VideoRam 131072 EndSection Section "Screen" DefaultDepth 24 Identifier "Screen0" Device "Card0" Monitor "Monitor0" SubSection "Display" Viewport 0 0 Depth 1 EndSubSection SubSection "Display" Viewport 0 0 Depth 4 EndSubSection SubSection "Display" Viewport 0 0 Depth 8 EndSubSection SubSection "Display" Viewport 0 0 Depth 15 EndSubSection SubSection "Display" Viewport 0 0 Depth 16 EndSubSection SubSection "Display" Viewport 0 0 Depth 24 Modes "1680x1050" "800x600" "640x480" EndSubSection EndSection
The "video bios hack"-thing that "915resolution" performs seems a bit obscure not only to me but also to other people dealing with similar issues. Some people report this functionality would be be included in the current driver versions, but I still needed "915resolution" despite using the latest driver. Also, some people suggested that it could possibly work correctly on a DVI video output of the same card even when the VGA output is not working properly (I have no DVI output to test, though). Also note the special pieces of xorg-configuration that are used above (Option "PreferredMode" and the custom "ModeLine" that should be adapted to your display/resolution).
As always, there's no guarantee for anything on this page, so don't blame me if your computer explodes or any other nasty things happen ;)