Linux on the ThinkPad R52

Wake Forest faculty and students are issued new IBM ThinkPads on a two-year rotation. The model I had until July 2007 is the R52.

Specs | Linux installation | Xorg | Ethernet card | Wireless card | Hard disk | Audio
CD/DVD | Modem | IBM resources

Specifications

The WFU-issue Thinkpad R52 (type 1847 DD2) comes with

Linux installation

I don't use a Linux "distro" -- I have a system of my own that I have fine-tuned over the years. When I get a new Thinkpad, I copy the old system to CD-ROM in the form of gzipped tarfiles. After setting up the new hard drive, I copy the system over and tweak it as needed for the new machine.

My basic strategy on this occasion was as follows:

  1. Boot from Knoppix (version 3.9, 2005-05-27). Knoppix does an excellent job of recognizing hardware, so I make note of what it finds and which kernel modules it loads. Use the on-board tools (ntfsresize, fdisk, mkswap, mke2fs) to repartition and prepare the hard drive.
  2. Boot Windows XP and check the resized NTFS partition. Copy my own system files from CD to the NTFS partition.
  3. Reboot Knoppix; mount both the NTFS partition and the new Linux partition; decompress my system files from the former onto the latter; run lilo.
  4. Boot Linux natively using lilo.

As usual, however, there were a few complications. After initially booting Knoppix I was ready to run ntfsresize on /dev/hda1. Surprise: There was no /dev/hda! On inspecting the output of dmesg it transpired that Knoppix was "seeing" the drive as a SCSI device; I had a /dev/sda, not /dev/hda. This is due to the fact that the hard-drive controller is Serial ATA, and there's a Linux driver for this under the SCSI subsystem. I gather from my own experimentation that if the kernel does not include SCSI support the drive will be managed as EIDE, but if the appropriate SCSI support is present, the kernel "prefers" to see the disk as SCSI. (See also the SATA page at linuxmafia.com; and there's a bit more info below.)

After some initial confusion I went with Knoppix's SCSI approach. After re-partitioning my hard drive looks like this:

Disk /dev/sda: 80.0 GB, 80026361856 bytes
240 heads, 63 sectors/track, 10337 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        5171    39092728+   7  HPFS/NTFS
/dev/sda2            5172        5304     1005480   82  Linux swap / Solaris
/dev/sda3            5305       10337    38049480   83  Linux

Xorg

Xorg version 6.8.2 supports the ATI Radeon Mobility M300 video (module "radeon"), and can drive the TFT display at 1400x1050 resolution, with a color depth of 24 bits per pixel. The only wrinkle is that, for this new chipset, Direct Rendering is not supported by the Xorg driver.

Direct Rendering is, however, supported by the proprietary ATi driver. Info is available at thinkwiki.org. As of this writing the current version of the ATi driver is 8.18.8 (Oct 26, 2005). For building against Linux 2.6.14 one small patch is required

--- firegl_public.c.orig        2005-10-31 13:29:13.000000000 -0500
+++ firegl_public.c     2005-10-31 13:31:00.000000000 -0500
@@ -1475,7 +1475,7 @@
 
 int ATI_API_CALL __ke_verify_area(int type, const void * addr, unsigned long size)
 {
-    return verify_area(type, addr, size);
+    return (access_ok(type, addr, size) ? 0 : -EFAULT);
 }
 
 int ATI_API_CALL __ke_get_pci_device_info(__ke_pci_dev_t* dev, __ke_pci_device_info_t *pinfo)

TrackPoint/Touchpad

The R52 features a dual pointing system: trackpoint plus "UltraNav" touchpad. If you just configure this in X as a PS/2 device the TrackPoint works fine as a three-button mouse. The Touchpad also works OK. I have this stanza in my xorg.conf:

Section "InputDevice"
   Identifier    "Touchpad"
   Driver        "synaptics"
   Option        "SendCoreEvents" "true"
   Option        "Device"         "/dev/psaux"
   Option        "Protocol"       "auto-dev"
   Option        "ZAxisMapping"   "4 5"
   Option        "EmulateWheel"   "True"   
EndSection

Page keys

There are a couple of special keys above the left and right arrow keys, which I gather are bound to Forward and Back in Internet Explorer under Windows. Using xev, I identified their keycodes as 233 and 234, and I put the following into my ~/.Xmodmap:

keycode 233 = Next_Virtual_Screen
keycode 234 = Prev_Virtual_Screen

Then in sawfish (the window manager I use) I bound these keys to page between workspaces.

Ethernet Adapter

The WFU R52 comes with an integrated ethernet controller, indentified via lspci as Broadcom NetXtreme BCM5751M Gigabit Ethernet PCI Express. You can drive this using the Tigon3 driver (module tg3) supplied with the current linux kernel.

Wireless card

Atheros Communications, Inc. AR5212 802.11abg NIC. I haven't had occasion to try this yet, but it should work OK with the madwifi driver. The Atheros card in my previous Thinkpad R40 did.

Hard disk, again

When I built a kernel with SCSI support, I orginally thought, from googling the Intel "Ultra ATA" controller, that I should be able to use the AHCI (Advanced Host Controller Interface) driver under libata in the Linux 2.6.12 SCSI subsystem. This appears to be the most advanced driver for the hardware. But it doesn't work:

	ahci: probe of 0000:00:1f.2 failed with error -12

There's a brief discussion of this at lkml.org. Jeff Garzik says, "You need to either load ata_piix driver, or tell your BIOS to initialize AHCI mode." There doesn't seem to be any way of telling the Thinkpad BIOS to initialize AHCI mode, so I'm using the ata_piix driver. But I gather this is less than optimal so perhaps this is an issue to be revisited later. (See also: SATA details.)

Audio

This is "SoundMax" (Intel ICH6 card, Analog Devices AD1981B chip). It works fine with the ALSA snd_intel8x0 module.

CD/DVD drive

With my original kernel setup Linux recognized this as an IDE CD drive, at /dev/hdc. This seemed fine until I tried playing a DVD, which revealed that it was horribly slow (xine complained about dropping an excessive number of frames). After some googling I found a solution: cut the Linux IDE driver out of the picture altogether and use libata for both the hard drive and the CD drive. With this modification the CD is found at /dev/sr0 and the speed is fine; xine works nicely. If there are bad side-effects, I haven't found them yet! (See also: SATA details.)

Modem

K56Flex v.92A, Intel AC'97 controller. I haven't messed with this yet, but I believe it is usable. There is some relevant info here.

IBM resources

It's worth checking from time to time for BIOS updates and so on at IBM. Reasonably full technical specs from IBM are here.


Allin Cottrell (cottrell@wfu.edu) originally June, 2005; last updated Ocrober 31, 2005