IBM/Lenovo ThinkPad T60 (Model 2007-63g)

Installation Guide for Debian GNU/Linux

(c) 2006 by Marco Kraus

Comments, suggestions
and improvements very welcome.

If this website helped you, I'd also
love to hear from you.
Just drop me a note.

Mailt to:  Marco eMail

Last updated: 06.06.2006

General Data:
CPU:  Intel Core Duo 2500 with 2GHz
Graphic Card: ATI X1400
RAM: 1024 MB
Screen: 14" with 1400x1050 (SXGA+)
2nd Level Cache: 2MB
Wireless LAN: Intel IPW3945
LAN: Intel e1000 Gigabit Ethernet
Audio: AC'97 with AD1981HD chipset

With Fingerprint Reader
With IBM Harddisk Protection System

Here is the complete LSHW output with ALL technical details.

What works and what doesn't:

Works with no or less tweaking:

- Multicore support
- Serial ATA
- DVD/Burner

- Fn Keys
- ThinkLight
- NavPad and Trackpoint
- Audio system
- Ethernet adapter
- Graphic Card (3D accelerated) 

Works with a bit or more tweaking:

- OSD for Softkeys and volume control
- Wireless LAN

Doesn't Work:

- some IBM ACPI functions like fan control (in development)
- HDAPS chipset not supported (in development)

Not tested:

- Modem
- Fingerprint reader
- Bluetooth
- Suspend

Installation Details:


Get my kernel configuration here.

It is thought to be used with Kernel version 2.6.16 and the proprietary ATI binary drivers and external Intel IPW3945 drivers (so the kernel uses a normal Kernelstacksize without patches, has no IEEE subsystem and WLan drivers, and only VESA support for the graphiccard). See detailed description in belower sections.


Install a SMP (multiprocessor) kernel. If you compile your own kernel, add SMP support to it. It's advisable also to add RTC (device drivers->character support). The Yonah core (first generation Cure Duo) doen't have Hyperthreading, so disable SMT.


Switch the S-ATA Disk in your BIOS to "compatibility"-mode when the harddisk is not recognized (problems with the SATA driver in your Installation-Kernel, normally when using a kernel < 2.6.16).

If you compile a kernel on your own: add SCSI emulation, SCSI disks support, SATA support and AHCI support (both under SCSI drivers) built-in to the kernel. Your SATA drive is normally in AHCI mode.

Attention: Change devices in grub.conf/menu.lst (or lilo.conf) from /dev/hdaX to /dev/sdaX !

My TP came with no XP CD. There a so called "rescure-and-restore"-partition that includes a backup of WinXP. So if you would like to to a Dual-OS installation, you have to resize the partitions within your finished Windows-Installation. Do this with e.g. Partition Magic and keep the Restore-Partition (the 5 Gig FAT32 that's normally hidden under windows) at the end of your disk. Don't move that Restore-Partition.

ACPI / suspend and resume

Use Suspend2 and add the suspend to the kernel (under powermanagement->acpi). Add the following option to your kernel boot parameters (e.g grub.conf/menu.lst): resume=/dev/sdaX (your swap partition). The swap partition is the best solution. There's also a possibility to use files with a special filewriter. Read the suspend2 manual for more help. I do more tests about this in future.


You can add framebuffer support to your kernel, and add "vga=834" to the kernel boot options to enable sxga in your console.  With the options above, my menu.lst looks like this.  Attention: Doesn't seem to work always. Send me your VGA options.


One of the major problems of the T60 is a thermal issue. The procesor is quit cool (about 50 degree celsius) and also battery (about 50 degree C) and harddisk (about 40 degree C) are absolutely fine. BUT the powerful graphiccard is a problem. In idle-mode it gets quit hot, round about 75 degree C. Playing some minutes doom3 or UT2004 brings it up to 86-87 degree. Thats still no problem for that card, it get trouble when it get hotter than 110 degrees. BUT your fan of the T60 has to cool the card all the time. also in idle mode. So it's always running. It is not too loud, but good hearable. And always running parts of a computer  are fragile....

I got some mails from users that with ibm-acpi you can control the fan. That is correct. And with a current version and forcing module-load with experimental=1 you can switch on/off the fan (no more detailed control is possible right now). BUT I do not recommend to switch the fan off, becaus your graphiccard simply needs it, ALL the time ! You risk your hardware when switching it of. Keep that in your mind.


It's a intel e1000 network card. So the e1000 driver should work. It wasn't possible to use the e1000 driver with the normal sarge installation. So I copied a linux-2.6.16 kernel from my usb stick and compiled a new kernel manually. With the 2.6.16 the e1000 drivers work without a problem.

Wireless LAN

It is the new IPW3945 Card from Intel. It's no normal MiniPCI, it's MiniPCI express now,yeah ;-) There are two solutions to get this working right now:

1.) The drivers from Intel: Because the drivers are not (and maybe will not, see discussions on the LKML) in the kernel, you need the drivers, the binary, and the ecxternal IEEE package. You get this all on the IPW website mentioned above. Read the INSTALL manual. At a short: copy firmware to the place of your firmwareloader, remove all IEEE stuff (network drivers,etc) and compile/install IEEE and IPWDrivers package. At the moment you can not install the ipw drivers, you have to manually load and unload them via the scripts. This will change when the driver is stable. This worked quite good for me with IPWDrivers version 0.0.74 and ieee80211-1.1.12 (or later).

If it doesn't work for you, you can also try the second solution, read on.

2.) Another solution is the usage of ndiswrapper. But this also need a bit more tweaking.
First of all, we need 16K Stacksize for the kernel, we grab the right kernelpatch for that from: and patch our kernel with:   Thinky:/usr/src# patch -p0 < linux-2.6.16-16kstacks.patch
Then change the stacksize to (now available) 16K and recompile (add intermodule support again to you .cofig file if you did this before for your ATI drivers). Download, compile and install ndiswrapper.  A more detailed installing instruction can be found in the ndiswrapper wiki at:  
Comment: Do a "make dep" instead of just a "make" do build clean debian packages, which you can install with dpkg after. Now get the windows drivers from Intels website (only available in a package with the other cards, so you have to get 80MB:
Unzip and change to the "Drivers" directory, and run "ndiswrapper -i w39n51.inf" and modprobe ndiswrapper. After this, your device should be appear as wlan0 in your iwconfig list. Good luck. I still had some problems with this, so I used the native IPW drivers from solution 1).


Fn+F5 switchs Bluetooth on. Install the bluez stack, and (if wanted) kbluetooth, add bluetooth in your kernel (under USB devices). Didn' try more with that, but seems fine. Will report if I find a bluetooth device to test ;-)


Works as a PS/2 device. Should mostly work out of the box. When not, compile your kernel with ps2 input device support. Also install the synaptics touchpad drivers (should be available with every common distribution).


This is a Analog Devices AC'97 Audio controller with AD1981HD chipset. Build a kernel with AD HD support. This is NOT the usual AC97 intel chipset (snd-i80x), but the HD driver some lines above the kernel configuration. Run alsaconf and set the volume via your favourite mixer (aumix in console is fine). The Volume control works out of the box via Fn keys (inc. muting).
I recognized some cracking noises with applications using OSS (and so OSS emulation via alsa). I read about a workaround to put position_fix=2 to the module option. But that's not the perfect solution, but works okay...

Graphic Card

This is an ATI x1400 graphic card. ATI released on 12th April new drivers that supports the X1400. That half a year after the X1K was released (Version 8.24.8), but get them here:

Sadly there are still the Intermodule problems (ATI is using the intermodule API pre 2.6.15). So if you use a kernel > 2.6.15 then you should fix this with that litte workaround from the Rage3D Forum:
(in short: add obsolete intermode to the kernel, enable agpart and disable drm)

[OLD: If you are using xorg v7 (X11R7) there is another problem: the ATI installer doesn't support xorg 7.0, only 6.9. But the codebase of yorg 6.9 and xorg 7 are the same, except the modular concept, so force the version to x690 and run the installer like this: X_VERSION=x690 ./ati-driver-installer-<ver>-<arch>.run
Then copy the X11 modules from /usr/X11R6/lib to /usr/lib/xorg (the fglrx driver from drivers and linux subdirectory).]

Update: Driver version 8.25.18 and above support xorg7 correctly now !

Now change the driver in your xorg config to fglrx an restart X.
If you get a black screen, keep in mind that ATi doesn't support 16Bit, and change the default mode to (at least) 24 bit color depth. 

That's is my xorg.conf with the ATi driver.

When you don't want to use the proprietary driver, you have to use VESA because there are no free xorg drivers for this card. Use the VESA driver and set the resolution to 1400x1050 (SXGA+) and bet (or better write an email to ATI) that ATI will publish new drivers that also supports newer cards. Cruel Linux politics from ATI, so never buy that stuff when you have the choice. My xorg.conf for VESA is here


The TP keyboard light is controlled via BIOS only and Fn+PgUp works out of the Box on all maschines. No tweaking needed here. Yeah! Brightnesscontroll also works out of the box via Fn keys.


Frank Mehnert wrote:

--- cut ---
HDAPS works well (at least hdaps-utils give
valid output) if you use the hdaps driver from the tp_smapi package

and load it using force=1 module parameters.
--- cut ---

Thanks for that hint.

Keycontrol and OSD

All Fn Keys and Volumecontrol work out of the box. But normally you also want to show the key values on your desktop. This can be done via tpb (edit /etc/tpbrc for your needs) or you use the kmilo plugin in KDE cntrollcenter. In both cases nvram support hast to be enabled in your kernel. If you use udev, etc /etc/udev/020_permissions and add a MODE="0666" to the NVRAM line to set global rights. Or add you to the nvram group. It won't work when you have no access to that virtual device.

KMilo is a tpb clone, but has less features. I found out that kmilo has problems on my T60 with the volume control. I controls the headphones instead of the PCM mixer. So I use tpb. There it's possible to use a mixerr callback function. I made a small workaround:

1) Using tpb for softkey control.
    BTW: To start "tpb -d" on KDE startup with putting this in a small shellscript in .kde/env
2) Setting up /etc/tpbrc for your needs
3) Setting a callback in the tpbrc to /path/to/the/script and using amixer for volume control.
The callback script can be found here

Fingerprint reader

I didn't really try it out right now, but it seems to works with a bit of tweaking and some proprietary code. Read the great tutorial at ThinkWiki about that:

A more complete and detailed installing instruction can be found at:

(c) 2006 by M.Kraus,