Debian GNU/Linux on the IBM ThinkPad T42

Hardware

PCI

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 M7 LW [Radeon Mobility 7500]
02:00.0 CardBus bridge: Texas Instruments PCI4520 PC card Cardbus Controller (rev 01)
02:00.1 CardBus bridge: Texas Instruments PCI4520 PC card Cardbus Controller (rev 01)
02:01.0 Ethernet controller: Intel Corporation 82540EP Gigabit Ethernet Controller (Mobile) (rev 03)
02:02.0 Ethernet controller: Atheros Communications, Inc. AR5212 802.11abg NIC (rev 01)
		

USB

Bus 004 Device 001: ID 0000:0000
Bus 003 Device 002: ID 04b3:3108 IBM Corp. 800dpi Optical Mouse w/ Scroll Point
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000
		

Software

I'm using Debian GNU/Linux "etch" (testing) with a custom kernel 2.6.19 (configuration).


ACPI

The various ACPI features appear to work just fine, including the IBM ThinkPad Laptop Extras (CONFIG_ACPI_IBM, ibm_acpi module). It is possible to suspend the system to memory and to disk and so far it rarely had any trouble waking up.

To get it working, start by installing acpid. This will allow you to customize the actions to be taken when Fn-Fx, the power button or any other special keys are pressed and when the lid is closed. You can find a tarball containing the Steffan Otti ACPI scripts in the configuration section - just uncompress it into /etc (and customize).

In order to have control over the Fn-F7 key combination I had to activate ThinkPad hotkey support and set the correct mask:

# /etc/rc.boot/hotkeys
#
# Prepare the ThinkPad hotkeys (the ibm_acpi module needs to be loaded first!)
echo enable > /proc/acpi/ibm/hotkey
echo 0x084c > /proc/acpi/ibm/hotkey
		

Each bit masks one hotkey, starting with Fn-F1, thus this mask enables Fn-F3, Fn-F4, Fn-F7 and Fn-F12, leaving the other combinations alone (you could mask it with ffff, but then you'd have to manually intercept bluetooth activation). See Documentation/ibm-acpi.txt in your linux source directory for details.

Notes:

Fingerprint reader

IBM released a second generation of T42 models in Autumn 2004 featuring Intel Pentium M 765 processors and an integrated fingerprint reader. Unhappyly my T42 model is not a second generation. But, if your T42 has one, see this ThinkWiki page to learn how to configure it.

Graphics

The laptop uses an ATI Radeon Mobility 7500 which works fine with x.org's:

Device Drivers -> Graphics Support -> Support for frame buffer devices
Device Drivers -> Graphics Support -> VESA VGA graphics support
Device Drivers -> Graphics Support -> ATI Radeon display support
Device Drivers -> Graphics Support -> DDC/I2C for ATI Radeon support
Device Drivers -> Graphics Support -> Console display driver support -> Framebuffer Console support
Device Drivers -> Graphics Support -> Logo configuration -> Bootup logo
Device Drivers -> Graphics Support -> Logo configuration -> Standard black and white Linux logo
Device Drivers -> Graphics Support -> Logo configuration -> Standard 16-color Linux logo
Device Drivers -> Graphics Support -> Logo configuration -> Standard 224-color Linux logo
Device Drivers -> Character devices -> ATI Radeon

        

I'm slightly abusing acpid to toggle the external monitor with Fn-F7. You can find the scripts required for this in the ACPI config file package.

IrDA

The infrared port is supported by the nsc_ircc driver:

Networking -> IrDA (infrared) subsystem support -> Infrared-port device drivers -> NSC PC87108/PC87338 [CONFIG_NSC_FIR]
		

You will need to have the irda-utils package installed in order to do anything useful with the port (during the installation, choose type "native", FIR chip type "nsc-ircc" and module options "dongle_id=0x09".

I can transfer files via IrDA using ircp, the openobex apps' irxfer (for win9x, AFAIK) and irobex_palm3 (same package).

Notes:

Keyboard

In order to get the NumLock key to work, I had to add the following command to my X startup script (eg. ~/.xsession):

xmodmap -e "keycode 77 = Num_Lock"
		

The following lines assign some useful values to the forward/backward buttons. You should then be able to get your favourite programs to listen to them.

xmodmap -e "keycode 233 = XF86Forward"
xmodmap -e "keycode 234 = XF86Back"
		

This, however, doesn't seem to work.

Mouse

Device /dev/input/mice and protocol ImPS/2.

Network

The Intel Corporation 82540EP Gigabit Ethernet Controller works fine with the Intel PRO/1000 driver:

Device Drivers -> Network device support -> Ethernet (1000 Mbit) -> Intel(R) PRO/1000 Gigabit Ethernet support [CONFIG_E1000]
		

PCMCIA

I'm using the kernel's PCMCIA drivers (yenta_socket and pcmcia):

Bus options (PCI, PCMCIA, EISA, MCA, ISA) -> PCCARD (PCMCIA/CardBus) support -> PCCard (PCMCIA/CardBus) support [CONFIG_PCCARD]
Bus options (PCI, PCMCIA, EISA, MCA, ISA) -> PCCARD (PCMCIA/CardBus) support -> 16-bit PCMCIA support [CONFIG_PCMCIA]
Bus options (PCI, PCMCIA, EISA, MCA, ISA) -> PCCARD (PCMCIA/CardBus) support -> CardBus yenta-compatible bridge support [CONFIG_YENTA]
		

Don't forget to install pcmciautils. You might want to prevent PCMCIA from using IRQ 3 to avoid IRQ conflicts with IrDA:

# /etc/pcmcia/config.opts
#
...
# Second built-in serial port
exclude irq 3
...
		

Sound

The integrated sound chip works with the snd_intel8x0 driver:

Device Drivers -> Sound -> Advanced Linux Sound Architecture -> PCI devices -> Intel/SiS/nVidia/AMD/ALi AC97 Controller [CONFIG_SND_INTEL8X0]
		

ThinkPad buttons

The tpb program has support for the ThinkPad T42: It displays the current state on a cute little OSD whenever you toggle the external screen, change volume or brightness or toggle the ThinkLight. Furthermore, it allows you to assign scripts to certain keys. I'm currently using the "Access IBM" button to starts a new gnome-terminal.

ThinkPad modules

If, for some weird reason, you decide to use APM instead of ACPI, you might want to download, compile and install the thinkpad-source package (needs a "good" kernel tree) in order to use ntpctl (package tpctl), the "Ncurses ThinkPad Configuration Tool", which allows you to change some mostly power-management-related settings such as how to behave when the lid is closed.

USB

Use the EHCI (USB 2) and UHCI (USB 1.1) drivers (ehci_hcd and uhci_hcd):

Device Drivers -> USB support -> EHCI HCD (USB 2.0) support [CONFIG_USB_EHCI_HCD]
Device Drivers -> USB support -> UHCI HCD (most Intel and VIA) support [CONFIG_USB_UHCI_HCD]
		

I've selected the support for USB printer (I use an HP PSC 1610 All-in-one) and for USB Mass Storage to use my pen-drive (this driver supports USB floppy drives, USB hard disks, USB tape drives, USB CD-ROMs, USB flash devices and memory sticks):

Device Drivers -> USB support -> USB Printer support [CONFIG_USB_PRINTER]
Device Drivers -> USB support -> USB Mass Storage support [CONFIG_USB_STORAGE]
		

I've selected the support for USB Human Interface Device. This driver is needed if you want support to connect keyboards, mice, joysticks, graphic tablets, or any other HID based devices to your computer via USB:

Device Drivers -> USB support -> USB Human Interface Device (full HID) support [CONFIG_USB_HID]
Device Drivers -> USB support ->   HID input layer support [CONFIG_USB_HIDINPUT]
        

WLAN

The Atheros Communications devices doesn't have support in kerneli, so you need download the driver and compile it. The driver can be downloaded from MADWifi (Multiband Atheros Driver for WiFi) website. In my case I downloaded it via Subversion to keep the sources in my machine. To do this, type:

svn checkout http://svn.madwifi.org/trunk madwifi
        

After download the sources, type de following commands (as root) to compile, install and up the module:

cd madwifi
make clean
make
make install
modprobe ath_pci
        

Also, the following kernel options need to be enabled in order to get the chip working:

Networking -> Generic IEEE 802.11 Networking Stack [CONFIG_IEEE80211]
Networking -> IEEE 802.11 WEP encryption (802.1x) [CONFIG_IEEE80211_CRYPT_WEP]
Networking -> IEEE 802.11i CCMP support [CONFIG_IEEE80211_CRYPT_CCMP]
Networking -> IEEE 802.11i TKIP encryption [CONFIG_IEEE80211_CRYPT_TKIP]
Device Drivers -> Network device support -> Wireless LAN (non-hamradio): Wireless LAN drivers (non-hamradio) & Wireless Extensions [CONFIG_NET_RADIO]
		

Configuration files


Sources


Feel free to steal and copy whatever you want from this page.
Maintainer: Paulo Vital
$Id: index.html,v 1.37 2007/02/11 02:42:06 pvital Exp $