GMA 950 Gentoo

One thing that notebook users with an Intel 915/945 Onboard Graphics card may have been noticing is that you can't use your native resolution in Xorg and your framebuffer because of limited VESA modes supplied by the BIOS. So I decided to give you guys some help and explain on how to do this (there are various tutorials for this on google, but none of them worked for me).

With reading this tutorial I expect you have a limited knowledge on how Gentoo and Xorg works if there is something you don't please read the documentation at http://www.gentoo.org/

First we have to emerge 915resolution which changes the BIOS (only temporarily) to get you desired resolution. If you are NOT running ~arch you will need to add a line to your /etc/portage/package.keywords file.

 echo "sys-apps/915resolution ~x86" >> /etc/portage/package.keywords emerge 915resolution 

After the package is emerged run the following command as root:

 915resolution -l 

This will give a list with supported resolutions. Write down a mode code you won't be using (the 1920x1440 one for example: 5c, although the code for a given resolution can be different for you BIOS) Open up /etc/conf.d/915resolution in nano or any editor you like.

Go to the configuration part where it says

 replace=("4c 1280 768 24") 

and change the mode number and the resolution to the setting you would like, for example:

 replace=("5c 1280 800 32") 

NOTE: Do NOT use 24 as a color depth, because for some odd reason xorg refuses to start when doing so, instead use 32 as a color depth.

Save the file, exit your editor and run the following command: "rc-update add 915resolution boot" (without the quotes) to add the 915resolution to boot-up. (This has to be done, because the BIOS hack is only temporarily and is gone once you reboot.) If you find that this results in setting the console correctly but reverts to an incorrect stretched resolution for X, you should run "rc-update add 915resolution boot default".

Now you can have a framebuffer console in your LCDs native resolution:

1. compile your kernel WITHOUT intelfb (not even as module, it gets always loaded) but WITH vesafb-tng (module) AND framebuffer console support (monolithic)
2. boot your new kernel WITHOUT video= parameters
3. run your new module by:

 modprobe vesafb-tng mode=1280x800-32@60 /etc/init.d/consolefont restart 

The second command is needed for proper unicode display, it can be done automatically. It's best to modprobe the module just after 915resolution but before consolefont. To do this I start modprobe on boot but after 915resolution, so we need an init file:
File: /etc/init.d/vesafb

#!/sbin/runscript
# Copyright 1999-2006 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
Exp $

depend() {
after 915resolution
before xdm
before consolefont
}

start() {
ebegin "1280x800-32@60"
modprobe vesafb-tng mode=1280x800-32@60 || retval=$?
eend ${retval}
}

and also:

 rc-update add vesafb boot 

(all the above tested ONLY on an Toshiba a100-785 PSAANE notebook, good luck)

Now we can make Xorg support this VESA mode also. Open up /etc/X11/xorg.conf in nano or any editor you like and browse to: SubSection "Display". Once there Edit every Subsection "Display" and include your new native resolution. Example:

Change:

 Subsection "Display" Depth 24 Modes "1024x768" "800x600" "640x480" ViewPort 0 0 EndSubSection 

Into:

 Subsection "Display" Depth 24 Modes "1280x800" "1024x768" "800x600" "640x480" ViewPort 0 0 EndSubSection 

This adds the custom resolution to xorg-x11. Do so for all SubSection "Display" sections. Afterwards reboot your system, boot into GUI mode (if you are not using a DisplayManager) and see if you can change your resolution. If there is anything that doesn't work, don't hesitate to contact me at olger901[at]gmail.com

See the rc-update note above if this does not work for X despite working on the console.