How to get widescreen resolution in Linux?

By root
root@linuxmint.com

June 22, 2006

Problem

If you own a laptop with widescreen resolution such as 1280x768, 1280x800 or with a high resolution such as 1400x1050, you might have encountered that problem. XWindow shows up in 1024x768, and it doesn't fill the entire width of the screen. If your laptop's graphic card is an Intel 800 or 900 series (Intel 845G, 855G, 865G, 915G, 915GM, and 945G), there is a very easy solution to fix this.

General Solution

The solutions presented in this article are known to work on the following laptops:

The widescreen resolution you're trying to use is not supported by the video bios of your graphic card. In order to fix this, the modes have to be changed in the vbios. There are two programs, freely available which do that in a very nice way: 855resolution (which is developed by Alain Poirier) and 915resolution (which is based on 855resolution). 

Whatever your distribution is, you should be able to download 855resolution 0.4 from http://perso.orange.fr/apoirier/ , extract it in a folder, compile and install it:

tar zxvf 855resolution-0.4.tgz
cd 855resolution
make

And as root..

make install

Once installed you can use 855resolution to list the supported resolutions

by typing:

855resolution -l

 
This should show you something like this:

# 855resolution -l
Chipset: 855GM
VBIOS type: 1
BIOS Version: 3240

Mode 30 : 640x480, 8 bits/pixel
Mode 32 : 800x600, 8 bits/pixel
Mode 34 : 1024x768, 8 bits/pixel
Mode 38 : 1280x1024, 8 bits/pixel
Mode 3a : 1600x1200, 8 bits/pixel
Mode 3c : 1920x1440, 8 bits/pixel
Mode 41 : 640x480, 16 bits/pixel
Mode 43 : 800x600, 16 bits/pixel
Mode 45 : 1024x768, 16 bits/pixel
Mode 49 : 1280x1024, 16 bits/pixel
Mode 4b : 1600x1200, 16 bits/pixel
Mode 4d : 1920x1440, 16 bits/pixel
Mode 50 : 640x480, 32 bits/pixel
Mode 52 : 800x600, 32 bits/pixel
Mode 54 : 1024x768, 32 bits/pixel
Mode 58 : 1280x1024, 32 bits/pixel
Mode 5a : 1600x1200, 32 bits/pixel
Mode 5c : 1920x1440, 32 bits/pixel

Pick a mode you don't need (for instance 5a) and replace its resolution with the one you want. For instance, if you want to use 1280x800 (make sure your /etc/X11/xorg.conf is also using 1280x800 by the way), edit the VBIOS and make it support your resolution by typing:

# 855resolution 5a 1280 800

Run 855resolution -l to make sure this worked and check that your resolution is in the list:

# 855resolution -l
Chipset: 855GM
VBIOS type: 1
BIOS Version: 3240

Mode 30 : 640x480, 8 bits/pixel
Mode 32 : 800x600, 8 bits/pixel
Mode 34 : 1024x768, 8 bits/pixel
Mode 38 : 1280x1024, 8 bits/pixel
Mode 3a : 1600x1200, 8 bits/pixel
Mode 3c : 1400x1050, 8 bits/pixel
Mode 41 : 640x480, 16 bits/pixel
Mode 43 : 800x600, 16 bits/pixel
Mode 45 : 1024x768, 16 bits/pixel
Mode 49 : 1280x1024, 16 bits/pixel
Mode 4b : 1600x1200, 16 bits/pixel
Mode 4d : 1400x1050, 16 bits/pixel
Mode 50 : 640x480, 32 bits/pixel
Mode 52 : 800x600, 32 bits/pixel
Mode 54 : 1024x768, 32 bits/pixel
Mode 58 : 1280x1024, 32 bits/pixel
Mode 5a : 1280x800, 32 bits/pixel
Mode 5c : 1400x1050, 32 bits/pixel

Once this is done. Your VBIOS supports the new resolution and you just have to restart X in order for it to be displayed properly. Simply press the keys CTRL+ALT+BACKSPACE to restart X.

Of course, the change made to the VBIOS of your graphic card is not persistent, so if you reboot your computer you'll have to do it again. The solution to this is to write a little script file which will call 855resolution, and to make a link from the init scripts to your script so that it is called at startup.

Startup scripts can be different from one distribution to another. In general there are stored in /etc/init.d/

Create the file "widescreen" in /etc/init.d and make it executable:

touch /etc/init.d/widescreen
chmod a+rx /etc/init.d/widescreen

Then edit the file and write the following into it:

/usr/sbin/855resolution 5a 1280 800

Of course, make sure /usr/sbin is the right path to your installed 855resolution, and that 5a and 1280x800 are the options you want to give to it.

Then find your distribution's default run level. This information is stored in /etc/inittab. There is a line in this file which specify which runlevel is the default one. For instance, in Ubuntu, the following line specifies that the default runlevel is 2:

id:2:initdefault

There is a directory called /etc/rcX.d for each runlevel where X is the runlevel number. For instance, in Ubuntu (runlevel 2), the default scripts that are run at startup are stored in /etc/rc2.d.

Within that directory, you'll find links which point to the actual scripts in /etc/init.d.

ls -l /etc/rc2.d

You'll just have to create a link in there to your /etc/init.d/widescreen script for it to be called at startup. Make sure you prefix your link with a number that is smaller than the number used in the prefix for the GDM or KDM links. Distributions usually run the scripts in order according to their name... so these numbers play a role in the order in which they are run.

For instance, in Ubuntu, you would create a link called /etc/rc2.d/S12widescreen which would point to /etc/init.d/widescreen and you would make sure they are both executable.

ln -s /etc/init.d/widescreen /etc/rc2.d/S12widescreen
chmod a+rx /etc/init.d/widescreen
chmod a+rx /etc/rc2.d/S12widescreen

Don't hesitate to ask question if this doesn't work for you, or to use the forum to get answers.

Solution for Ubuntu 6.06

In Ubuntu 6.06 there is package for 915resolution in the universe repositories. You simply have to install it from the package manager and to reboot (for some people it works just by restarting X). No further configuration is needed and you don't have to edit your init scripts. Everything should work from there.

sudo aptitude install 915resolution

Solution for Fedora Core 5

In Fedora Core 5 there is a package for 915resolution in the LIVNA repository. Install it:

sudo yum install 855resolution

At the end of your /etc/rc.local file add the line (change the mode and the resolution to suit your needs):

/usr/sbin/855resolution 5a 1280 800

Solution for SUSE 10.1

In SUSE 10.1, these cards are managed and recognized by default. Your widescreen resolution should work out of the box.

Solution for FreeBSD

Check the following link: http://dhoomketu.net.in/node/6 (thanks to शंतन&#).

Questions and Feedback

If this doesn't work for you, please use the forum and specify which graphic card and Linux distribution you are using. If it does but your laptop model or distribution is not mentioned here, write a comment to this article so that we can update its content thanks to your feedback.


Copyright 2006 http://linuxmint.com/