GNU/Linux on an IBM ThinkPad X31

Henrik Brix Andersen

Revision History
Revision 0.7.0 2006-01-23 HBA
Updated for linux-2.6.15
Revision 0.6.2 2005-09-13 HBA
Added warning about TPM driver
Revision 0.6.1 2005-08-12 HBA
Fixed minor typos
Revision 0.6.0 2005-07-18 HBA
Updated for linux-2.6.12
Revision 0.5.5 2005-04-04 HBA
Updated IBM Security Chip section
Revision 0.5.4 2005-03-11 HBA
Updated radeonfb kernel parameter
Revision 0.5.4 2005-03-01 HBA
  • Further simplified ALSA modules.conf entries

  • Added /etc/asound.conf example

  • Added link to watchdog user-space utility

Revision 0.5.3 2005-03-01 HBA
Updated ALSA OSS emulation setup
Revision 0.5.2 2005-02-27 HBA
Updated link to Linux31 mailing list
Revision 0.5.1 2005-02-14 HBA
Updated SMBus section
Revision 0.5.0 2005-02-13 HBA
  • Updated for linux-2.6.11-rc3

  • Added hardware watchdog section

  • Updated xorg.conf

  • Updated lspci listing

  • Added link to my X31 ACPI Event handler script

  • Added more modules.conf examples

Revision 0.4.3 2004-12-27 HBA
Fixed instructions for enabling MergedFB
Revision 0.4.2 2004-11-28 HBA
  • Added link to radeontool web site

  • Added link to kernel .config file

  • Added link to xorg.conf file

Revision 0.4.1 2004-11-27 HBA
Added note about TrackPoint specific kernel driver
Revision 0.4.0 2004-11-01 HBA
Updated for kernel 2.6.9 and X11R6.8
Revision 0.3.1 2004-09-10 HBA
Updated email address and homepage
Revision 0.3.0 2004-08-29 HBA
  • Changed from XFree86-4.3.0 to X.Org Foundation's X11R6.7.0

  • Added a Related Links section

  • Updated ipw2100 driver requirements

  • Added a note about the experimental ibm-acpi module

  • Added X31 type number

  • Added conclusion

Revision 0.2.0 2004-06-28 HBA
First beta version
Revision 0.1.0 2004-06-17 HBA
Initial revision

Abstract

This document describes the process of configuring GNU/Linux for an IBM ThinkPad X31. It covers configuring the Linux kernel for the hardware of the X31 and setting up X11 for the Radeon graphics chipset.

The Docbook XML source from which it was created is available as well. The latest version of this document can be obtained from www.brixandersen.dk.


Table of Contents

1. Introduction
1.1. Copyright and License
1.2. Disclaimer
1.3. Feedback
2. The IBM ThinkPad X31
3. Kernel Configuration
3.1. CPU and Chipset
3.2. Graphics Chipset
3.3. Power Management
3.4. USB Ports
3.5. FireWire
3.6. Infrared Port
3.7. Parallel Port
3.8. CardBus Slot
3.9. Compact Flash Slot
3.10. Ethernet
3.11. Wireless Network
3.12. Sound Card
3.13. Modem
3.14. Hardware Watchdog
3.15. Trackpoint Mouse
3.16. ThinkPad Buttons
3.17. IBM Security Chip
4. X11 Configuration
4.1. Configuration File
5. Conclusion
6. Related Links

1. Introduction

This document describes my experiences with configuring GNU/Linux to run on the X31. The document covers how to set up the kernel for the specific hardware found in the X31 and how to set up the graphical user interface, X11. A certain amount of experience with kernel configuration and X11 is required.

Although the instructions in this document are based on my experiences with Gentoo Linux it should be fairly trivial to use them with any other Linux distribution. I've tried to be as general as possible and left out distribution specific instructions.

1.1. Copyright and License

This document is copyrighted © 2004-2006 by Henrik Brix Andersen. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is available at http://www.gnu.org/copyleft/fdl.html.

Linux is a registered trademark of Linus Torvalds. ThinkPad is a registered trademark of the IBM Corporation.

1.2. Disclaimer

No liability for the contents of this document can be accepted. Use the concepts, examples and information at your own risk. There may be errors and inaccuracies, that could be damaging to your system. Proceed with caution, and although this is highly unlikely, the author(s) do not take any responsibility.

All copyrights are held by their by their respective owners, unless specifically noted otherwise. Use of a term in this document should not be regarded as affecting the validity of any trademark or service mark. Naming of particular products or brands should not be seen as endorsements.

1.3. Feedback

Feedback is most certainly welcome for this document. Send your additions, comments and criticisms to the following email address: .

2. The IBM ThinkPad X31

My IBM ThinkPad X31 is a type 2884-XX2 without built-in bluetooth transceiver. It has the configuration shown in the output of the lspci command in Figure 1.

# lspci
00:00.0 Host bridge: Intel Corporation 82855PM Processor to I/O Controller (rev 03)
00:01.0 PCI bridge: Intel Corporation 82855PM Processor to AGP Controller (rev 03)
00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 01)
00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 01)
00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 01)
00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 01)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 81)
00:1f.0 ISA bridge: Intel Corporation 82801DBM (ICH4-M) LPC Interface Bridge (rev 01)
00:1f.1 IDE interface: Intel Corporation 82801DBM (ICH4-M) IDE Controller (rev 01)
00:1f.3 SMBus: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 01)
00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 01)
00:1f.6 Modem: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 01)
01:00.0 VGA compatible controller: ATI Technologies Inc Radeon Mobility M6 LY
02:00.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)
02:00.1 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)
02:00.2 FireWire (IEEE 1394): Ricoh Co Ltd R5C552 IEEE 1394 Controller (rev 02)
02:02.0 Network controller: Intel Corporation PRO/Wireless 2915ABG MiniPCI Adapter (rev 05)
02:08.0 Ethernet controller: Intel Corporation 82801DB PRO/100 VE (MOB) Ethernet Controller (rev 81)

Figure 1. Output of the lspci command


3. Kernel Configuration

This section describes how to configure a Linux kernel version 2.6.x for the hardware found in the X31. The instructions found in this revision of the document has been tested with linux-2.6.15. Only options closely related to the X31 specific hardware are mentioned; which options to enable apart from those is beyond the scope of this document.

The kernel options which I have chosen to build as modules are marked with [module]. My main reasons to compile certain functionality as modules is to enable run-time configuration through module parameters and to be able to only load a module when that particular functionality is needed.

My latest kernel .config file can be found at my web site.

3.1. CPU and Chipset

Kernel support for the Pentium M CPU and the Centrino chipset of the X31 is enabled through the kernel options listed below.

  • Subarchitecture Type (PC-compatible) (CONFIG_X86_PC)

  • Processor family (Pentium M) (CONFIG_MPENTIUMM)

  • Machine Check Exception (CONFIG_X86_MCE)

  • MTRR (Memory Type Range Register) support (CONFIG_MTRR)

  • PCI support (CONFIG_PCI)

  • ISA support (CONFIG_ISA)

  • ATA/ATAPI/MFM/RLL support (CONFIG_IDE)

  • Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support (CONFIG_BLK_DEV_IDE)

  • Include IDE/ATA-2 DISK support (CONFIG_BLK_DEV_IDEDISK)

  • PCI IDE chipset support (CONFIG_BLK_DEV_IDEPCI)

  • Sharing PCI IDE interrupts support (CONFIG_IDEPCI_SHARE_IRQ)

  • Generic PCI bus-master DMA support (CONFIG_BLK_DEV_IDEDMA_PCI)

  • Use PCI DMA by default when available (CONFIG_IDEDMA_PCI_AUTO)

  • Intel PIIXn chipsets support (CONFIG_BLK_DEV_PIIX)

3.1.1. SMBus

The SMBus of the X31 is supported by the kernel options listed below. Since the only devices connected to the SMBus are the DIMM EEPROMS, it's not of much use.

  • I2C device interface (CONFIG_I2C_CHARDEV)

  • Intel 801 (CONFIG_I2C_I801)

Warning

Due to some rather nasty accidents with SMBus access on IBM ThinkPads in the past I recommend not fiddling with it unless you know what you are doing.

3.2. Graphics Chipset

The X31 is equipped with an ATI Technologies Inc. Radeon Mobility M6 LY graphics chipset. The kernel has support for a high resolution framebuffer console on the Radeon chipset and a direct rendering manager which improves the performance of OpenGL 3D applications under X11.

Frederick Dean has written a small utility called radeontool which can be used for controlling the Radeon graphics chipset.

3.2.1. Framebuffer Console

To enable the high resolution framebuffer console you need the kernel options mentioned below.

  • Support for frame buffer devices (CONFIG_FB)

  • ATI Radeon display support (CONFIG_FB_RADEON)

  • Video mode selection support (CONFIG_VIDEO_SELECT)

  • Framebuffer Console support (CONFIG_FRAMEBUFFER_CONSOLE)

To actually use the high resolution framebuffer you need to pass a video= option to the kernel at boot time like the one shown in Figure 2. For more information see the documentation for the kernel and your boot loader.

video=radeonfb:1024x768-32

Figure 2. 1024x768 32bpp Framebuffer Configuration


3.2.2. Direct Rendering

To enable the direct rendering manager you need the kernel options listed below. The X11 specific configuration is covered in Section 4.

  • /dev/agpgart (AGP Support) (CONFIG_AGP)

  • Intel 440LX/BX/GX, I8xx and E7x05 chipset support (CONFIG_AGP_INTEL)

  • Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) (CONFIG_DRM)

  • ATI Radeon (CONFIG_DRM_RADEON)

3.3. Power Management

You have two choices when it comes to power management for the X31: the older Advanced Power Management (APM) or the newer Advanced Configuration and Power Interface, (ACPI).

3.3.1. APM

To use APM you need to kernel options listed below. You will also need apmd, the Linux APM Daemon.

  • Power Management support (CONFIG_PM)

  • APM (Advanced Power Management) BIOS support (CONFIG_APM)

  • Enable PM at boot time (CONFIG_APM_DO_ENABLE)

  • Make CPU Idle calls when idle (CONFIG_APM_CPU_IDLE)

  • Enable console blanking using APM (CONFIG_APM_DISPLAY_BLANK)

  • RTC stores time in GMT (CONFIG_APM_RTC_IS_GMT)

  • Allow interrupts during APM BIOS calls (CONFIG_APM_ALLOW_INTS)

3.3.1.1. APM Suspend

You can make the X31 enter standby mode by pressing Fn+F3. Pressing Fn+F4 will make the X31 suspend to RAM.

You can use the tphdisk utility to create a save2dsk.bin hibernation file on a primary, hidden FAT16 partition. You should then be able to make the X31 suspend to disk by pressing Fn+F12.

3.3.2. ACPI

To use ACPI you will need the kernel options listed below instead of the ones listed in Section 3.3.1. You will also need acpid, the Linux ACPI Daemon.

  • Power Management support (CONFIG_PM)

  • Sleep States (CONFIG_ACPI_SLEEP)

  • ACPI Support (CONFIG_ACPI)

  • AC Adapter (CONFIG_ACPI_AC)

  • Battery (CONFIG_ACPI_BATTERY)

  • Button (CONFIG_ACPI_BUTTON)

  • Processor (CONFIG_ACPI_PROCESSOR)

  • Thermal Zone (CONFIG_ACPI_THERMAL)

  • IBM ThinkPad Laptop Extras (CONFIG_ACPI_IBM) [module]

  • Power Management Timer Support (CONFIG_X86_PM_TIMER)

3.3.2.1. ACPI Suspend

You can make the X31 enter standby mode using the command echo -n standby > /sys/power/state. To make the X31 suspend to RAM you use the command echo -n mem > /sys/power/state.

Suspend to disk under ACPI can be achieved using the kernel options listed below. You should then be able to make the X31 suspend to disk using the command echo -n disk > /sys/power/state.

  • Power Management support (CONFIG_PM)

  • Software Suspend (CONFIG_SOFTWARE_SUSPEND)

To tell the kernel which swap partition to read the memory dump from at boot time you need need to pass a resume= option to the kernel like the one shown in Figure 3. For more information see the documentation for the kernel and your boot loader.

resume=/dev/hda2

Figure 3. Suspend to disk configuration with swap on /dev/hda2


3.3.3. CPU Frequency Scaling

To enable the dynamic frequency scaling of the Centrino chipset you need the kernel options listed below. The CPU frequency can then be adjusted through the /sys/devices/system/cpu/cpu0/cpufreq/ interface. You will need a user-space utility such as cpufreqd if you wish to automate the frequency.

  • CPU Frequency scaling (CONFIG_CPU_FREQ)

  • 'performance' governor (CONFIG_CPU_FREQ_GOV_PERFORMANCE)

  • 'powersave' governor (CONFIG_CPU_FREQ_GOV_POWERSAVE)

  • 'userspace' governor for userspace frequency scaling (CONFIG_CPU_FREQ_GOV_USERSPACE)

  • 'ondemand' cpufreq policy governor (CONFIG_CPU_FREQ_GOV_ONDEMAND)

  • CPU frequency table helpers (CONFIG_CPU_FREQ_TABLE)

  • Intel Enhanced SpeedStep (CONFIG_X86_SPEEDSTEP_CENTRINO)

If you use ACPI, you will need the kernel options listed below as well.

  • Use ACPI tables to decode valid frequency/voltage pairs (CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI)

  • Built-in tables for Banias CPUs (CONFIG_X86_SPEEDSTEP_CENTRINO_TABLE)

3.4. USB Ports

To enable the USB ports of the X31 you need the kernel options listed below along with drivers for the devices you plan to attach.

  • Support for Host-side USB (CONFIG_USB)

  • EHCI HCD (USB 2.0) support (CONFIG_USB_EHCI_HCD)

  • UHCI HCD (most Intel and VIA) support (CONFIG_USB_UHCI_HCD)

3.5. FireWire

The FireWire controller of the X31 conforms to the Open Host Controller Interface specification, OHCI. To enable it you need the kernel options listed below along with drivers for the devices you plan to attach.

  • IEEE 1394 (FireWire) support (CONFIG_IEEE1394)

  • OHCI-1394 support (CONFIG_IEEE1394_OHCI1394)

3.6. Infrared Port

To use the FIR port, a Fast Infrared port, of the X31 you need at least the kernel options listed below. You may want to enable higher level IrDA protocols such as the IrCOMM protocol (CONFIG_IRCOMM) which implements serial port emulation. You will need the irda-utils software package from The Linux IrDA Project.

  • IrDA (infrared) subsystem support (CONFIG_IRDA) [module]

  • NSC PC87108/PC87338 (CONFIG_NSC_FIR) [module]

To have the kernel module recognize the hardware correctly you need to add the contents of Figure 4 to /etc/modules.conf.

alias irda0 nsc-ircc
options nsc-ircc dongle_id=0x9

Figure 4. Infrared port related entries in /etc/modules.conf


You will need to execute the command irattach irda0 to set up the infrared port.

Note

If you have enabled 8250/16550 and compatible serial support (CONFIG_SERIAL_8250) in the kernel you may have to add the line pre-install nsc-ircc /bin/setserial /dev/ttyS1 uart none to /etc/modules.conf to disable the serial driver for the infrared port.

3.7. Parallel Port

To enable the parallel port of the X31 you will need the kernel options listed below.

  • Parallel port support (CONFIG_PARPORT) [module]

  • PC-style hardware (CONFIG_PARPORT_PC) [module]

To have the kernel module automatically loaded when needed you should add the contents of Figure 5 to /etc/modules.conf.

alias parport_lowlevel parport_pc

Figure 5. Parallel port related entries in /etc/modules.conf


3.8. CardBus Slot

To enable the CardBus slot of the X31 you need the kernel options listed below along with drivers for the cards you plan to insert. You will need the pcmciautils, user-space utilities for automatically loading the required drivers upon card insertion.

  • PCCard (PCMCIA/CardBus) support (CONFIG_PCCARD)

  • 16-bit PCMCIA support (CONFIG_PCMCIA)

  • 32-bit CardBus support (CONFIG_CARDBUS)

  • CardBus yenta-compatible bridge support (CONFIG_YENTA) [module]

3.9. Compact Flash Slot

The Compact Flash reader of the X31 is connected to the CardBus controller. Apart from the requirements listed in Section 3.8 you will need a device driver for your Compact Flash card. For storage devices you will need the following kernel option.

  • PCMCIA IDE support (CONFIG_BLK_DEV_IDECS) [module]

3.10. Ethernet

There are two drivers supporting the ethernet card of the X31: The e100 driver written by Intel and the eepro100 driver written by Donald Becker. Both are included in the Linux kernel.

3.10.1. E100 Driver

To use the e100 driver written by Intel you need the kernel options listed below:

  • Ethernet (10 or 100Mbit) (CONFIG_NET_ETHERNET)

  • EISA, VLB, PCI and on board controllers (CONFIG_NET_PCI)

  • Intel(R) PRO/100+ support (CONFIG_E100)

3.10.2. EEPRO100 Driver

To use the eepro100 driver written by Donald Becker you need the kernel options listed below instead of the ones listed in Section 3.10.1:

  • Ethernet (10 or 100Mbit) (CONFIG_NET_ETHERNET)

  • EISA, VLB, PCI and on board controllers (CONFIG_NET_PCI)

  • EtherExpressPro/100 support (eepro100, original Becker driver) (CONFIG_EEPRO100)

3.11. Wireless Network

Apart from the kernel options listed below you will need the firmware for the card and wireless-tools for setting up the connection.

The ipw2100 driver depends on the kernel options listed below.

  • Hotplug firmware loading support (CONFIG_FW_LOADER)

  • Wireless LAN drivers (non-hamradio) & Wireless Extensions (CONFIG_NET_RADIO)

  • Cryptographic API (CONFIG_CRYPTO)

  • ARC4 cipher algorithm (CONFIG_CRYPTO_ARC4)

  • Michael MIC keyed digest algorithm (CONFIG_CRYPTO_MICHAEL_MIC)

  • AES cipher algorithms (i586) (CONFIG_CRYPTO_AES_586)

  • CRC32 functions (CONFIG_CRC32)

3.12. Sound Card

There are two drivers supporting the sound card of the X31: The Advanced Linux Sound Architecture (ALSA) and the deprecated Open Sound System (OSS).

3.12.1. ALSA Driver

To use the ALSA driver for the sound card you need the kernel options listed below. They include a backwards-compatible OSS API enabling legacy applications which has yet to be ported to the ALSA API to function correctly. You will also need the alsa-utils software package from The ALSA Project.

  • Sound card support (CONFIG_SOUND) [module]

  • Advanced Linux Sound Architecture (CONFIG_SND) [module]

  • OSS Mixer API (CONFIG_SND_MIXER_OSS) [module]

  • OSS PCM (digital audio) API (CONFIG_SND_PCM_OSS) [module]

  • Intel i8x0/MX440, SiS 7012; Ali 5455; NForce Audio; AMD768/8111 (CONFIG_SND_INTEL8X0) [module]

To have the alsa-utils load the correct modules you need to add the contents of Figure 6 to /etc/modules.conf.

# ALSA portion
alias char-major-116 snd
alias snd-card-0 snd-intel8x0

# OSS/Free portion
alias char-major-14 soundcore
alias sound-slot-0 snd-intel8x0
alias sound-service-0-0 snd-mixer-oss
alias sound-service-0-3 snd-pcm-oss
alias sound-service-0-12 snd-pcm-oss

alias /dev/mixer snd-mixer-oss
alias /dev/dsp snd-pcm-oss

Figure 6. ALSA related entries in /etc/modules.conf


3.12.2. OSS Driver

To use the deprecated OSS driver for the sound card you need the kernel options listed below instead of the ones listed in Section 3.12.1.

  • Sound card support (CONFIG_SOUND)

  • Open Sound System (DEPRECATED) (CONFIG_SOUND_PRIME)

  • Intel ICH (i8xx) audio support (CONFIG_SOUND_ICH)

3.12.3. PC Speaker

While technically the PC speaker isn't part of the sound card I have listed it here for the sake of completeness. To enable the PC speaker you need the kernel options listed below.

  • Misc (CONFIG_INPUT_MISC)

  • PC Speaker support (CONFIG_INPUT_PCSPKR)

3.13. Modem

There are two drivers supporting the modem of the X31: the proprietary Smart Link driver or the experimental in-kernel ALSA driver.

3.13.1. Smart Link Driver

To use the proprietary Smart Link modem driver under kernel 2.6.x you need the latest version of the Smart Link Linux drivers.

3.13.2. ALSA Driver

To use the ALSA driver instead of the proprietary Smart Link driver you need the kernel option listed below (see Section 3.12.1 for more information on ALSA kernel options). You will still need the open source slmodemd application from the Smart Link driver.

  • Intel i8x0/MX440; AMD768/8111 modems (EXPERIMENTAL) (CONFIG_SND_INTEL8X0M) [module]

To have the alsa-utils load the correct module for the modem you need to add the contents of Figure 7 to /etc/modules.conf.

alias snd-card-1 snd-intel8x0m
options snd cards_limit=2

Figure 7. ALSA modem related entries in /etc/modules.conf


3.14. Hardware Watchdog

To enable the hardware watchdog you need the kernel options listed below. You will also need a user-space utility such as watchdog.

  • Watchdog Timer Support (CONFIG_WATCHDOG)

  • Intel i8xx TCO Timer/Watchdog (CONFIG_I8XX_TCO)

3.15. Trackpoint Mouse

The Trackpoint is a PS/2 compatible mouse. To enable it you need the kernel options listed below. The device will be called /dev/input/mouse0. A common device for all mice is available as /dev/input/mice which replaces the legacy device /dev/psaux. A graphical TrackPoint configuration tool is also available.

  • Mouse interface (CONFIG_INPUT_MOUSEDEV)

  • Mice (CONFIG_INPUT_MOUSE)

  • PS/2 mouse (CONFIG_MOUSE_PS2)

3.16. ThinkPad Buttons

The state of the ThinkPad specific buttons is reported through a non-volatile RAM chip. To enable the buttons you need the kernel option listed below. You will also need the tpb utility.

  • /dev/nvram support (CONFIG_NVRAM)

To use the ThinkPad specific buttons under ACPI you will need to tell the ibm-acpi module to enable the hotkeys and setup an ACPI event handler script like my x31.sh. To enable the hotkeys you need to add the contents of Figure 8 to /etc/modules.conf.

options ibm_acpi hotkey=enable,0xffff

Figure 8. ThinkPad buttons related entries in /etc/modules.conf


3.17. IBM Security Chip

The IBM Security Chip is a TPM chip.

To use the in-kernel TPM driver you need the kernel options listed below. You will also need a user-space TCG Software Stack (TSS) such as TrouSerS.

  • TPM Hardware Support (CONFIG_TCG_TPM)

  • Atmel TPM Interface (CONFIG_TCG_ATMEL)

Warning

You should not enable the TPM driver unless you really need it and you know how to use it.

4. X11 Configuration

This section describes how to configure X11R6.8.2 to work with the hardware of the X31.

4.1. Configuration File

The configuration listed in Figure 9 includes a setup for the Radeon specific Xinerama called MergedFB. Uncomment the appropriate lines if you wish to enable it.

You will need to adjust the CRT2HSync and CRT2VRefresh options for the external monitor according to it's specifications.

My latest xorg.conf file can be found at my web site.

# /etc/X11/xorg.conf
#
# 2005-07-18 Henrik Brix Andersen
#
#	Notes:
#	* Config for the X.Org Foundation X11R6.8.2 release
#
#	Hardware:
#	* IBM Thinkpad X31


Section "Files"
	# local font server on unix socket
	#FontPath	"unix/:-1"

	FontPath	"/usr/share/fonts/75dpi"
	FontPath	"/usr/share/fonts/100dpi"
	FontPath	"/usr/share/fonts/CID"
	FontPath	"/usr/share/fonts/TTF"
	FontPath	"/usr/share/fonts/Type1"
	FontPath	"/usr/share/fonts/arphicfonts"
	FontPath	"/usr/share/fonts/artwiz"
	FontPath	"/usr/share/fonts/baekmuk-fonts"
	FontPath	"/usr/share/fonts/corefonts"
	FontPath	"/usr/share/fonts/default/ghostscript"
	FontPath	"/usr/share/fonts/kochi-substitute"
	FontPath	"/usr/share/fonts/freefont"
	FontPath	"/usr/share/fonts/kochi-substitute"
	FontPath	"/usr/share/fonts/local"
	FontPath	"/usr/share/fonts/misc"
	FontPath	"/usr/share/fonts/sazanami"
	FontPath	"/usr/share/fonts/sharefonts"
	FontPath	"/usr/share/fonts/ttf-bitstream-vera"
EndSection


Section "ServerFlags"
	# using acpi-enabled kernel - /dev/apm_bios not present
#	Option		"PM" "off"
EndSection


Section "Module"
	Load		"dbe"		# double-buffering extension
	Load		"extmod"	# commonly used server extensions
#	 Load		 "fbdevhw"	 # functions for talking to framebuffer device
	Load		"dri"		# direct rendering infrastructure
	Load		"glx"		# OpenGL X protocol interface

	Load		"v4l"		# video4linux

	Load		"record"	# Xevent recorder

	# following two modules needed if not running xfs
	#Load		 "freetype"	# freetype font rasterer
	#Load		 "type1"	# type 1 font rasterer
EndSection


Section "Extensions"
	Option		"Composite" "on"
EndSection


Section "InputDevice"
	Identifier	"Keyboard"
	Driver		"kbd"

	# the microsoftinet model has support for the
	# forward/backward buttons
	Option		"XkbModel" "microsoftinet"

	# allow switching between keymaps
	Option		"XkbLayout" "dk,dk"
	Option		"XkbVariant" "nodeadkeys,"
	Option		"XkbOptions" "grp:caps_toggle,grp_led:caps"
EndSection


Section "InputDevice"
	Identifier	"Mice"
	Driver		"mouse"

	Option		"Device" "/dev/input/mice"
	Option		"Protocol" "Auto"
	Option		"Emulate3Buttons" "off"
	Option		"ZAxisMapping" "4 5"
EndSection


Section "Device"
	Identifier	"ATI Radeon"
	Driver		"radeon"
	VendorName	"ATI Technologies Inc"
	BoardName	"Radeon Mobility M6 LY"

	Option		"AGPMode" "4"
	Option		"AGPFastWrite" "on"
	Option		"EnablePageFlip" "on"
	Option		"RenderAccel" "on"
	Option		"DynamicClocks" "on"

	Option		"BIOSHotkeys" "on"

	# enable radeon specific xinerama
#	Option		"MergedFB" "on"
	Option		"MergedFB" "off"

	# external monitor timings
	Option		"CRT2HSync" "30.0-68.0"
	Option		"CRT2VRefresh" "50.0-110.0"

	Option		"MonitorLayout" "LVDS, TMDS"

#	Option		"MetaModes" "1024x768-1280x1024"

	Option		"CRT2Position" "Clone"
#	Option		"CRT2Position" "LeftOf"
#	Option		"CRT2Position" "RightOf"
#	Option		"CRT2Position" "Above"
#	Option		"CRT2Position" "Below"
EndSection


Section "Monitor"
	Identifier	"Monitor"
	VendorName	"Unknown"
	ModelName	"Unknown"

	# comment this out when using MergedFB
	DisplaySize	245 185

	Option		"dpms"
EndSection


Section "Screen"
	Identifier	"Screen"
	Device		"ATI Radeon"
	Monitor		"Monitor"
	DefaultDepth	24

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

		# uncomment this for MergedFB
#		Virtual		1024 1536
	EndSubsection
EndSection


Section "ServerLayout"
	Identifier	"ServerLayout"

	Screen		"Screen"
	InputDevice	"Mice" "CorePointer"
	InputDevice	"Keyboard" "CoreKeyboard"
EndSection


Section "DRI"
	Mode		0666
EndSection

Figure 9. Contents of /etc/X11/xorg.conf


5. Conclusion

All the hardware of the IBM ThinkPad X31 works perfectly well with GNU/Linux. Given the instructions in this HOWTO it should be pretty straight forward to set up the kernel and X11 as long as you have a bit of experience with GNU/Linux.

6. Related Links

This section contains a list of hopefully helpful links to various documentation related to the X31 and/or GNU/Linux which I've collected during the the writing of this document.

Official IBM Documentation

Mailing Lists

  • Linux-ThinkPad : A mailing list for users of GNU/Linux on IBM ThinkPads.

  • Linux31: A mailing list for using GNU/Linux on the IBM ThinkPad X31.

Miscellaneous