Mandrake Linux on the IBM Thinkpad T40

This document details installing and configuring Mandriva Linux LE 2005 (formerly Mandrake Linux 10.2, prior to their merger with Conectiva) on my IBM Thinkpad T40, persephone.

As much as I loved (and still love) Mandriva/Mandrake, I'm now running Ubuntu and that's where you should go for current installation information. This page is left up for historical interest and will no longer be updated.

Table of Contents

The Hardware

This is an IBM Thinkpad T40, model 2379-D5U. The base configuration is:

  • Intel Pentium-M 1.6GHz, 1MB L2 cache, 400MHz FSB
  • 512MB PC2100 DDR SDRAM (266MHz), max 2GB
  • ATI Mobility Radeon 9000, 32MB RAM, AGP 4x
  • 14.1" TFT at 1400x1050 resolution, true color
  • 80GB 4200rpm ATA100 IDE hard drive
  • SoundMax Integrated Digital Audio chipset
  • Intel PRO/1000 Gigabit Ethernet
  • IBM 802.11a/b wireless (Atheros AR5211)
  • 56Kbps modem (Agere AC'97)
  • CD-RW/DVD in drive bay
  • Parallel, IrDA, VGA-out, SVid-out, 2x USB 2.0, 2x PCMCIA, Bluetooth
  • about 4.9 pounds

It's a pretty sweet machine. If only the price were sweeter.

This machine does not qualify for the Intel Centrino label as it does not use the Intel wireless card. Instead, it has a dual-band card (802.11a/b) from Atheros, which is a nicer card anyway. Other T40 models may use the Centrino component. Centrino is now supported by Intel, although I'm told it is somewhat unreliable. Others have reported success using a Windows driver wrapper like ndiswrapper to run the Windows driver under Linux.

Pre-Installation

IBM apparently now ships their Thinkpads without a set of OS CDs or even recovery CDs. Instead, there is a "Predesktop Area" reserved on the hard drive that contains a complete disk image of the factory installation state. The predesktop area is not a separate partition; the BIOS simply hides the last couple gigs from the operating system.

Naturally, there's no sense in letting perfectly good hard drive space go to waste, so I'm going to blow away the predesktop area. You need to disable the predesktop area in the BIOS. Go to Security and set the IBM Predesktop Area to disabled.

Blowing away the predesktop area prevents the hard drive based recovery system from working, so you cannot restore the machine from the hard drive. This isn't really an issue because you can get recovery CDs from IBM that do the same thing without occupying several gigs of your hard drive. To get a set of recovery CDs, call IBM Technical Support. If you bought the machine within the last 30 days, they will send you the CDs free of charge; otherwise, you may have to pay for it (I was quoted $35). If you just bought the machine, you should get the CDs regardless of whether you intend to install Linux, because it's free and you never know when you might want them. They're very nice about it; I got mine next business day.

Other people have instructions for going through the appropriate hoops to keep the predesktop area and XP (for dual-boot) happy. See the links at the end of this document.

You should also go to the IBM website and download a copy of the Hardware Maintenance Manual for your model. This is an excruciatingly detailed guide to every nut and bolt (literally!) in your machine; it's the same book their field service reps use. Pages and pages of diagnostic codes and other goodies and complete diagrams explaining how to disassmble your Thinkpad into its component atoms. You might not want to print it out, however, as it is a couple hundred pages long.

Suggested BIOS Tweaking

These are some suggested changes you should make in the BIOS.

  • Spread the IRQs around a bit (Config/PCI). This is probably totally optional.
  • Disable anything you are not using, such as the serial port that isn't physically there (unless you have the dock).
  • Disable the predesktop area (Security/IBM Predesktop Area). This lets you use your full hard drive but you lose the hard-drive restore capability. This is a non-issue if you have the recovery CDs.
  • Set the boot display to VGA+LCD (Config/Display). That way, if you ever break the LCD panel, it'll use an external monitor on boot.
  • I'm really not sure what the point of Legacy Floppy Support is when IBM doesn't even make a floppy for the drive bay.

My BIOS is revision 1RET85WW, dated 12/15/2003, although it probably doesn't matter.

Installation

As time goes on, I increasingly wonder why I even bother with this section. The installer gets everything right. The video driver you want to use is radeon, but the other Radeon drivers will at least get you baseline X functionality.

You don't need to install Mesa (and it shouldn't be selected by default), as the radeon GL stuff works fine. The CDs may install the proprietary ATI drivers for you as well; we'll fix this later.

There isn't anything else of note. Really.

Compatibility

I liked Austin Murphy's nice overview chart so much that I decided it'll be a nice thing to have. There's a lot of green, which means pretty much everything works. See individual sections for details.

Part Status Last update Comment
Video - X 6 Nov 2004 Use radeon driver
Video - DRI and 3D 6 Nov 2004 Use radeon driver, don't install Mesa or fglrx
Video - External Displays 6 Nov 2004 Mostly works, is configurable now
Keyboard 26 Aug 2005 Xmodmap your Fwd/Back keys
Trackpoint/Touchpad 26 Aug 2005 Use native Xorg Synaptics driver
Ethernet 27 Apr 2005 Use e1000
Modem 8 Nov 2004 Use Agere driver linked from IBM Support
Wireless LAN 26 Aug 2005 Use madwifi driver from CVS
Sound 27 Apr 2005 Use ALSA sound with snd_intel8x0. Mixing works.
PCMCIA 8 Nov 2004 Just works, no need to stop before suspend
Hard Drive 27 Apr 2005 Need to enable 32bit IO and DMA
DVD/CD-RW 6 Nov 2004 Use ide-cd; no need for ide-scsi
Power - Basic Status 27 Apr 2005 Use acpi
Power - Suspend/Resume 27 Apr 2005 Use acpi
Power - Frequency Scaling 24 Aug 2005 Use speedstep-centrino and cpufreqd
Bluetooth 7 Nov 2004 Module bluetooth loads; haven't tried
USB 26 Aug 2004 Just works
TCPA Chip 22 Feb 2004 GPL driver exists, haven't tried
Special Buttons 26 Aug 2005 Use tpb

Key:

  • Complete functionality. Everything works and functions completely to my satisfaction.
  • Partial functionality. Important aspects are working, but functionality is very incomplete.
  • Driver exists. I did not personally test, but it may work.
  • Not supported. Does not work with acceptable functionality.

Video and X Windows

We use the Xorg X server now instead of XFree86, which is no longer ideologically pure. I hear the Xorg management is better as well, so this seems to be a change for the better. Select the radeon driver and a 1400x1050 flat panel at install and X will simply work on reboot.

There are actually two drivers that you can use: the open-source radeon driver in Xorg, and the proprietary fglrx driver from ATI. The ATI driver supports more features but doesn't get along well with suspend, so we will be using the stock driver. The remainder of this section is written with the open-source driver in mind.

If the installer goes ahead and installs fglrx anyway, it is quite likely that your libGL.so is the wrong thing. If you are going to use the radeon driver, ditch the ATI driver by uninstalling it (packages ati and ati-kernel) and reinstall libxorg-x11. This will restore the stock OpenGL driver.

It might also be a good idea to add the radeon driver to /etc/modules so that it is always loaded on boot.

Finally, in order for direct rendering to be usable by non-root, you need to add the following to /etc/X11/xorg.conf:

Section "DRI"
    Mode 0666 # make DRI usable by non-root
EndSection

Hardware accelerated 3D with DRI should be all set up now. Performance with the open source driver isn't fabulous; glxgears gets a paltry 760fps average, but it's still good enough to play Tuxracer.

The Screen Blank (Fn-F3) and Suspend (Fn-F4) and Screen Toggle (Fn-F7) keys don't do anything unless you explicitly set them up to. I'll worry about it if I actually care. Fn-F4 generates button/sleep event, but not reliably.

The external display mostly works. Plug in a monitor and hope for the best. It might have some issues if the external display does not match your LCD display (and it usually won't). You can use radeontool to turn the external display on and off. It also has some commands for stretching the display, but they work funny.

DPMS works fine; you can have your screensaver blank the screen and turn off the backlight.

If you want X to run at a lower resolution (for external projectors and such), you should change the lines in /etc/X11/xorg.conf that look like Virtual 1400 1050 into something like Mode "1024x768". Remember that you can have multiple xorg.conf files and specify the one you want when you start.

I haven't tried TV-out yet. I don't know if it will work, but it might.

One artifact of the use of a kernel driver for X is that it doesn't like having two X servers at the same time, so my old habit of running multiple X servers simultaneously will have to go. I'll see if I can figure out a way around it that does not involve dropping back to vesafb. I'm not sure how big a deal this is as I am the only person I know who ever did this on a routine basis.

Keyboard

There are two extra keys on the keyboard right by the arrow keys: Forward and Back. You can use Xmodmap to give them some keysyms. The keycodes are 234 and 233. For example, you can put the following in your ~/.Xmodmap

keycode 234 = F21
keycode 233 = F22

This assigns Back and Forward to F21 and F22.

If you want Forward/Back to behave like Forward/Back under Firefox, you'll need to tell Firefox about it. Go to your Firefox chrome directory (something like /usr/lib/mozilla-firefox-1.0.2/chrome). Unzip browser.jar with unzip. Now edit content/browser/browser.xul. Go hunt for the bit with keyset id="mainKeyset" and stick in these two lines:

<key id="goBackTP" keycode="VK_F21" command="Browser:Back"/>
<key id="goForwardTP" keycode="VK_F22" command="Browser:Forward" />

Repackage browser.jar with zip -rD0 browser.jar content/browser/ and restart Firefox.

Alternatively, you can use the xhkeys (dead link to http://www.geocities.com/wmalms/#XHKEYS) utility to bind arbitrary commands or simulated key events. I use this to have Back and Forward bound to Alt-Left and Alt-Right to the top window, respectively (these are the keys Firefox uses for forward and back).

I should point out that for whatever bizarre reason, KDE3 has the key repeat option turned off by default. You'll probably want it on.

Trackpoint/Touchpad/Mouse

There is now a native Synaptics driver in Xorg. It works.

Using the PS/2 or IMPS/2 driver will get you both the touchpad and trackpoint working, but without the scrolling feature (where you run your finger along the right side of the touchpad to scroll). To get the whole works going at once, you need to set up the trackpoint and touchpad as two separate devices and hook them both into X.

In your /etc/X11/xorg.conf we add the trackpoint as follows:

Section "InputDevice"
    Identifier "Mouse1"
    Driver "mouse"
    Option "Protocol" "ExplorerPS/2"
    Option "Device" "/dev/mouse"
    Option "ZAxisMapping" "6 7"
EndSection

And then we add the touchpad as follows:

Section "InputDevice"
    Identifier "SynapticsMouse1"
    Driver "synaptics"
    Option "Protocol" "auto-dev"
    Option "Device" "/dev/input/mice"
    Option "MinSpeed" "0.09"
    Option "MaxSpeed" "0.18"
    Option "BottomEdge" "4200"
    Option "SHMConfig" "on"
    Option "FingerLow" "25"
    Option "LeftEdge" "1700"
    Option "MaxTapMove" "220"
    Option "MaxTapTime" "180"
    Option "FingerHigh" "30"
    Option "VertScrollDelta" "100"
    Option "TopEdge" "1700"
    Option "AccelFactor" "0.0015"
    Option "RightEdge" "5300"
EndSection

And then we tell X that it needs to use both of them:

Section "ServerLayout"
    Identifier "layout1"
    InputDevice "Keyboard1" "CoreKeyboard"
    InputDevice "Mouse1" "CorePointer"
    InputDevice "SynapticsMouse1" "AlwaysCore"
    Screen "screen1"
EndSection

If you want, you can use the qsynaptics tool to configure your touchpad settings. However, the auto-generated xorg.conf is pretty easy to understand.

Ethernet

It works and even survives a suspend/resume cycle correctly. Use the e1000 driver.

Modem

The installer loads the slmodem driver. I think it works (minicom responds with all the usual AT commands) but I have no one to dial to actually test it.

WiFi

The IBM Dual-Band a/b card is actually an Atheros AR5211 and it is supported under Linux. I chose this card specifically because it is not the Intel PRO/2100 Centrino, which lacked native Linux support at the time I purchased the machine. Vote with your dollars, y'know?

The madwifi driver shipped with LE 2005 is old (January 2005) and broken and does not load successfully. However, the newer versions in CVS (I'm using the 8/14/2005 snapshot) do work. You'll have to build it yourself but it isn't too hard. Grab the madwifi (Multiband Atheros Driver for WiFi) sources and put them somewhere.

However, if you just build the modules now, they will wind up in a different place from the existing kernel modules, which causes modprobe to be unable to locate it. The reason for this is that starting with 2.6.9, the kernel build process has an EXTRAVERSION suffix for building. This is to prevent kernel builds from clobbering the currently running kernel binaries. However, if we're just building modules and not a whole fresh kernel, we actually want to have the modules added to the existing kernel. Go to /usr/src/linux/Makefile and change the suffix in EXTRAVERSION to match that of your currently running kernel. Don't forget to change it back when done.

A simple make and make install will work correctly now. You can set it up from there however you like as ath0

Sound

The onboard sound chip claims to be a SoundMAX. ALSA sound seems to work. The installer sets it up with the snd-intel8x0 driver. I have yet to find any issues with it. It survives suspend/resume cycles without problems.

What's more, it comes all set up out of the box with hardware mixing working. No more of this "sound server" nonsense; multiple applications can use sound simultaneously and behave as expected.

Naturally, the built-in speakers are utter crap, but that's true of most laptops. Even so, this is probably worse than most, since they are on the bottom edge. Because the laptop is so thin, they are muffled by whatever surface the laptop is on.

PCMCIA

PCMCIA works fine. Tried a whole slew of cards without issues. You don't even need to stop the service or eject cards for suspend/resume. However, you should not remove cards while suspended; this will probably crash your machine upon resume.

Hard Drive

The hard drive works fine, naturally. You need a very recent kernel for DMA support on the 855 chipset, but Mandrake ships with a recent kernel. You'll want to enable 32bit IO (which the installer sets off by default) and DMA (which the installer turns on by default). You can do this by putting the following somewhere in your startup scripts:

hdparm -c 1 -d 1 /dev/hda

Performance is about what you'd expect from a 4200rpm drive; hdparm reports around 24mb/sec for buffered disk reads and around 700-800mb/sec for buffer cache reads.

DVD/CD-RW

My machine came with a Toshiba SD-R9012 DVD/CD-RW in the drive bay. Mandrake detects and sets it up just fine in the installer with CD burning and automounting enabled.

If you forgot to set the DVD drive's region before you blew Windows off the hard drive, you can use the rpcmgr utility to poke around. Sadly, it seems as if there is no region-free firmware for this drive, so we must accede to this little corporate restraint of free trade.

To be able to play DVDs, you need something called libdvdcss to handle decryption. You should be able to find it without too much difficulty. Note that playing DVDs that you own on equipment that you own may be illegal in some jurisdictions that have stupid laws, so you may have to be in a free country or something to enjoy your movies. After that, you should be able to watch DVDs just fine in Xine or mplayer or whatever you like to use.

The CD-RW is set up correctly by the installer. K3B works out of the box.

I haven't tried hot-swapping in the drive bay as I have nothing to hot-swap. IBM doesn't make a floppy for the Ultrabay Slim, so about the only thing you can sensibly swap the combo drive for is a travel blank or second battery.

Power Management

ACPI is finally at a usable state. The important things, like battery status, suspend to RAM, and suspend to disk all work. The hard stuff is all set up for you out of the box, so there's no need for kernel hacking like in the days of yore.

To suspend the machine do (as root) echo 3 > /proc/acpi/sleep -- this will suspend to RAM. To suspend to disk via the software-suspend interface, do echo 4 > /proc/acpi/sleep

Of course, we want to be able to automate certain events. First, make sure acpid is running. You need to define events that are of interest and the actions to take when the events are triggered. The interesting events are defined by files placed in /etc/acpi/events/. For example, I have in /etc/acpi/events/lid

event=button/lid
action=/etc/acpi/actions/lid.sh

Of course, the command or script that the action points to actually controls what happens. To suspend on lid-close, the script will need to do whatever pre and post suspend actions are needed, as well as the suspend itself. For an example, see my supplemental files. It is very easy to totally customize everything with this system.

I observe that you don't need these scripts (or ACPID, for that matter) in KDE, as it has its own power management daemon. It is not as configurable, but might be easier to use.

SpeedStep works on this machine. This allows the system to dynamically change the processor frequency to conserve power. It has a large impact on improving the overall battery life of the machine; you can squeeze out another hour or so by using SpeedStep and frequency scaling.

There are two components to getting SpeedStep to work. The first is the kernel speedstep module (speedstep-centrino), which is supplied with the Mandrake kernel. It should already be set up for you.

The other component is the user-space daemon cpufreqd. Mandrake packages for this are available and is active on boot by default when installed. The daemon changes the CPU frequency based on rules, mostly having to do with AC and power status. The default /etc/cpufreqd.conf configuration is pretty reasonable.

ACPI is also in the mix, somehow, as it plays with throttling. More later.

The battery life for light use (includes network) is somewhere between three and a half hours to four hours. You may be able to squeeze out more if you fiddle with things. This is with the standard battery, not IBM's big honking 8 hour monster battery.

Parallel

There's a parallel port on the back. I set it to ECP. Linux sees it just fine, but since I don't have anything to plug into it, I can't test if it works. It really should, though; this isn't rocket science.

Serial and IrDA

There is no actual old-school 9-pin serial port on the machine. The circuitry is all there, but the connector is not. I suspect the dock or port replicator might have it. Since I have neither of these things, I simply disabled the serial port.

IrDA might work, but I don't have any IrDA devices to test it with, so I really can't say. Other people have gotten it to work.

Bluetooth

Press Fn-F5 to turn on the Bluetooth radio, which is apparently connected via an internal USB port. It loads bluetooth driver. Everything seems happy, but since I don't have any Bluetooth devices, I have no idea if it really works. It should, though.

USB

Mandrake sets up USB for you (usb-uchi, ehci-hcd, usbcore). It works with all of my toys. The USB subsystem does survive a suspend/resume cycle, so you don't need to do any monkeying around.

Special Buttons and Gadgets

You can get all kinds of cool Thinkpad-related stuff to appear in /proc/acpi/ibm by loading the ibm_acpi module. You should definitely do this.

There are four special buttons above the keyboard: AccessIBM, VolDown, VolUp, and Mute. These are not conventional keys and generate no scancodes.

The volume control functionality is implemented in hardware and works independently of the operating system. You need to install software only if you want an on-screen display.

Fortunately, such software exists. Grab the Mandrake tpb package from contribs, or install it by hand from source. Download Markus Braun's tpb program to enable the use of the AccessIBM button and on-screen display. You can assign an arbitrary shell command to the button (such as opening a terminal), and if you build it with on-screen display support (requires xosd and related packages from contribs), you get on-screen displays for volume changes and various other messages. Very cool. Instructions for setting this up are included in the download.

The ThinkLight, which is a keyboard light mounted on the screen, works automagically with Fn-PgUp. The screen brightness controls (Fn-Home, Fn-End) are hardware controls and work independently of the operating system. If you have tpb installed, you can have it display messages on-screen when status changes.

For additional fun with the ThinkLight, install gaim-thinklight, a plugin for Gaim that blinks the light whenever you receive a message. You need ibm_acpi loaded and install the provided suid thinklight command-line executable.

There also exist Thinkpad Configuration Tools for Linux. These tools provide most of the functionality of the PS2.EXE DOS-based configuration tool and its various Windows-based descendants. This will let you change things like the behavior on lid-close on the fly, without rebooting into the BIOS. Before we go on, however, I'd like to point out that most of the functionality here has been superceded by ACPI support, so you probably don't want to bother with this unless you have a specific need in mind.

tpctl is included on Powerpack CD5 and CD6 (package tpctl)

The Thinkpad Tools consist of two parts: a kernel driver and a user-space tool. The kernel driver does not ship with Mandrake, so you'll have to build it yourself. The user-space tool does ship on one of the supplemental CDs.

The primary tool is tpctl or ntpctl, which can be used at the command line. The project has also recently released a GTK2-based graphical configuration tool that duplicates the same functionality; it is probably preferable if you use X regularly. Mandrake contribs has this as the configure-thinkpad package.

To make tpctl usable by non-root, you need to make sure you have permissions. I suggest creating a thinkpad group, adding yourself to it, and then changing permissions on /dev/thinkpad to give the group write access.

There's no need to do what the directions say about editing /etc/modules.conf as everything gets loaded on demand correctly now.

TCPA Chip (IBM Embedded Security Subsystem 2.0)

The T40 comes with a TCPA chip which isn't terribly useful. IBM Research provides an open-source Linux driver along with white papers and example code. I haven't felt the need to actually play with it. The readings available there are actually pretty interesting and informative, and are well worth a read before you dig out the torches and pitchforks.

General Comments

I'll make a few general comments here. If you are looking for a review, look elsewhere.

Linux

The laptop is quite Linux-friendly. Aside from the issue with the e1000 driver, it's all pretty good, and that one is a software issue as it used to work fine in 2.4. It is nice to see IBM supporting Linux on laptops, or at least designing their machines to not be overtly hostile like many are today.

Physical Characteristics

The machine is amazingly thin, a bit less than an inch with the lid down. Despite this, the case (magnesium construction?) feels very solid and rigid, and it appears to be built as "tank-like" as you can get anything that's only one inch thick.

The keyboard feels subtly different from the old T2x series. The travel response is somewhat shallower and the curve is flatter. I think I like the old keyboards better.

The keyboard light is significantly brighter than the ones on earlier models, comparable to a small LED flashlight. Much more effective in the dark than the old light, which was barely enough in pitch darkness. You can read papers by it if you have to.

Lots of people dislike the lack of a Windows key. I am not one of those people. I don't run Windows on my Thinkpad anyway, so the lack of a Windows key means my Ctrl and Alt keys are nice and big. The placement of the Fn key is a little funny, but it has been there for ages and probably won't move anytime soon.

I dislike the new web navigation keys (Forward/Back). They are right by the arrow keys, and I used to use the blank space by the arrow keys to center my fingers. Now I am hitting these keys all the time. Grr.

This machine is amazingly easy to disassemble. It is vastly easier to get at the guts of the machine compared to the T2x series, where you had to basically disassemble the whole thing to get at the LCD panel. You don't have to remove more than 3 or so parts to get at anything in the T40.

Compared to the SXGA+ T22, the T40 does a much nicer job of interpolating lower resolutions. You can run X at a lower resolution and you'll get smooth interpolation instead of awful jaggies. This is probably due to improvements in the video card, BIOS, or both.

IBM apparently hired some daring and radical designers for the T40: there is color on the machine! The Enter key is dark blue and the function keys are grey. The hinges are silver. You can still have a Thinkpad in any color you like as long as it is black, but the addition of a little color and the touchpad are the most radical style changes ever seen in a laptop series that has stuck with the same plain Amish-style aesthetics since the beginning.

Supplemental Files

Complete listings for various supplemental files (xorg.conf and others) and materials has been moved to a separate page.

Links

Several pages from other people were valuable in researching solutions for this laptop. They are provided below as references and should be useful if your hardware and software configuration does not match mine.

Older Versions

Important differences between the current instructions and prior versions are noted here.


Mandrake 10.1 Official

Ethernet

There are serious issues with the onboard gigabit ethernet in the 2.6.8 kernel. If ACPI is enabled (and for a laptop, it really should be!), the card will flake out ten or twenty minutes after the first suspend/resume cycle. You will see a bunch of messages in dmesg that look like:

NETDEV WATCHDOG: eth0: transmit timed out
e1000: eth0: e1000_watchdog: NIC Link is Up 100 Mbps Full Duplex

At this point, no amount of playing with ifconfig or modprobe or rmmod will bring the interface back up. If you suspend and resume, it will be working again, but the problem will rise again. This is a known problem that manifests itself on only a few systems, including, unfortunately, IBM Thinkpads. Hopefully it is fixed in 2.6.9 or a further upstream kernel.

Until such time as I find a solution, I recommend using a PCMCIA network card if you need wired ethernet.

WiFi

The card is supported out of the box in Mandrake with the madwifi driver (package madwifi). Drakconf will set it up correctly for you. I've run into some occasional glitchiness when scanning (so no wardriving), but it doesn't seriously impact functionality as a wifi client.

Mandrake 9.2.1

Video and X Windows

I've had no luck with the proprietary ATI fglrx driver, but the open source radeon driver works fine with 3D.

External display (VGA-out) just works. In fact, I can't figure out how to not have it work. Simply plug in a monitor and away you go. If it detects that the external monitor cannot support the desired resolution, it will drive the external display at 640x480 and pan as needed. If it is panning when the external display is in fact capable of the higher resolution, shut down X, remove the radeon module (rmmod radeon as root) and start X again and it should reset the VGA-out settings to match the external display.

As a result, Fn-F7 (LCD/VGA toggle) is redundant and does absolutely nothing. Fn-Space (screen magnification) also does nothing. However, pressing Fn-F3 (blank screen) hard freezes the machine instantly. This is related to the console blanking freeze issue. Don't press Fn-F3.

Also related to the console blanking issue: you may want to disable DPMS, just to be on the safe side.

Keyboard

The XF86Config-4 that Mandrake generates for you uses en_US as the keyboard type (assuming you selected American English as your language). This has the unfortunate side effect of making the Right Alt and a couple other keys not work. The fix is to change the keyboard type to us.

Trackpoint/Touchpad/Mouse

If you don't care about the middle mouse button, everything works fine. If you do want to have a middle mouse button, read on.

I decided to try to set up some pretty fancy behavior: I wanted the Trackpoint and Touchpad working simultaneously, with all three buttons, and tap-click and "scroll wheel" on the side of the Touchpad, and hotpluggable external mice.

The issue with the middle mouse button is that it cannot be used at the same time with the touchpad. There's a fairly easy solution that uses the repeater feature of gpm. You need a recent-ish version of gpm (1.20), but Mandrake ships with it.

Edit /etc/sysconfig/mouse and make it look something like this:

MOUSETYPE="synps2 -M -m /dev/usbmouse -t imps2 -Rms3"
XMOUSETYPE=synps2
FULLNAME="Synaptics Touchpad"
XEMU3=no
WHEEL=yes
device=psaux

That big line by MOUSETYPE specifies a Synaptics PS/2 Touchpad as one device and merges it with the USB Wheel Mouse and relays everything out as a virtual IntelliMouse. The rest is self-explanatory.

However, gpm will fail to start if it can't open all mouse devices on start, and you probably won't have the USB mouse plugged in constantly. We need to hack a couple of things to make it think the USB mouse is always there even if it isn't.

Look for the corresponding line in /etc/hotplug/usb.rc and change it to look like:

X11_USBMICE_HACK=true

Also, add input and mousedev on separate lines somewhere at the bottom of /etc/modules.

We also want to create a file /etc/gpm-syn.conf that contains configuration specific to the Synaptics touchpad. Mine looks like:

[stick_enabled y]
[scrolling_enabled y]
[standard_speed_factor 0.10]
[edge_motion_enabled n]
[speedup_pressure_factor 0.10]
[wmode_enabled y]

The only really interesting bit is enabling scrolling and the speed and pressure factors. You can find a complete list of options in the source code to gpm (see synaptics.c).

Now make XFree86 use the repeater instead of the real mouse. Look in /etc/X11/XF86Config-4 and change the mouse definition to look like the following:

Section "InputDevice"
    Identifier "Mouse1"
    Driver "mouse"
    Option "Protocol" "IntelliMouse"
    Option "Device" "/dev/gpmdata"
    Option "Emulate3Buttons" "no"
    Option "Buttons" "5"
    Option "ZAxisMapping" "4 5"
EndSection

The lines about Buttons and ZAxisMapping enable the scroll wheel.

Now, this gets most things working, but selecting and dragging in X is a little wonky. Get this patched version of synaptics.c (off the gpm-devel lists) and rebuild your gpm off the SRPM or whatever. See my URPMI/RPM Tutorial if you don't know how to do this.

You can tap with one finger for left-click, two fingers for right-click, and three fingers for middle-click.

You should also add gpm to the list of services that needs to get restarted on resume. If Mandrake didn't already do this for you, edit /etc/sysconfig/suspend and make sure that the line that contains RESTART_SERVICES contains gpm somewhere in the list.

Oh, and don't boot with a USB mouse attached if you plan on using the built-in pointer. The BIOS will disable the built-in pointer if it detects an external mouse on boot. You can change this behavior by tweaking the BIOS (Config/USB/USB BIOS Support), but then you lose the ability to boot from a USB floppy.

Ethernet

Ethernet works. The installer sets it up with the e1000 driver. I haven't tested the gigabit aspect of it as I'm not nearly lucky enough to have such equipment at home.

Modem

If you go hunting on IBM's website for drivers, you'll see that they provide a link to the Agere Softmodem driver. This driver is not open source (it uses a proprietary HAL like nVidia) but it builds and loads without problems on my machine. I've tested dialing out and everything works up to connecting; I haven't tried anything beyond that as I'm not subscribed to any dialup services.

Based on reading other people's webpages, it appears that I am the only person in the world who got the Agere driver working without a hitch. Pretty much everyone else recommends the SmartLink driver.

WiFi

The Atheros card is supported by the madwifi (Multiband Atheros Driver for WiFi) project. Grab the latest version from CVS; it sets up the driver side of things for you.

Be sure to read all of the instructions, as there are certain peculiarities specific to the Atheros driver. The most noticable one is that the card does not start scanning for an access point until you mark the interface as up. Bringing the interface up is straightforward. For example:

ifconfig ath0 up
iwlist ath0 scanning
dhclient ath0

At this point you should be connected. To turn off the wifi radio, rmmod the ath_pci module.

Remember to build the driver with the SOFTLED option (see the driver README). This enables code to turn the wifi LED on when connected.

PCMCIA

You must properly stop the card (cardctl eject) before removing the card or suspending the machine. Failure to do this is all but guaranteed to crash the machine.

DVD/CD-RW

The CD-RW is set up correctly by the installer. Eroaster seems to be completely happy. For whatever reason, K3B detects six separate devices, but works anyway if you use the first one.

Power Management

You want to use APM and not ACPI. The ACPI support in Linux still ain't there yet, because no manufacturer actually follows the spec like they should. The theoretical advantages are outweighed by the fact that it doesn't work so well.

IBM is one of the few companies that still make laptops with APM support in the BIOS, which makes Thinkpads among the few current laptops that do suspend to RAM and all that fine under Linux.

Mandrake should automatically set up APM to start on boot. The machine will suspend just fine on lid close or Fn-F4.

SpeedStep works on this machine. This allows the system to dynamically change the processor frequency to conserve power. It has a large impact on improving the overall battery life of the machine; you can squeeze out another hour or so by using SpeedStep and frequency scaling.

There are two components to getting SpeedStep to work. The first is the kernel speedstep module (speedstep-centrino), which is supplied with the Mandrake kernel. To make the module load on every boot, add it somewhere in /etc/modules

The other component is the user-space daemon cpufreqd. Mandrake packages for this are available and is active on boot by default when installed. The daemon changes the CPU frequency based on rules, mostly having to do with AC and power status. The default /etc/cpufreqd.conf configuration is pretty reasonable, but you need to change it to use apm and not acpi.

You can probably convince it to do something other than just performance and powersave. The apmiser utility supposedly dynamically adjusts frequency based on system load, but I haven't felt the need to try it.

The battery life for light use (includes network) is somewhere between three and a half hours to four hours. You may be able to squeeze out more if you fiddle with things. This is with the standard battery, not IBM's big honking 8 hour monster battery.

If you haven't noticed already in the previous sections, you must disable console blanking in the BIOS. Having this feature on will crash your machine consistently.

There is one sole irritating issue with power management. When you shut down Linux, it appears to shut down and halt but the power light is still on and the system is still on. You have to hold down the power button for four seconds (or whatever you customized Power Off to in the BIOS) to really power it down. There is supposedly a solution that involves rebuilding your kernel with Local APIC Support disabled, but since I never shut down the machine I haven't felt the need to try this. See other people's pages for hints on this.

Bluetooth

Press Fn-F5 to turn on the Bluetooth radio. Load the bluez driver. Everything seems happy, but since I don't have any Bluetooth devices, I have no idea if it really works. It should, though.

USB

The USB subsystem does not survive a suspend/resume cycle, so you'll have to tell the system to unload USB on suspend and reload on resume. Look for the relevant line in /etc/sysconfig/suspend and change it to:

USB_RESTART="yes"

Special Buttons and Gadgets

Works the same as recent versions, with a couple of twists. Get the Thinkpad Configuration Tools for Linux and follow the directions, including the parts about devfs and modifying /etc/modules.conf