Using an IBM ThinkPad T41P
with Debian GNU/Linux



Introduction

My two previous laptops were both Apple iBooks, bought about 18 months apart. The second one had a 700MHz IBM 750FX ("G3") processor, which was quite nippy and had very low power consumption. It was also superbly well designed; some of the features it had were unheard of in the PC laptop market at the time I bought it. Most crucially, it had:

  • Built in 802.11b wireless antennae
  • 5 hour battery life
  • Combination CD-RW and DVD drive.
  • No silly plastic flaps or latches to break off
  • Small, reasonably light (I cannot stand hulking great "desktop replacements")
  • Excellent Linux support thanks, in great part, to the efforts of Ben Herrenschmidt.

The first iBook I owned is still going strong. The second iBook had some quality issues -- when I bought it (from the Apple Online Store) I ended up returning it to Apple three or four times due to problems with the LCD, wireless antennae, and keyboard. Finally I had one that I was happy with, but about 11 months later it broke due to the now infamous iBook Logic Board fault. Concerned that it might break again, I purchased a three-year warranty at not inconsiderable cost. About six months later it broke for a second time. At this point Apple had publicly acknowledged a design flaw with this model and made a redesigned replacement part available for free, even on out-of-warranty systems.

During the repairs I was without the laptop for a few days, and I decided to buy something new. I had considered buying a new laptop for a few months, but nothing on the market appealed to me -- nothing had really matched up to the iBook's weight, features, design and battery life. The iBook was too slow for a new project I'd recently taken on (at the end of the day, the 750FX was designed for use in embedded devices), and Intel's new Pentium M processor and 855M chipset offered excellent power management, so I decided to investigate PC laptops once more.

I considered buying a Fujitsu P5020D after reading about it on the comprehensive independent support forum. However, the Linux support was lacking and Fujitsu openly admitted that they had no intention of helping anyone to run anything but Windows on their hardware. The display was only 1280x768 (slightly wider than the normal 1024x768) and I really wanted something slightly higher resolution. It was teeny tiny, though!

Choosing a ThinkPad

Eventually I decided to buy an IBM ThinkPad. I had owned a ThinkPad 755CX many years ago (75MHz! Wheee!) and remembered it was a very well built machine. Some departments of IBM have a very pro-Linux attitude, and Linux was clearly a big part of IBM's future (and present). It seemed logical to me that they were more likely than most other manufacturers to support users wanting to run Linux on their hardware. The hardware was also reputed to be well designed, sturdy and reliable without compromising on portability.

I considered staying with Apple hardware and buying a 15" Aluminium G4 PowerBook. I knew that even with BenH's herculean efforts it would be some time before the PowerBook could properly sleep and resume, and I was distrustful of Apple's build quality after the issues with my second iBook. It is worth pointing out that for the cost of my ThinkPad I could've bought the top of the range PowerBook and probably also the three year AppleCare extended warranty. Alternatively I could've bought two or three iBooks ;-) I also considered waiting for the anticipated 90nm SSDOI 970FX-based PowerBook "G5". I've played the waiting-for-Apple game before though, and take it from me -- it's not much fun. Nor is moving to a platform that is immature, niche and lacking support from the primary vendor.

At the time of my purchase, there were several ThinkPad ranges. My laptop had to be truly portable and offer good battery life, so I limited myself to considering the X and T ranges. All of these machines had Pentium M processors and the 855 chipset. Some of them also had Intel wireless adapters, which allow them to bear the "Centrino" branding. Don't be fooled by the marketing though! The Intel wireless adapter is actually quite power hungry, supports only the older 802.11b standard, and has no open Linux driver available. Intel have been promising Linux support for their Centrino hardware for some time, but it has been very, very slow to (not) arrive. The non-Centrino branded systems with 802.11a/b/g wireless are a better choice, IMHO.

Eventually I settled on the T40/T41 range. These two platforms are virtually identical. The T41 has slightly faster memory; 333MHz PC2700 instead of the 266MHz PC2100 in the T40s. It also includes a fancy accelerometer that, with suitable operating system support, can park the hard disk heads if it thinks you've dropped your laptop. No Linux support for this exists yet. I'm still not clear on what the P suffix denotes. Performance? Portability? Perplexing?

IBM's website makes the act of choosing a ThinkPad model surprisingly hard because it's tricky to find out the differences between the machines. The best solution I found was to go to the Literature section and download their document titled "Personal Systems Reference: IBM ThinkPad Notebooks". This makes choosing a particular model much simpler (if you are technically minded). I settled on a 2373-GEU.

First impressions

"Holy shit, this thing is expensive!"


This machine has a UK keyboard; mine has a US keyboard. The right-hand edge (around the Enter key) is arranged differently.
At first I thought it would be a problem, but now I prefer it! A replacement UK keyboard is £30 directly from IBM.


The 2373-GEU has hardware that make it superior to my iBook, without sacrificing any of the nice design features. In particular, it adds:

  • 1400x1050 LCD -- the additional resolution is well worth the cost!
  • 7200rpm 60GB hard disk -- much faster than my iBook
  • 512MB of SDRAM
  • ATI FireGL T2 -- basically a 128MB Radeon 9600
  • Gigabit Ethernet
  • Atheros 802.11a/b/g wireless -- this chipset has open source drivers
  • BlueTooth -- I have no use for this
  • IRDa -- again, no use for this. Can I have my RS232 port back now?
  • Two PCMCIA sockets -- very occasionally these come in handy. These are the 32-bit "CardBus" variety.
  • Swappable optical drive -- I can install another hard disk, or a second battery
  • Extended battery -- in theory I can get 10 hours of battery life if I combine this with a battery in the optical drive bay.
  • 1.7GHz Pentium M processor with multiple levels of power saving, and an 855M chipset with USB2 and a PC2700 memory interface.
  • A really cracking keyboard.

The only features I'd really like to add are ECC memory and Firewire (IEEE-1394). I had Firewire on my iBook and I must admit I only used it twice in 18 months, so it's not a great loss. One can get PCMCIA firewire cards if it's required. ECC memory would probably increase power consumption too much.

Here's a copy of "lspci -v" for this machine. The unidentified ethernet controllers are the Intel Gigabit ethernet and Atheros 802.11a/b/g controller.

The 1.7GHz Pentium M processor feels about as fast as my 2.8GHz Pentium 4 for most of the work I do. With operating system support the clock multiplier and voltage can be dynamically adjusted to match my demands. It seems to spend most of its time at 600MHz, which requires no active cooling -- the nearly silent CPU fan turns off entirely.

The machine appears physically very strong and well-built. The display is very bright and, unlike my iBook display, the colours are acceptable from a wide range of angles. Going to 1400x1050 over 1024x768 is definitely worthwhile. The whole system has been very nicely designed. It is clear a lot of thought has gone into it, unlike some laptops which appear to have been literally thrown together. The only plastic flap on the entire system covers the PCMCIA sockets and is sufficiently recessed that it probably cannot be broken off without the application of needle-nose pliers.

This system has both a TrackPoint ("clit") and a Synaptics TouchPad. Both are presented to the operating system as PS/2 devices (with an optional extended protocol to access the fancy-assed features). There are three mouse buttons for the clit and two for the TouchPad. The TouchPad hardware can do neat things like scroll horizontally and vertically if one strokes along the edges. I've not yet configured the driver to take advantage of these features. It also has tap-to-click which is, mercifully, disabled by default.

The wireless reception doesn't seem to be as good as my iBook's. I'm guessing that this is because the antennae are tuned for both 2.4GHz (802.11b/g) and 5GHz (802.11a) operation. It is adequate; I think I've been spoiled by the excellent reception on my iBook.

I've never really used Windows XP on this hardware, so I can't comment on how well it runs. I did install the appropriate drivers when I reinstalled XP, though, and it felt very fast for a Windows machine. I've also run Windows 2000 under VMWare, and that too runs faster than I would expect.

The system came with two small stickers on the left wrist-rest: "Designed for Windows XP" and "Pentium M". These were easily removed with a table knife and some isopropanol (2-propanol) to dissolve the glue residue. The "Designed for Windows XP" sticker now adorns my rubbish bin. I've not yet found a new home for the "Pentium M" sticker.

It has an IEEE-1284 parallel port. I can understand why, given that most business users will want to print from it to their legacy printer. I wish it had an RS232C port instead.

Switching from Debian on the iBook to Debian on the ThinkPad was effortless. All my applications were available on both platforms. Hurrah for Open Source!

Importing to the UK

There is a large disparity between the US and the UK prices. I chose to import my notebook through an agent in the USA. The additional costs were about £75 for shipping, plus a handling fee. On importing it to the UK, I had to pay 17.5% VAT on the total amount paid to the US agent; there is no additional import duty at the time of writing. There are probably ways to avoid paying the VAT if you have special tax status or are particularly devious -- although of course I would not advise you to attempt to defraud HM Customs and Excise. In the end, it cost me about £2200 to import a notebook that costs over £3500 in the UK -- a saving of over 35%.

If you do choose to import your ThinkPad, be sure that the model you choose is covered by IBM's three-year International Warranty.

Another option is to buy the previous generation of hardware. Shops on the Tottenham Court Road sell T23s at considerably reduced prices, but obviously these lack the considerable refinements of the T40/T41 ranges.

I insured my T41P with Liverpool Victoria. The fee was about £100 and they claim to cover me against loss, theft, damage, spontaneously turning into custard and probably some other unfortunate events too.

Installing Linux

There's a lot of documentation out there on doing this. The TuxMobil and Linux on Laptops web sites are good places to start, and have links to several specific guides for the T41P with various distributions. The Debian website itself also contains valuable documentation. I won't attempt to duplicate it all here, but I will give an overview of my setup.

Installing and configuring this machine to my satisfaction took me about a day, and I consider myself an experienced Linux user. In the first few weeks that I owned this system the drivers improved significantly as existing drivers were adapted and new drivers produced. The T41 range has sold well and there are a lot of linux developers using them. Virtually all the hardware is fully supported now.

With early 2.6 kernels the hardware worked fine after inital booting, and most important hardware would survive a sleep cycle. I'm now running a Linux 2.6.10 kernel, and sleeping no longer disrupts anything.

The ThinkPad came with Windows XP installed. The last 3GB of the disk was reserved for a "Pre-Desktop Area". Basically this section of the disk contains a few IBM diagnostic tools and an image of the hard disk as it was when shipped from the factory. One can use this to restore the machine to the factory state. Clearly this is useless to a Linux user, so the first thing to do is boot into the BIOS and remove it. This is simple, just press the "Access IBM" key while the system boots, pick the option to go to the BIOS setup, and instruct it to disable the pre-desktop area. Then phone IBM's support line and order a set of Recovery CDs. You can order these at any time during the warranty, I believe, although I have heard rumours that they must be obtained within the first three weeks of ownership.

I used a LordSutch.com Mini ISO to install a basic Debian system. I repartitioned the hard disk as follows:

Disk /dev/hda: 60.0 GB, 60011642880 bytes
240 heads, 63 sectors/track, 7752 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hda1               1           7       52888+  83  Linux
/dev/hda2               8         211     1542240   82  Linux swap
/dev/hda3             212        6713    49155120   83  Linux
/dev/hda4   *        6714        7752     7854840    c  W95 FAT32 (LBA)
    

The first partition is for booting; it contains GRUB and my kernels. I know one no longer needs a separate /boot partition, but old habits die hard. The second partition is obviously swap space. The third partition is a 47GB root partition for Linux. Finally I created a fourth partition to re-install Windows XP onto. If you just leave empty space, Windows will refuse to create a partition ("there is not enough space") so I created it by hand. One could use logical partitions, but as I only need four I didn't see the need.

Once Debian has installed itself, update your sources.list file to allow it to fetch packages from both testing and unstable. Add the line "APT::Default-Release "testing";" to your apt.conf file to make testing the default release, and do the normal apt-get update; apt-get dist-upgrade -u dance.

I found that the ThinkPad hardware was best supported by the 2.6 kernel. I had to build a kernel without APIC support, or sleeping would not work. I run a 2.6.10 kernel with excellent results, I'd recommend running any kernel after 2.6.9. Also look into the "laptop_mode" option (read "Documentation/laptop-mode.txt" from your kernel tarball).

Using ACPI for power management works well and supports more features than the older APM mechanism. Suspend-to-RAM ("S3") works. I believe that suspend to disk ("software suspend" or "hibernation") is also supported, but I've never had any reason to use it.

Kernels prior to 2.6.5 were not able to correctly awaken the Radeon chipset following a sleep. Use a kernel after 2.6.5 with the kernel "radeon" driver compiled in for best results. I am now using XFree86 4.3.0-7 as packaged by Debian, without the dri.sf.net packages. I had to force the driver to recognise the Radeon chipset by adding the line "ChipID 0x4E47" to the "Device" section of my XF86Config-4 file, as the FireGL chip is relatively new but is software compatible with older Radeons. This seems very stable!

"Enhanced SpeedStep" allows one to dynamically adjust the processor speed. The cpufreqd daemon worked reasonably well, but periodically bombed with a "Floating Point Exception", and was overly complex to configure. The alternative powernowd, recommended by Rob Browning, works brilliantly. Modify the startup script to run the daemon with the arguments "-m 1 -p 200 -s 200000" and you should be happy.

Initially I used the reiserfs filesystem, but this didn't let the disk spin down, even with the VM's laptop_mode set and the commit interval extended. I've switched to ext3 for the moment, but I plan to switch to back to reiserfs in the future. I've used hdparm to enable the disk's APM in additional to the normal spin-down timer. With this configuration the disk spends most of the time spun down, and only spins up for a few seconds at a time. The delays waiting for the disk to spin up are somewhat irritating, but the power savings are worthwhile.

ATI offer binary drivers for the FireGL T2 card. OpenGL support worked well in my limited testing (basically just marvelling at glxgears running at a claimed 3000fps!). I chose to use the "radeon" driver packaged with the XFree86 server from Debian in preference to ATI's; the open-source "radeon" driver can recover correctly from S3 sleep and is fully open source, but it has no accelerated OpenGL support for this hardware yet. I only really need the 2D acceleration, so I am happy enough. The ATI drivers break on sleeping. I have contacted ATI to report this, but I am not sure if the issue has been resolved yet.

The wireless hardware in the model I chose is based on an Atheros chipset that supports 802.11a, 802.11b and 802.11g. One way to drive this hardware is using the mostly open-source MadWifi driver (I had to use the CVS version). This driver uses a binary-only HAL to configure the radio interface, but everything else is open source. Early versions worked pretty well, but periodically would "lose" my access point and go searching for another. It never seemed to recover from this state, even when I told it the MAC address and channel of the access point and forced them both to 802.11g-only mode.
Update, 2005-01-22: This bug is fixed. I now use the MadWifi drivers in preference to Driverloader. Working very well so far.

An alternative to the MadWifi driver is the proprietary DriverLoader system from Linuxant. It costs $20 for a license, which is tied to your wireless card's MAC address. There is a free 30-day trial. It works by wrapping the vendor-supplied Windows NDIS driver in an emulation layer. I used the 802.11a/b/g driver supplied by IBM. The results are very impressive. I'm a little wary of going this route, because it encourages vendors to support Linux through driver wrapping rather than writing native Linux drivers. At the end of the day, though, I just wanted the bloody wireless to work reliably and this was the quickest fix! I'll probably regret supporting this option in the future. Oh well, at least I can read Slashdot from the sofa. The only problem I've had with DriverLoader is that I must unload it before the system will go to sleep.
Update, 2005-01-22: The open source MadWifi driver is now, IMHO, superior in functionality to the driverloader solution. They have a neat Debian package that will download their latest code from CVS and build the kernel modules (in a .deb) via "make-kpkg". Magic.

The built-in Gigabit ethernet works fine with the e1000 driver. The device will now survive a sleep cycle with kernel 2.6.7 or later. The PHY transceiver appears to automatically sense the polarity of the transmit/receive pairs, so you can kiss your crossover cable goodbye. I've pushed a sustained 280Mbit/s across my ethernet onto the internal hard disk, burst rates are probably higher. Quite impressive.

The system has two USB 2.0 ports. It also has both EHCI and the companion UHCI controllers on the PCI bus. The ports will continue working after a sleep cycle with kernel 2.6.7. The BlueTooth controller is apparently connected to one of the UHCI controllers. Apparently it works. Whatever, I'm not even remotely excited by bluetooth.

The PCMCIA can be driven by Linux 2.6's "yenta_socket" driver. I've not had cause to use it yet, but the socket manager loads quite happily.

The 56K (V.92) modem works with Linux 2.6. You need to build your kernel with the ALSA "snd_intel8x0m" driver, which gives userspace access to the chipset's AC97 Modem Controller interface. The modem uses an Agere chipset, but the SmartLink "slmodem" driver is able to drive it. Be sure to run make with "SUPPORT_ALSA=1". This works for me with Linux 2.6.5 and the slmodem driver version 2.9.6. It gives a 56K V90 connection. The latency seems quite high, but maybe I've been spoiled by my ADSL connection ;-)

The sound hardware works fine with the ALSA driver in 2.6.

The keyboard is absolutely super, but it has no "Windows key". Normally I like to remap this key to Hyper, and bind keypresses involving Hyper to window manager operations like resizing windows or starting applications. The solution I have arrived at is to remap the Caps Lock key into a Control key, and remap the left Control Key into a Hyper key. Most people used to PC keyboards find this moderately confusing. Just wait until I swap all the letter key-caps around, then they'll know what confusing is.

I re-installed Windows XP onto the fourth partition. I couldn't persuade the IBM "Recovery" CDs to do this for me, so I just installed it from retail media. In fact, I couldn't persuade the IBM Recovery CDs to do anything, even if I started with a blank partition table! The XP drivers and IBM tools can all be downloaded from IBM's web site. Having installed it all, I've not once booted it up. I may trash it and reclaim the disk space for more productive purposes.

Conclusions

I consider myself to be very demanding and I have very high standards when it comes to my "toys". The IBM ThinkPad T41P 2373-GEU is an excellent bit of kit. As it should be, given the exorbitant price. Using the latest kernel at the time of writing (Linux 2.6.7) the hardware works very well, and sleeping is no longer a problem. I believe patches to further reduce power consumption are possible. The system works well for me today, and it will improve in the future. This now seems to be one of the better supported systems. I would definitely recommend a T41p to any prospective laptop buyer, especially if they were a Linux user.


William R Sowerbutts, 2004-02-17 (updated 2005-01-23)
Photos borrowed shamelessly from trustedreviews.com.