[ Main / Projects / Docs / Files / FAQ / Links ]

Introduction

I've recently acquired an IBM Thinkpad T40p, and I've spent quite a bit of effort working on getting it set up acceptably. I've decided to document my efforts so that others may benefit.

Hardware appraisal

The build quality of the T40p is excellent. It's thin, lightweight, and feels solid and sturdy. I had a problem with the original keyboard on the notebook where some of they keys had a tendency to stick once depressed, but IBM very promptly shipped out a replacement part that I was able to install myself. The new keyboard is very good for a notebook keyboard, although it's not in the same league as an old IBM keyboard with capacitive keyswitches (The One True keyboard). The SXGA+ LCD is bright and seems to have accurate colors. My old notebook's LCD screen looks somewhat greenish by comparison. I have not tested the response rate of the LCD yet, so I don't know if it's suitable for fast action games.

Most of the hardware seems to work well under Linux, making the T4x series one of the best choices for a Linux notebook.

I would suggest running a 2.6 kernel rather than a 2.4 kernel. The improvements made in the 2.6 kernel will prove to be useful.

Repartitioning the HD

The most difficult part of setting up the notebook is correctly repartitioning the included hard drive. On the first boot, the vendor-supplied FAT filesystem will be converted to an NTFS filesystem. There is no way to abort the conversion. There's also another consideration: IBM's "predesktop" area exists in unpartitioned space at the end of the drive. If you delete it, the factory restore functionality of your notebook will be destroyed. Since IBM does not provide CDs of the preinstalled software and WinXP, you'll most likely have to contact IBM and get them to send you replacement software.

A trick you can use to get at the software is to start the factory restore, let it proceed through the first two steps, then boot Linux. The restore will have copied most of the IBM utilities and your WinXP install directory (C:\i386) to the hard drive, which can then be copied to another machine and burned to CD. Note that you will lose your old WinXP partition and any data contained on it!

If you want to prevent the FAT to NTFS conversion, it's probably a good idea to immediately boot a Linux CD and move the C:\Windows\System32\autoconv.exe program to a safe location. With luck, this will prevent the conversion. I was unfortunately too late to use this approach. I ended up suffering a conversion that I then reverted to factory state. I then booted Linux and repartitioned the drive using parted. I marked the predesktop area as a Win95 FAT32 (LBA) hidden partition at this time. Then I removed autoconv and proceeded to install my Linux setup. From that point, I didn't have any real problems. Although the process sounds short when briefly described, factory reinstalling is very time consuming -- I probably spent six or more hours working around the mandatory NTFS conversion.

I chose to use GRUB installed in the MBR as my boot loader. It does an admirable job of booting both Linux and WinXP (to test unsupported hardware and for the occasional game).

Linux Installation

The first thing that you should be aware of is that the ICH4 chipset in the new Pentium M laptops is very new. Hence, the IDE controller is not fully supported until recent 2.4.21 kernels. In 2.4.20 and prior, the hard drive will work, but only via slow PIO modes. This lack of speed makes installation very painful. If you're using a recent Gentoo install (1.4rc4 in my case), the 2.4.21pre7 SMP kernel provides the ICH4 support that you need. The 2.4.20 UP kernel does not; therefore I suggest using the smp kernel. Aside from this caveat, installation should be fairly straightforward.

If you're using Gentoo or setting up your own LFS, note that the Pentium M, although a Pentium3 derived core, fully supports SSE2. It is probably best to use the -march=pentium3 flag for optimization.

X11

The T40p uses a Radeon Mobility M9 FireGL chipset, which is roughly equivalent to a Radeon 9000, which is a R200 Radeon. It is therefore supported by XF86 4.3.0. 2D, 3D, and Xv support should work out of the box using the included radeon driver. Supposedly the DRI drivers are nicer than the stock 4.3.0 drivers, but I have not yet tried them. I haven't yet tried tweaking the radeon driver flags for performance; I'll report on them when I do.

One annoying thing is that I've noticed that there's a bit of a high frequency buzzing from the front left side of the notebook when I run glxgears. The sound is not audible unless the notebook is run without a fan in a quiet room. dxdiag produces no similar sound, so I suspect it might be software induced. Running a recent kernel with the tickless kernel patches largely eliminates this problem.

The buzzing sound that I describe seems to be at least partly caused by the AC adapter; I hear a similar noise coming from it. Some users suggest that the noise can be eliminated by using another AC adapter than the one provided. I have not yet tried this solution, as I do not have another compatible adapter.

Framebuffer Console

Radeonfb in modern 2.6 kernels will work great -- the rewritten framebuffer driver seems to be of nearly the same quality as matroxfb. The older radeonfb present in 2.[45] kernels will not work properly; vesafb should be used instead.

Wired Ethernet

The T40p uses an Intel 1000mbit ethernet controller that is functionally equivalent to its desktop counterpart -- the stock e1000 Intel gigabit driver included in all recent kernels should work without effort.

Wireless Ethernet

The built-in IBM wireless 802.11a/b is perfectly supported by the madwifi Atheros driver.

It should be noted that IBM has a questionable system of locking out non-IBM miniPCI cards from functioning with this notebook -- the machine will refuse to boot by default if an unapproved card is installed. It is, however, quite possible to defeat this questionable mechanism by setting a bit in the CMOS. Most wifi cards will function with this change. I would reccomend using either an ipw2200 or atheros card if you need 802.11g.

Trackpoint and Touchpad

These devices work fine in 2.4.x, as they appear as a plain PS/2 pointing device. XF86 can detect the protocol when set to "Auto". Getting the trackpoint to work under 2.5.x is a bit more troublesome. The touchpad will work by default, but the trackpoint will not function at all. The problem can be solved by patching the ps2mouse driver in the kernel. Apply this patch (against 2.5.70) and everything should work fine.

The new Synaptics driver in the 2.5/2.6 series requires some changes to be made to the X11 configuration to take advantage of the new event architecture. I will document the necessary changes later. The necessary driver and reasonable instructions are available at the developer's site .

Modem

The built-in modem is a winmodem, but it is works with the ALSA software modem driver for Intel chipsets. The userspace slmodem drivers are required.

Bluetooth

The built-in Bluetooth works fine using the hci-usb driver in the stock Linux kernel. I haven't yet worked on setting up the necessary components in userspace and I have no Bluetooth devices with which to test, so I can't really say more.

Sound

Sound works using either the OSS or ALSA drivers for i810 chipsets. I like the ALSA drivers more, but that's just personal preference.

USB

USB works perfectly; simply enable the necessary options in the kernel.

CardBus

CardBus also works perfectly.

Floppy

The T40p does not have a floppy drive. I suggest disabling the floppy support in the BIOS. USB flash cards largely replace floppies, anyway.

CDRW/DVD

Both burning and ripping will work fine with DMA mode in modern 2.6 kernels. ide-scsi should not be used except with 2.4 kernels.

Connectors

The T40p has a parallel port, but does not have a serial port. I think that the optional port replicator provides a serial port, but I am not sure. The T40p does not provide a DVI connector but provides a DB15 VGA connector.

ACPI

ACPI works fine in recent kernels, and event supports the ACPI events triggered by the custom buttons on the Thinkpad. APM is also supported, but I would reccomend using ACPI. Software suspend to disk and RAM are both work when using the ibm-acpi kernel module and suspend2.

If you want more information on ACPI under Linux, I suggest checking out the ACPI development site. The documentation available is excellent.

CPU frequency scaling

Cpufreq support for the Pentium M works perfectly; I would suggest using the ondemand governor. For proper power savings, wake-on-LAN should be disabled with 'ethtool -s eth0 wol d', and a patch to properly enable Radeon D2 state power savings should be applied.

APIC

The i855 chipset's APIC works fine in both 2.4 and 2.5.

Hardware watchdog

The i855 chipset's watchdog is supported by the built-in i8xx TCO timer driver.

Bugs

At least when I used it, hwclock exposes a bug in either the RTC driver or the ACPI support. Hwclock will cause the computer to hang when used to set or retrieve the hardware clock on a kernel with both ACPI and Enhanced RTC support compiled. The best workaround is to provide hwclock with the "--directisa" argument, which will instruct hwclock to avoid the usual rtc driver interface and use direct i/o instead.

Links

Fabrice Bellet's T40 page
Klaus Weidner's T40 page
Theodore T'so's T40p page
D.J. Bernstein's T40 page

Nicholas J. Kain  | n i c h o l a s | a t | k a i n | d o t | u s |