Thinkpad R31

From Wiki

Important.png Warning

I am not responsible for any damage on your computer in any way, neither due to lack of appropriate knowledge nor any other reason. So please first read deeper into the subject before changing a running system.

Xubuntu 11.10

--Apos 00:05, 31 January 2012 (CET)

XFCE without Compiz runs on this Hardwre like a charme - again!

Nevertheless I am selling it on ebay now. By bye IBM R31 bye bye - we had some hard times, and good times, yu brought me to my informatik science studies, all the time. I will stay an ThinkPad-guy ;)

Updates (Ubuntu Lucid / 10.04)

Most of this page is fairly outdated.

E.g. Ubuntu 10.04 or newer installs without any problem onto this notebook (R31). Everything works out of the box!

UPDATE: due to errors with updates of Ubuntu 10.04 and a new intel driver, 3D/GLX ist broken. If you need OpenGL, stay with Ubuntu 9.10. This chipset suffers from the "White Screen of death" bug.

Nevertheless this notebook is not the best choice for linux - don't buy a used one! I recommend the older T4x series or the newer Thinkpad T61 with the Nvidia graphic chip. In any case avoid buying notebooks with older ATI graphic chips. They are not supported any more (neither in Linux nor in Windows 7)!!!

The drawbacks:

1. since Ubuntu 9.04 the accelerated Hardware (DRI/DRI2) for the i810M graphics chip is broken - and will be broken for the future too! The reason: Intel is not really working on a solution for this chip any more, it is too old.

To make it short: you can NOT (!) use 3D windows managers like compiz, opengl, accelerated video playback or anything related to this. Nevertheless the standard vesa display driver works fairly well with standard office usage.

2. The Thinkpad buttons for volume control are not working any more due to the newer thinkpad acpi implementation (it just works for sound off/on, but no volume control). An easy solution: Map the FN+CursorLeft / FN+CursorRight buttons to this function. The Ubuntu key combination settings are your friend ;)

--Apos 10:48, 27 September 2010 (CEST)

General Hardware Info


The article is for linux operation system only - mainly on Ubuntu. If you are on Ubuntu Hardy (8.10), you should only read that part, the same applies to Ubuntu Gutsy (7.10).

This is a Thinkpad R31 2656-65G with

  • PIII M(obile) Intel Prozessor 1133 MHz - 512 KB cache (alternate link)
  • 1024MB Ram (max)
  • (not very powerful) Intel i830 Grafics prozessor
  • 100 Mbs Network
  • 2 x USB 1.1
  • No wlan (using Netgear WPN511 pcmcia card)
  • Trackpoint (no touchpad)
  • Bios Version 3.110 1FETF1WW (2004-11-16, Embedded Controller Version 02.29.12)
  • Mini PCI slot (only a short list of devices usable - please read this post and in thinkwiki
  • irda - NOT working for me (should do)
  • pcmcia slot - only one.

Unfortunatly, a very few time after I bought this laptop, a lot of better versions of the R-series thinkpads arrived. I noticed, that the USB 1.1 and sloppy Intel Graphics Chip where no good choice. Also the ACPI implementation is more than worse and IBM never really fixed it.

Within the next years with excessive use during my studies in computer science I had a lot of trouble getting the direct rendering and stable USB support running. This happens arround the time when the new 2.6 kernel series and the new Xserver (after 6.8) came up.

Nevertheless this is a thinkpad in best traditions, easy to use, comfortable and with excellent support. The latter I had to use 2 times replacing my motherboard.


I am only posting newer links for this notebook, due a lot of pages out there are fairly outdated:


dmidecode get's the following

BIOS Information
       Vendor: IBM
       Version: 1FETF1WW (3.110)
       Release Date: 11/16/2004
       Address: 0xF0000
       Runtime Size: 64 kB
       ROM Size: 512 kB
               ISA is supported
               PCI is supported
               PC Card (PCMCIA) is supported
               PNP is supported
               APM is supported
               BIOS is upgradeable
               BIOS shadowing is allowed
               Boot from CD is supported
               Selectable boot is supported
               EDD is supported
               Japanese floppy for NEC 9800 1.2 MB is supported (int 13h)
               Japanese floppy for Toshiba 1.2 MB is supported (int 13h)
               3.5"/720 KB floppy services are supported (int 13h)
               3.5"/2.88 MB floppy services are supported (int 13h)
               Print screen service is supported (int 5h)
               8042 keyboard services are supported (int 9h)
               Serial services are supported (int 14h)
               Printer services are supported (int 17h)
               CGA/mono video services are supported (int 10h)
               ACPI is supported
               AGP is supported
               Smart battery is supported


Processor Information
       Socket Designation: U11
       Type: Central Processor
       Family: Pentium III
       Manufacturer: Intel
       Signature: Type 0, Family 6, Model 11, Stepping 1
       Version: Pentium(R) III-M         
       Voltage: 1.6 V
       External Clock: 133 MHz
       Max Speed: 1133 MHz
       Current Speed: 1133 MHz


00:00.0 Host bridge: Intel Corporation 82830 830 Chipset Host Bridge (rev 04)
00:02.0 VGA compatible controller: Intel Corporation 82830 CGC [Chipset Graphics Controller] (rev 04)
00:02.1 Display controller: Intel Corporation 82830 CGC [Chipset Graphics Controller]
00:1d.0 USB Controller: Intel Corporation 82801CA/CAM USB Controller #1 (rev 02)
00:1d.1 USB Controller: Intel Corporation 82801CA/CAM USB Controller #2 (rev 02)
00:1d.2 USB Controller: Intel Corporation 82801CA/CAM USB Controller #3 (rev 02)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 42)
00:1f.0 ISA bridge: Intel Corporation 82801CAM ISA Bridge (LPC) (rev 02)
00:1f.1 IDE interface: Intel Corporation 82801CAM IDE U100 Controller (rev 02)
00:1f.3 SMBus: Intel Corporation 82801CA/CAM SMBus Controller (rev 02)
00:1f.5 Multimedia audio controller: Intel Corporation 82801CA/CAM AC'97 Audio Controller (rev 02)
00:1f.6 Modem: Intel Corporation 82801CA/CAM AC'97 Modem Controller (rev 02)
01:08.0 Ethernet controller: Intel Corporation 82801CAM (ICH3) PRO/100 VE (LOM) Ethernet Controller (rev 42)
01:09.0 CardBus bridge: Texas Instruments PCI1410 PC card Cardbus Controller (rev 02)



  • Floppy, Serial Port, Parallel Port and Infrared Port are disabled
  • The PCI Settings are all set to auto (do not set the IRQs manually)

Custom ACPI table for linux

The bios acpi is buggy. Since I fixed it, my system is almost stable (some IRQ problems remain).

I use the latest Bios Version 3.110 1FETF1WW of 2004-11-16 and fixed the acpi table manually (which is not a trivial task).

(for kernel 2.6.24 and newer) and recreate your initramfs.

sudo unzip /wherever_downloaded/ -d /etc/initramfs-tools
sudo update-initramfs -c -k $(uname -r)

TEST: After reboot your dmesg should show something like

root@ibmr31:~# dmesg | grep DSDT
[  885.444768] ACPI: Looking for DSDT in initramfs... successfully read 20423 bytes from /DSDT.aml.
[  885.444823] ACPI: Table DSDT replaced by host OS

Now can be sure, your new DSDT was loaded.

External Hardware


I use an Logitech Quickcam DeLuxe Notebook using the gscpa driver

cd /usr/src
apt-get install gscpa-source
tar xjvf gspca.tar.bz2
module-assistent a-i gscpa

Unfortunatly this cam uses to crash randomly with the NEC pcmcia USB 2.0 card. Also the pcmcia slot is used by the wireless card ... so the "notebook" webcam sits upon my desktop pc ;(

PCMCIA Wireless

Using a netgear WPN511 54Mbs pcmcia card (Range Max, but 108Mbs not working for me). The output of lspci is:

02:00.0 Ethernet controller: Atheros Communications Inc. 
       AR5212/AR5213 Multiprotocol MAC/baseband processor (rev 01)

For ubuntu hardy i needed to get the actual madwifi (atheros) driver to get the card working, the 8,04 atherors drivers are not up to date:

apt-get install madwifi-tools linux-restricted-modules-$(uname -r)

Now invoke this little script (or exec line by line)


sudo apt-get update
sudo apt-get install build-essential
[ -e ${MADWIFI} ] || wget '${MADWIFI}'
[ -e ${MADWIFI} ] || tar zxvf madwifi-nr-r3366+ar5007.tar.gz
cd madwifi-nr-r3366+ar5007
make clean
sudo make install

Reboot the machine and enjoy stable wlan ;)

New burner in ultrabay

Bought a standard slimline dvd burner from Teac for about 80 € / 60 $, applied the parts from the original CD/DVD. I simply took the old ultrabay cd/dvd combo to the dealer and looked about a matching slimline burner ;)

I had to fiddle around a little bit with the outside cover to fit, but it works like a charme for years now:

  • TEAC DVD Model No. SD-R6472

Ubuntu Hardy / 8.10


There occured major problems due to the new Xorg driver for the intel graphics chipset. Most problems had gone since 8.04 but there are artifacts that make life harder and are looking very ugly. The problem may be fixed by enabling the XAA rendering engine (default is EXA).

--Apos 13:23, 10 March 2009 (CET)

So here's the xorg.conf that fixes those problems and (!) enables the dual screen function, if you attach a monitor on the laptops vga output connector:

# xorg.conf (X.Org X Window System server configuration file)
# This file was generated by dexconf, the Debian X Configuration tool, using
# values from the debconf database.
# Edit this file with caution, and see the xorg.conf manual page.
# (Type "man xorg.conf" at the shell prompt.)
# This file is automatically updated on xserver-xorg package upgrades *only*
# if it has not been modified since the last upgrade of the xserver-xorg
# package.
# If you have edited this file but would like it to be automatically updated
# again, run the following command:
#   sudo dpkg-reconfigure -phigh xserver-xorg

Section "ServerFlags"
	# Scrolling with trackpoint and middle mouse button.
	# Needs the pecial ntries for the mouse in InputDevice Section.
	# New xorg device detection is driven by hal only.
	# This make the behaviour working again.
	Option		"AutoAddDevices"	"false"

Section "InputDevice"
	Identifier	"Configured Mouse"
	Driver		"mouse"
	# Scrolling with trackpoint and middle mouse button.
	Option          "ZAxisMapping"          "4 5"
        Option          "Emulate3Buttons"       "true"
        Option          "EmulateWheel"          "true"
        Option          "EmulateWheelButton"    "2"

Section "InputDevice"
	Identifier	"Generic Keyboard"
	Driver		"kbd"
	Option		"XkbRules"	"xorg"
	Option		"XkbModel"	"pc105"
	Option		"XkbLayout"	"de"

Section "Screen"
	Identifier	"Configured Screen Device"
	Device	"Configured Video Device"
	DefaultDepth     16
	SubSection "Display"
		Virtual	2048 768

Section "Device"
	Identifier	"Configured Video Device"
	Option		"DRI"		"true"
	Option		"AccelMethod"	"XAA"
	Option		"XAANoOffScreenPixmaps" "1"
	Option		"XaaNoPixmapCache"


Skype and Logitech Quickcam Notebook

The cam gives me

# lsusb
046d:08d8 Logitech, Inc. QuickCam for Notebook Deluxe

It has a very clear and sharp picture and a good build in microphone and is only suitable for fixation on top of thin laptop screens.

Due to the thread "Skype crash when I start my webcam" I thried to start skype with the option:

env LD_PRELOAD=/usr/lib/libv4l/ skype

Somethimes i can get the thing to work, sometimes not.

Skype and Logitech E2500 Webcam with gstfakevideo

Skype permanently crashed on video chats. The follwing article led me into the solution:

FIRST Install the "gspca.ko" driver mentioned in the original thread above.

THEN login as root in a terminal

sudo su
cd /usr/src

Download an install gstfakevideo (which will later start your skype):

sudo apt-get update
sudo apt-get install libgstreamer0.10-dev gstreamer-tools svn-buildpackage
svn checkout gstfakevideo
cd gstfakevideo
sudo make install

Alter your skype starter in your gnome menu with this command (you can test it previously in a terminal)

sudo mv /dev/video0 /dev/video1
gstfakevideo v4lsrc device=/dev/video1 ! ffmpegcolorspace

That's it. No mor hasssle. No crashes any more ;)

Ubuntu Hardy / 8.04

Remark: This sections mainly shows the differences to the gutsy / 7.10 installation.


Boot parameter

  • Use the kernel parameters as shown in Gutsy. Be aware that no linebreaks in /boot/grub/menu.lst are allowed for # kopt ...:
# kopt=root=UUID="YOUR_UUID" irqpoll i8042.nomux=1 acpi_no_auto_ssdt
acpi_sleep=s3_bios hpet=force splash quiet ro locale=de_DE
  • "acpi_sleep=s3_bios" - for hibernation to function properly use

Then do


which applies these setting automatically to all kernels.

  • "acpi_no_auto_ssdt" - for custom DSDT.aml to apply
  • "hpet=force" - power managment
  • "ec_intr=0" - for some thinkpads when hanging on suspend/resume (don't really now if this applies to other R31/R30 laptop - I don't need it)

Buggy ACPI

  • The existance of the custom ACPI table "/etc/initramfs-tools/DSDT.aml" is not used by default by initramfs-tools any more (kernel 2.6.24 and newer). Therefore you must specify the "acpi_no_auto_ssdt" as boot parameter so that the custum DSDT is compiled into the initramfs file of the kernel.

-> Please read the section above for creating a custom DSDT.

Kernel generic

  • It is NOT necessary any more to use the i386 Kernel. The "generic" flavour (default) runs fine.


  • usplash run's fine - there is no interfere with Xorg and no need to remove the "splash" kernel parameter.

ACPI - power management

General Info

Attention pm-utils: ubuntu hardy/8.04 uses pm-utils package for hibernation/suspend. The scripts are located in /usr/lib/pm-utils/ and all customizations in /etc/pm/. Despite many other posts editing the file /etc/default/acpi-support like in gutsy/7.10 has NO effect any more in hardy/8.04!

Please read e.g. here about how pm-utils work. You can also call man pm-suspend in a console window to get informations.

Very good infos for kernel 2.24 are here:

According to this link, I put the following in /etc/rc.loacl (some mentioned in the above link don't work on my machine):

echo 5 > /proc/sys/vm/laptop_mode
echo 0 > /proc/sys/kernel/nmi_watchdog
echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo 1500 > /proc/sys/vm/dirty_writeback_centisecs
for i in /sys/bus/usb/devices/*/power/autosuspend; do echo 1 > $i; done
hal-disable-polling --device /dev/scd0hal-disable-polling --device /dev/scd0

For harddisk I use the option noatime.

Adding pm-utils quirks for HAL


For suspend getting to work properly with hal (the hardware abstraction layer), we need to activate the appropriate informations - so called quirks - into an .fdi file specifying

  1. the exact model infomation of our machine
  2. the quirks to apply

These quirks could be set individually in


Mine are disabled:


The reason is, because a better way is to add the quirks right into hal's hardware list.

Find out your model information. My notebook type is an 2656-65G. So I do:

$ hal-device | grep 2656
system.hardware.product = '265665G'  (string)

This gets me the product number used by hal (265665G) and the type (string).

We are adding this to the following file, that already lists a lot of other notebooks from ibm:

vim /usr/share/hal/fdi/information/10freedesktop/20-video-quirk-pm-ibm.fdi
     <match key="system.hardware.product" string="265665G">
        <match key="system.firmware.version" prefix="1FETF1WW">
           <merge key="power_management.quirk.s3_bios" type="bool">true</merge>
           <merge key="power_management.quirk.dpms_suspend" type="bool">false</merge>
           <merge key="power_management.quirk.vbestate_restore" type="bool">false</merge>
           <merge key="power_management.quirk.vbemode_restore" type="bool">false</merge>

Now restart the hal service:

/etc/init.d/hal restart

You can check, if the settings applied:

$ hal-device | grep quirk
 power_management.quirk.s3_bios = true  (bool)
 power_management.quirk.dpms_suspend = false  (bool)
 power_management.quirk.vbestate_restore = false  (bool)
 power_management.quirk.vbemode_restore = false  (bool)


  • Set the according section of the cpu scaling to ondemand in power management settings.
  • Disable the suspend action.


Hibernation works now (hardy). Two minor problems remain:

  1. Screen stays blank after resume from suspend - I pointed out my suggestions here . Or manually switch with Ctrl+F7 or F9 to the X console. This solution might be wrong because the scripts in /etc/acpi/sleep.d/ should not be used in hardy.
  2. No sound after resume from hibernation. I posted the solution in bug #198218.

Supend to ram (sleep mode)

Does not work and system freezes upon wakeup. Disable in the power management settings.


[Update --Apos 11:33, 14 June 2008 (CEST)]

bug 14528 is back. DRI not working in 8.04. System freezes. ;(

DRI is not usable after a cold boot. I filed a bug at and ubuntu launchpad. The system freezes upon X start.



This file is much shorter since 7.10 and the use of the "intel" driver (no DRI so far). This means you cannot use compiz or metacities composite extension. (see next section for a quick hack enabling compiz).

Basic changes:

  • intel driver cares of most settings automatically now
  • use of default depth 16 for the chipset of the i830M (R31) is MANDATORY. Depth 24 will give you trouble, trouble, trouble and less quality.
  • DRI disabled
Section "InputDevice"
	Identifier	"Generic Keyboard"
	Driver		"kbd"
	Option		"XkbRules"	"xorg"
	Option		"XkbModel"	"pc105"
	Option		"XkbLayout"	"de"

Section "InputDevice"
	Identifier	"Configured Mouse"
	Driver		"mouse"
        #Option          "Protocol"              "ImPS/2"
        Option          "ZAxisMapping"          "4 5"
        Option          "Emulate3Buttons"       "true"
        Option          "EmulateWheel"          "true"
        Option          "EmulateWheelButton"    "2"

Section "Device"
	Identifier	"Configured Video Device"
	Driver		"intel"
	Option		"DRI"	"false"    # in case of a freeze ubuntu 8.04
	Option		"DPMS"

Section "Monitor"
	Identifier	"Configured Monitor"

Section "Screen"
	Identifier	"Default Screen"
	Monitor		"Configured Monitor"
       DefaultDepth    16                # do not EVER use 24 for i830M

xorg.conf with EXA

There is a quick hack for using e.g. the metacity composite extension, but not DRI, which would cause the system to hang.

Add the following to the Device section of the xorg.conf: Option "AccelMethod" "exa" Option "MigrationHeuristic" "greedy" Option "ExaNoComposite" "false"

Be aware, that this is just a hack for using the composite extension. It would be incredibly slow for opengl applikations because hardware acceleration the i830M chipset would be able to do is not used!

Compiling intel driver from git

If you know what you are doing, you can compile the intel driver from git repository:


/etc/init.d/gmd stop

sudo apt-get install git-core autoconf automake libtool
sudo apt-get install xorg-dev libdrm-dev mesa-common-dev build-essential

cd /tmp
git clone git://
cd xf86-video-intel


sudo cp /usr/lib/xorg/modules/drivers/ /usr/lib/xorg/modules/drivers/
sudo cp src/.libs/ /usr/lib/xorg/modules/drivers/

/etc/init.d/gmd start

Ubuntu Gutsy / 7.10

Kernel boot parameter

There are some problems running this laptop with a modern 2.6.x linux kernels. Do not set the IRQs in the bios's PCI section manually or your xserver will fail with DRI.

The problems resulting in misbehaviour of your ethernet or usb are all related to a wrong ACPI table of your bios. This is a known bug for many bios's.

Please see

for additional informations about ACPI and the linux kernel.

i386 Version of ubuntu kernel

I am using the actual ubuntu 386 kernel 2.6.14-2-386.

apt-get install linux-image-386 linux-restricted-modules-386

But the generic version seams to run also with the applied changes in this section. (20:08, 25 December 2007 (CET))


The trackpoint does erratic mouse movements out of the sudden


  • add i8042.nomux=1 as kernel parameter


Failure on IRQ - unusable USB/Ethernet

An IRQ problem leaves the usb and ethernet bus unusable . The dmesg message is

dmesg | grep nobody
# irq 11: nobody cared (try booting with the "irqpoll" option)


  • add irqpoll as kernel parameter (this works for my thinkpad submodel - it might not work for you)
  • adding noirqdebug will remove the debug messages

This leads into the following /boot/grub/menu.lst additions

## ## Start Default Options ##
## default kernel options
# [...]
# kopt= [...] ro irqpoll i8042.nomux=1

If you are using an pcmcia usb 2.0 card doing the following might restore the ethernet or usb port in case of a failure

modprobe -r ehci-hcd && modprobe ehci-hcd

Unfortunately the problems appeared for all linux 2.6 kernels by now. It also affects a lot of other thinkpad users. See Bug 8853 irq NN: nobody cared on ThinkPad X61T,T61.


Direct rendering might (!) be broken, if you use usplash.

  • Uninstall usplash
apt-get remove usplash && update-initramfs -c -k `uname -r`

Thinkpad buttons

Don't seem to work with actual 2.6.22 kernels due to "new and fixed" thinkpad-acpi (former ibm-acpi) modules. The problem is, that these "fixes" seam to make the buttons unusable - not just on this kind of older thinkpad model.

For volume-control I use the keyboard shortcut settings of gnome in conjunction with the back/forward buttons on the lower right side of the keyboard.


With support for tuntap, used by virtualbox. Change a_username with the user that uses the tapX device with virtualbox or other emulator software.

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

# The primary network interface
auto tap0
iface tap0 inet manual
 tunctl_user a_username
 uml_proxy_arp ibmr31
 uml_proxy_ether eth0

# - install more if necessary
# - don't forget to add them to br0
# auto tap1
# iface tap1 inet manual
#  tunctl_user a_username
#  uml_proxy_arp this_server
#  uml_proxy_ether eth0
# bridge
auto br0
iface br0 inet dhcp
 bridge_ports eth0 tap0
 bridge_maxwait 0


GLX and DRI works, but it is a little buggy and not very performant. I don't recommend using compiz (desktop effects). Also compiz uses a few percent (~2 %) of additional cpu power and causes some artifacts in some OpenGL applications, like e.g. celestia or stellarium.


I had some real trouble getting X11 with direct rendering to work after a system upgrade of the xserver occured. X11 hung and the whole system froze. I assume that the main reason for this is the buggy ACPI implementation found in this - and many other - machines. But it also might be a bug in the xserver-xorg drivers from intel.

See also here:

With a fresh gutsy install everything is fine. After the online update, things are going worse.

If (!) this happens boot in safe mode and temporarily use the following option in your xorg.conf

Section "Device"
     Option    "noaccel"   "true"

for starting the xserver.

Heres what I did to things fixed permanently

Prerequesites: Use the fixed ACPI table from the Bios section above !!!

1. I removed usplash and run update-initramfs for the used kernel flavours on the machine. You can try to leave this step, probably your system works with usplash (mine did not).

apt-get remove usplash usplash-theme-ubuntu
update-initramfs -c -k $(uname -r)

2. I reinstalled the xserver-xorg-video-intel driver package and xorg-video-core from the gutsy installation CD.

cd /where/the/xserver-xorg-video-*-files-are-on-Install-CD
dpkg -i xserver-xorg-core* xserver-xorg-video-*

It might be additionally necessary to uninstall the xserver-xorg-video-intel and only use the xserver-xorg-video-i810 driver

apt-get remove xserver-xorg-video-intel

You then have to use the i810 driver in the xorg.conf instead of the intel driver.

3. Take care, that the xserver-xorg files are not updated. Therefore edit the 50unattended-upgrades file from the package manager.

nano /etc/apt/apt.conf.d/50unattended-upgrades
// never update the packages in this list
Unattended-Upgrade::Package-Blacklist {
//      "vim";

4. I rebooted the machine

Now the Xserver should work with direct rendering.



The trackpoint can be configured specially for scrolling in conjunction with the middle mouse button. See the xorg.conf in one of the following sections.

Section "InputDevice"
      Option          "ZAxisMapping"          "4 5"
      Option          "YAxisMapping"          "4 5"
      Option          "XAxisMapping"          "6 7"
      Option          "EmulateWheel"          "true"
      Option          "EmulateWheelButton"    "2"

Please read the following article for more informations about using the trackpoint: Thinkwiki - Configure the TrackPoint


# /etc/X11/xorg.conf (xorg X Window System server configuration file)
# This file was generated by dexconf, the Debian X Configuration tool, using
# values from the debconf database.
# Edit this file with caution, and see the xorg.conf(5) manual page.
# (Type "man xorg.conf" at the shell prompt.)
# This file is automatically updated on xserver-xorg package upgrades *only*
# if it has not been modified since the last upgrade of the xserver-xorg
# package.
# If you have edited this file but would like it to be automatically updated
# again, run the following command:
#   sudo dpkg-reconfigure -phigh xserver-xorg

Section "Files"
       FontPath        "/usr/share/fonts/X11/misc"
       # FontPath      "/usr/share/fonts/X11/cyrillic"
       FontPath        "/usr/share/fonts/X11/100dpi/:unscaled"
       FontPath        "/usr/share/fonts/X11/75dpi/:unscaled"
       FontPath        "/usr/share/fonts/X11/Type1"
       FontPath        "/usr/share/fonts/X11/100dpi"
       FontPath        "/usr/share/fonts/X11/75dpi"
       FontPath        "/usr/share/fonts/X11/encodings"
       # path to defoma fonts
       FontPath        "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"

Section "Module"
       #Load   "i2c"
       #Load   "bitmap"
       #Load   "ddc"
       #Load   "extmod"
       #Load   "freetype"
       Load    "glx"     #STANDARD
       #Load   "int10"
       #Load   "vbe"
       #Load   "dbe"     # from Suse 10.3
       Load    "GLcore"  #STANDARD
       Load    "dri"     #STANDARD
       Load    "v4l"     #STANDARD

Section "InputDevice"
       Identifier      "Generic Keyboard"
       Driver          "kbd"
       Option          "CoreKeyboard"
       Option          "XkbRules"      "xorg"
       Option          "XkbModel"      "pc105"
       Option          "XkbLayout"     "de"
       Option          "XkbOptions"    "lv3:ralt_switch"

Section "InputDevice"
       Identifier      "Configured Mouse"
       Driver          "mouse"
       Option          "CorePointer"
       Option          "Device"                "/dev/input/mice"
       Option          "Protocol"              "ImPS/2"
       Option          "ZAxisMapping"          "4 5"
       Option          "YAxisMapping"          "4 5"
       Option          "XAxisMapping"          "6 7"
#      Option          "Emulate3Buttons"       "true"
       Option          "EmulateWheel"          "true"
       Option          "EmulateWheelButton"    "2"

Section "Device"
       Identifier      "Intel Corporation 82830 CGC [Chipset Graphics Controller]"
       Driver          "i810"
       #Driver         "intel"
       BusID           "PCI:0:2:0"
       #Option         "XVideo"                # from SuSE 10.3
       #Option         "DRI"                   # from SuSE 10.3
       Option          "XaaNoPixmapCache"
       VideoRam        65536
        #Option                "noaccel"   "true"      # use when X won't start

Section "Monitor"
       Identifier      "Standardbildschirm"
       Option          "DPMS"

Section "Screen"
       Identifier      "Default Screen"
       Device          "Intel Corporation 82830 CGC [Chipset Graphics Controller]"
       Monitor         "Standardbildschirm"
       DefaultDepth    16
       SubSection "Display"
               Depth           1
               Modes           "1024x768" "1024x600" "800x600" "768x576" "640x480"
       SubSection "Display"
               Depth           4
               Modes           "1024x768" "1024x600" "800x600" "768x576" "640x480"
       SubSection "Display"
               Depth           8
               Modes           "1024x768" "1024x600" "800x600" "768x576" "640x480"
       SubSection "Display"
               Depth           15
               Modes           "1024x768" "1024x600" "800x600" "768x576" "640x480"
       SubSection "Display"
               Depth           16
               Modes           "1024x768" "1024x600" "800x600" "768x576" "640x480"
       SubSection "Display"
               Depth           24
               Modes           "1024x768""1024x600" "800x600" "768x576" "640x480"

Section "ServerLayout"
       Identifier      "Default Layout"
       Screen          "Default Screen"
       InputDevice     "Generic Keyboard"
       InputDevice     "Configured Mouse"
       Option          "XaaNoPixmapCache"

Section "DRI"
       Mode    0660

OpenGL/Video playback- gl - gl2

For playing videos don't use the gl of opengl drivers for your video playback.

The x11 od xv driver work flawlessly. Alter your mulimedia settings accordingly.

Additional informations for ACPI issues

As I mentioned above see

for additional informations about ACPI and the linux kernel.

These are ACPI related boot parameters and how they behave in conjunction with ubuntu gutsy and the R31:

acpi=off       (leaves the system unbootable)
acpi=ht        (leaves the system unbootable)  
acpi=noirq     (leaves the system unbootable)
pci=routeirq   (no positive effect)
pnpacpi=off    (no positive effect)
pci=noacpi     (no positive effect)
noapic         (not tested)
nolapic        (not tested)
irqpoll        WORKS

If you change one of them you have to run update-grub AND update-initramfs -c -k `uname -r`. Remember to always keep a kernel that will boot, either the generic or the 386 flavor. Never (!) run with update-initramfs -c -k all on all installed kernels .

A special page for ACPI issues with Thinpads you'll find here:

Here is what happens to the bus even when booting with irqpoll (but the system keeps working):

cat /var/lib/acpi-support/*-*
 1FETF1WW (3.110)
 Not Available


 button/power PWRF 00000080 00000001

is not responding to the Volume Keys, only the power button.

The IRQ problems might look as followed:

dmesg | grep  0000:00:1f.1
 [   15.932137] ata_piix 0000:00:1f.1: version 2.11
 [   15.932166] ACPI: Unable to derive IRQ for device 0000:00:1f.1
 [   15.932170] ACPI: PCI Interrupt 0000:00:1f.1[A]: no GSI
 [   15.932233] PCI: Setting latency timer of \
                            device 0000:00:1f.1 to 64
dmesg | grep ACPI
 [   15.932166] ACPI: Unable to derive IRQ for device 0000:00:1f.1
 [   18.446255]  [<c0106597>] do_IRQ+0x37/0x70
 [   18.446289]  [<c010659c>] do_IRQ+0x3c/0x70
 [   18.446855] Disabling IRQ #11
dmesg | grep irq
 [    0.000000] Kernel command line: \
                root=UUID=e0342b0c-ee00-4205-919b-6d93a3c35532 \
                ro irqpoll i8042.nomux=1 quiet splash
 [   12.842728] PCI: If a device doesn't work, try "pci=routeirq". \
                If it helps, post a report
 [   18.446145] irq 11: nobody cared (try booting with the \
                "irqpoll" option)
 [   18.446222] [<c0148594>] __report_bad_irq+0x24/0x80
 [   18.446247] [<c01491f1>] handle_level_irq+0x81/0xb0
 [   18.446273] [<c0120d5c>] __do_softirq+0x2c/0xa0
 [   18.446283] [<c0120e15>] do_softirq+0x45/0x50
 [   18.446426] [<f8878590>] (usb_hcd_irq+0x0/0x60 [usbcore])
 [   18.446578] [<f8878590>] (usb_hcd_irq+0x0/0x60 [usbcore])
 [   18.446723] [<f8878590>] (usb_hcd_irq+0x0/0x60 [usbcore])

In the next you can see that IRQ 11 ist running at a much too high level, causing the system to crash. This is probably a not fiixed bios problem.

cat /proc/interrupts 
   0:    7847230    XT-PIC-XT        timer
   1:       3624    XT-PIC-XT        i8042
   2:          0    XT-PIC-XT        cascade
   5:          0    XT-PIC-XT        parport0
   8:          2    XT-PIC-XT        rtc
   9:         39    XT-PIC-XT        acpi
>>11:     100000    XT-PIC-XT        uhci_hcd:usb1, uhci_hcd:usb2,\
                    uhci_hcd:usb3, eth0, yenta, Intel 82801CA-ICH3,\        
  12:      19366    XT-PIC-XT        i8042
  14:      31253    XT-PIC-XT        libata
  15:      45580    XT-PIC-XT        libata