Table of Contents

IBM ThinkPad T43

Changelog

Sunday Nov 16 2008

Sunday Jul 30 2006

Thursday Jun 15 2006

Friday May 12 2006

Wednesday Jan 4 2006

General Specifications

Hardware Components Status Notes
Intel Pentium M (Dothan) 2.0GHz works For cpu frequency scaling, see below
Intel 915PM chipset works
ATI Mobility Radeon x300 works For configuration parameters, take a look here
14.1” TFT Display with 1400×1050 pixel works
80GB PATA HDD works
AD1981B AC'97 Audio controller works Works out of the box with ALSA, for the necessary kernel options see below
Broadcom 10/100/1000 Ethernet works Works out of the box, for necessary kernel options see below
DVD-ROM/CD-RW Combo partly works further documentation to be done, burning not tested yet
IBM Integrated Bluetooth IV with 56K Modem (BMDC-3) works
IBM 11a/b/g Wireless LAN Mini PCI Adapter II works For necessary modules, see below
CardBus slot (Type 2) not tested
ExpressCard/54 slot not tested
IBM Embedded Security Subsystem 2.0 not tested
IBM Active Protection System works see below
Integrated Fingerprint Reader not tested to be tested and documented
UltraNav (TrackPoint / Touchpad combo) works

History

Installation of Debian GNU/Linux

First things first: Boot up your ThinkPad into Windows and use the “Recovery Tool” to create a set of recovery disks for the ThinkPad, in order to be able to turn back everything to factory settings. You will need 6 CD-R's or one CD-R and a DVD-R, and it will take some time, but it is worth the hassle: Better safe than sorry.

Installation instructions

In recent nighty builds (this is important, etch beta 2 doesn't support the following) of Debian it is sufficient to add libata.atapi_enabled=1 as a kernel parameter and then continue with the normal installation procedure without needing any special tricks.

I haven't tested this yet, as my T43 still runs on it's first install of Debian back in November, but both Michael A. Jaeger and Nicholas Reilly (thanks to them) assured me of this being enough to make the installation work.

For the old instructions, take a look here.

Compiling your own kernel

I run Linux Kernel 2.6.16.20 which (thankfully) makes it unnecessary to apply any patches to make the T43's hardware work. For the old instructions (kernel 2.6.14.2), take a look here.

Configuration

My current kernel config can be download here: config-2.6.16.20.txt. Information about what specific features to enable follow.

Getting everything to work

CPU

Processor Type

CPU Frequency Scaling

Harddisk

ACPI

Ethernet

Wireless LAN

I'm currently using the Madwifi-NG driver for the built-in Atheros a/b/g chipset.

WPA

I previously used the standard Madwifi driver, but wasn't able to get this to work together with a WPA-PSK + TKIP setup via wpa_supplicant, it simply was stuck in an endless authentication loop, disassociating from the AP again every time right after the 4-way-handshake2). The new ng driver solved my issues:

Wavemon

The Wavemon package fetched via apt didn't want to work with the driver3):

gina@ione:~$ wavemon
fatal error: could not get range information

Compiling the package from source resolved that issue:

Graphics

My T43 came with an ATI Mobility Radeon x300. Using the proprietary drivers from ATI, version 8.26.18, I have a working DRI setup with Suspend/Resume support. With driver versions newer than 8.25.18 it is also finally possible to switch on the VGA out on the fly, either cloning the display, or enabling it as the only port, using Fn+F7.

I installed them from the official driver package from ATI and let the provided installer script build some Debian packages for Etch, which I then installed:

After installation I added the driver to the “Device” section of my xorg.conf:

Section "Device"
        Identifier      "ATI Technologies, Inc. M22 [Radeon Mobility M300]"
        Driver          "fglrx"
EndSection

I also added the DisplaySize and the DPMS option to the “Monitor” section:

Section "Monitor"
        Identifier      "LCD"
        HorizSync       30-67
        VertRefresh     50-75
        Option          "DPMS"
        DisplaySize     474 355
EndSection

The DisplaySize values were calculated using the formula 25.4 * width / 75 and accordingly 25.4 * height / 75, with width and height being the resolution of my display in pixels, namely 1400 for width and 1050 for height.4) To be on the safe side I also set the resolution to 75dpi in Firefox (Edit > Preferences > Fonts & Colors > Display Resolution). These steps solved the issues I had with the fglrx driver and my system fonts, namely the fonts being too big and having weird scrolling issues.

In order for versions of the proprietary ATI driver later than and including 8.19.10 to correctly work with suspending and resuming, you have to disable any vbetool calls in your suspend-scripts. Otherwise on resume the X-Server will freeze.

Small tip: If you find yourself in the same situation as me, and your DRI stops working although you can't find any related Errors or Warnings in your Xorg.log, do a LIBGL_DEBUG=verbose fglrxinfo. If you see something like

libGL: OpenDriver: trying /usr/X11R6/lib/modules/dri/fglrx_dri.so
libGL error: dlopen /usr/X11R6/lib/modules/dri/fglrx_dri.so failed (/usr/X11R6/lib/modules/dri/fglrx_dri.so: cannot open shared object file: No such file or directory)
libGL error: unable to find driver: fglrx_dri.so

in the output, you might want to try out this workaround discovered by Maciej Matysiak.5)

Sound

Active Protection System

SMAPI

Via SMAPI (System Management Application Program Interface) one can adjust the charging settings of the Thinkpad: The capacity treshould on which to start charging, the treshold on which to stop charging, and manually an amount of time to charge for.

In order to get a /sys-interface to this functionality, get the tp_smapi kernel module from http://tpctl.sourceforge.net, unpack it, cd to the new directory and do a make load (or make install). You now have a new interface at /sys/devices/platform/smapi to play around with.

Also see SMAPI Support for Linux at ThinkWiki.org and this thread on the linux-laptop mailinglist. Thanks to Shem for writing this great module!

Things not working

Small Software Collection

Fan noise antidote

As the T43's fan has some weird issues (pulsing sounds, always on, also take a look at the ThinkWiki), I installed the tp-fancontrol script6) which now controls the fan and by doing so reduced the noise my ThinkPad produces a lot.

In order for it to work, I had to pass ibm-acpi.experimental=1 as a parameter to my kernel. I also added an initscript which now takes care of starting the script on bootime:

#!/bin/sh
 
PROGRAM="/usr/bin/tp-fancontrol"
PARAMS="-l -d"
PID="/var/run/tp-fancontrol.pid"
 
checkconfig() {
        if [ ! -e /proc/acpi/ibm/fan ]; then
                echo "The ibm_acpi module must be loaded with (experimental=1)"
                return 1
        fi
}
 
case "$1" in
 
start)
        checkconfig || return 1
        echo "Starting tp-fancontrol"
        $PROGRAM $PARAMS
        ;;
 
stop)
        echo "Stopping tp-fancontrol"
        $PROGRAM -k
        ;;
 
esac

Gaim Thinklight

Gaim-Thinklight is a plugin for the multiprotocol messenger Gaim that makes the ThinkLight flash on incoming instant messages. The rate of missed IMs has highly decreased since I installed it, so a big thumbs up to Joachim Breitner for creating this ;-)

ACPI scripts

For all Fn+Key combinations to be recognized by ACPI, you first have to do an echo enable,0xffff > /proc/acpi/ibm/hotkey. Take a look here for further information. I simply added the line to /etc/init.d/bootmisc.sh

Screen off on Fn+F3

Standby on close of Display or Fn+F4

Suspend-to-disk on Fn+F12

Toggle Bluetooth on Fn+F5

Remapping CapsLock

As the ThinkPad's keyboard doesn't have a windows key, which comes in quite handy when defining shortcuts in the window manager, I remapped CapsLock - which is totally useless otherwise IMO - to serve its purpose.

Two-finger-scrolling on the touchpad

In order to enable two-fingered-vertical-scrolling on the T43's touchpad, all you have to do is add

Option "VertTwoFingerScroll" "1"

to your touchpad's InputDevice section in your /etc/X11/xorg.conf.

lspci output

0000:00:00.0 Host bridge: Intel Corporation Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller (rev 03)
0000:00:01.0 PCI bridge: Intel Corporation Mobile 915GM/PM Express PCI Express Root Port (rev 03)
0000:00:1c.0 PCI bridge: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 1 (rev 03)
0000:00:1c.2 PCI bridge: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 3 (rev 03)
0000:00:1d.0 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 (rev 03)
0000:00:1d.1 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2 (rev 03)
0000:00:1d.2 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3 (rev 03)
0000:00:1d.3 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4 (rev 03)
0000:00:1d.7 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller (rev 03)
0000:00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev d3)
0000:00:1e.2 Multimedia audio controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller (rev 03)
0000:00:1e.3 Modem: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Modem Controller (rev 03)
0000:00:1f.0 ISA bridge: Intel Corporation 82801FBM (ICH6M) LPC Interface Bridge (rev 03)
0000:00:1f.2 IDE interface: Intel Corporation 82801FBM (ICH6M) SATA Controller (rev 03)
0000:00:1f.3 SMBus: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) SMBus Controller (rev 03)
0000:01:00.0 VGA compatible controller: ATI Technologies Inc M22 [Radeon Mobility M300]
0000:02:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5751M Gigabit Ethernet PCI Express (rev 11)
0000:04:00.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev 8d)
0000:04:02.0 Ethernet controller: Atheros Communications, Inc. AR5212 802.11abg NIC (rev 01)

Links

1) I don't see a reason making the CPU run at 2GHz when not really needing that power, as it also makes the ThinkPad hotter and louder
2) The funny thing was that it did work with WPA-PSK + TKIP/AES via wpa_supplicant. But sadly this setup was incompatible to other - redmondbased - wlan-nics in the network.
3) I haven't tested yet whether it works with the new ng driver out-of-the-box. The described way to go was also a solution for the same issue with the ipw2200 driver on an X41 though, so it will stay here either way
4) Got this hint from the Gentoo Wiki, thanks
5) Got this hint from the ThinkWiki, thanks.
6) Also as a local mirror here