Copyright © 2004-2006 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 |
|
||
| 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 |
|
||
| Revision 0.4.3 | 2004-12-27 | HBA |
| Fixed instructions for enabling MergedFB | ||
| Revision 0.4.2 | 2004-11-28 | HBA |
|
||
| 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 |
|
||
| 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
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.
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.
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.
Feedback is most certainly welcome for this document. Send
your additions, comments and criticisms to the following email
address: <henrik@brixandersen.dk>.
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
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.
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)
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)
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.
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.
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.
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)
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).
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)
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.
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)
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.
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)
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)
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)
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.
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.
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.
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]
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]
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.
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)
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)
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)
There are two drivers supporting the sound card of the X31: The Advanced Linux Sound Architecture (ALSA) and the deprecated Open Sound System (OSS).
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
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)
There are two drivers supporting the modem of the X31: the proprietary Smart Link driver or the experimental in-kernel ALSA 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.
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
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)
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)
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
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)
You should not enable the TPM driver unless you really need it and you know how to use it.
This section describes how to configure X11R6.8.2 to work with the hardware of the X31.
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
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.
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
ThinkPad X31 2672-XXH Support: Official support page for IBM ThinkPad X31 type 2672-XXH.
Hardware Maintenance Manual - ThinkPad X30, X31: The official maintenance manual for the X31.
System FRU parts list - ThinkPad X30, X31: The official list of Field Replaceable Units in the X31.
Function (Fn) key combinations - ThinkPad X30, X31: A list of the function key combinations.
Extending battery life: Official hints for extending the battery life of your ThinkPad.
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
Unofficial IBM ThinkPad Wiki: User-provided information about IBM ThinkPads.
Solution to the "1802: Unauthorized network card" problem: Vojtech Pavlik has written a small hack that allows to disable the miniPCI white-list check.