Note: My R30 officially died in January 2005, so this page will no longer be maintained.
My old Toshiba died (the IDE controller, or something like that, went on strike), so I decided to get a ThinkPad. Why an IBM?
- I trust IBM more than Toshiba.
- They’re not as expensive as they used to be.
- I can only use the TrackPoint (touchpads don’t work for me).
- Three button pointing device!
- They claim Linux support. (RedHat but... what do you expect?)
My aims were to get a cheap laptop that would last me for many years (until I could afford a more expensive one) as a primary computer (I don’t have a desktop machine. The R30 fit the bill for the most part. It has built-in Ethernet and 802.11b, a fast processor, lots of RAM, but only one PCMCIA slot, which may limit my expandability. At least the built-in Ethernet and 802.11b means that I won’t need a slot for those things. I think that I should be OK. We’ll see...
About a month after I bought my R30, IBM released the R31, which has a different chipset from the R30. From what I can tell, its chipset is more compatible with Linux (and better than what’s in the R30).
- video (XFree86 4.2), but the acceleration doesn’t seem to be that good
- built-in ethernet
- (some) IrDA — see below for details
- APM (mostly)
- ACPI (sort of, except suspend)
- 802.11b wireless
- warm swapping on the UltraBay
- keyboard volume controls
- “press-to-select” on the TrackPoint - sortof
- DVD playing
what doesn’t work (or I haven’t been able to get it to work):
- hibernation (seems to need a FAT partition, but my Windows partition is NTFS)
what I haven’t tried yet:
- the WinModem (but I am told that this one doesn’t work with the Lucent binary drivers)
- S-video out (and I’m not very hopeful
- (some) IrDA, e.g. networking, printing, etc. (it should work)
- IBM ThinkPad R30 (26564AU)
- Pentium III 1GHz
- 128MB standard
- Removable media:
- comes with a DVD-ROM, which can be swapped out and replaced with other drives, such as a floppy, or CD-RW
- Video card:
- Trident CyberBlade Aladdin i1 w/ 8MB RAM (it actually steals 8 MB from the main memory
- Video outputs:
- standard VGA and S-Video
- 13.3" TFT
- Sound card:
- Acer ALi M5451
- built-in Intel 82557-based 100Base-T
- built-in Actiontec 802.11b miniPCI card
- Lucent winmodem AMR
- parallel port, 2 USB 1.1 ports, UltraBay Plus, 1 PCMCIA slot (no serial port, no keyboard/mouse port, but these are available on an optional docking station, or with USB adaptors)
00:00.0 Host bridge: Acer Laboratories Inc. [ALi] M1621 (rev 01) 00:01.0 PCI bridge: Acer Laboratories Inc. [ALi] M5247 (rev 01) 00:06.0 Multimedia audio controller: Acer Laboratories Inc. [ALi] M5451 PCI South Bridge Audio (rev 01) 00:07.0 ISA bridge: Acer Laboratories Inc. [ALi] M1533 PCI to ISA Bridge [Aladdin IV] 00:0a.0 Ethernet controller: Intel Corp. 82557 [Ethernet Pro 100] (rev 0d) 00:0c.0 Network controller: Harris Semiconductor: Unknown device 3873 (rev 01) 00:10.0 IDE interface: Acer Laboratories Inc. [ALi] M5229 IDE (rev c3) 00:11.0 Bridge: Acer Laboratories Inc. [ALi] M7101 PMU 00:13.0 CardBus bridge: O2 Micro, Inc.: Unknown device 6972 00:14.0 USB Controller: Acer Laboratories Inc. [ALi] M5237 USB (rev 03) 01:00.0 VGA compatible controller: Trident Microsystems: Unknown device 8620 (rev 5d)
The 4AU comes with Windows XP pre-installed. (XP is a pig. 128MB is barely enough for it, and I wasn’t running a whole lot either.) I wanted to keep it around in case I needed to run some ThinkPad utility, or if the computer needed to be serviced for any reason (my old Toshiba needed repairs done, and they wanted me to reinstall Windows before they would touch it). Unfortunately, XP decided to convert the partition to NTFS, so fips and GNU parted wouldn’t work with it. Oh well. Time to give PowerQuest some money. PartitionMagic 7.0 supports XP and NTFS, and it handled my system quite well. It did an oops at one point, but chkdsk was able to recover everything. I ended up with the following partition table:
|hda2||800MB||IBM’s recovery partition(hidden)|
|hda5||6GB||my root directory|
|hda7||13GB||/var, /usr/local, /tmp, and /home (basically everything that can’t be on a read-only partition)|
I left about 4GB of space so that I could try out other OS’s like HURD or AtheOS if I felt like it.
Unfortunately, my laptop didn’t come with a floppy drive, and I had no access to a CD writer. I wanted to run Debian, so I couldn’t just go to a store to pick up a copy. I ordered an UltraBay floppy drive from IBM, but they didn’t have any stock, so I would have to wait. In the meantime, I got an UltraBay second HDD adaptor, so that I could copy my old files (and all my customizations) over.
After about three weeks of waiting (and calling IBM and finding out that I wouldn’t be able to get a floppy drive for another two weeks (which, by the way, they were way off — by over a month!)), I decided I had enough of playing around with WinXP. Fortunately, IBM lets you set the drive in the UltraBay HDD adaptor to be the primary drive, and to boot from it. After some fiddling to make it boot right (grub saw my old hard drive as the first hard drive, as it was told by the BIOS, but Linux goes by the IDE controllers), Linux booted successfully. (w00t!) Fortunately, none of my old configuration messed up the ThinkPad.
I just formated my new partitions as ReiserFS, and copied everything from my old partition to my new partition. Then I booted to the new hard drive, recompiled the kernel to support the new hardware, and rebooted. Finally, I installed grub on the new drive (after checking that WinXP would boot from grub).
Later on, I decided to do a full reinstall. I popped in the UltraBay floppy drive that finally came, popped in the Debian install disks, and did a network install. It was mostly straightforward, but I kept a lot of my configuration files. I think the only thing I really had to do was to load the eepro100 module so it could access the network.
The TrackPoint behaves like a standard 3-button PS/2 mouse, and pretty much Just Works, except for press-to-select. I’m running gpm which eats the mouse input, so XFree86 must be configured to use gpm’s mouse data echoing. I also use tp-scroll so that the middle button can act both as a standard middle button, and as a scroller (hold down the button, and push the TrackPoint around) — vertical scrolling only. This gives a nice mess of a pipeline. I have the following as my /etc/gpm.conf:
device=/dev/misc/psaux responsiveness= repeat_type=raw type=autops2 append="" sample_rate=
(change the device to
/dev/psaux if you aren’t running devfs), then
I set up tp-scroll to read from
/dev/gpmdata and write to
with this script:
#!/bin/sh mkfifo /dev/imouse tp-scroll -i /dev/gpmdata -o /dev/imouse &
And I have the following in my /etc/X11/XF86Config-4:
Section "InputDevice" Identifier "TrackPoint" Driver "mouse" Option "CorePointer" Option "Device" "/dev/imouse" Option "Protocol" "ExplorerPS/2" Option "ZAxisMapping" "4 5" EndSection
To get "press-to-select" to work (i.e. pushing down on the TrackPoint knob counts as a button click), you can use tp4utils. Unfortunately, I couldn’t find settings that work for me, and half the time when I press the knob, it thinks I’m trying to drag. So since I would hardly use press-to-select, I got rid of it. If you find settings that work, let me know.
It uses an integrated Acer M5451 chip. It has a headphone output and a microphone input. I think that with a port replicator, you get a line in too.
lspci -vv excerpt:
00:06.0 Multimedia audio controller: Acer Laboratories Inc. [ALi] M5451 PCI South Bridge Audio (rev 01) Subsystem: IBM: Unknown device 0506 Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- Status: Cap+ 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR+ <PERR+ Latency: 32 (500ns min, 6000ns max) Interrupt: pin A routed to IRQ 11 Region 0: I/O ports at 9400 [size=256] Region 1: Memory at 81c00000 (32-bit, non-prefetchable) [size=4K] Capabilities: [dc] Power Management version 2 Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2+,D3hot+,D3cold+) Status: D0 PME-Enable- DSel=0 DScale=0 PME-
I’m using the
ali5451 drivers from the ALSA system. Everything
seems to be working fine, but I haven’t tried MIDI playback yet. The ALSA
mixer also lets me control the system beep volume.
Unfortunately, there’s no hardware volume control. On the keyboard, there are buttons to mute or change the volume. The mute button works, and pressing one of the volume buttons unmutes, but I can’t get the volume to change. However, see below for how to setup the volume buttons.
Recording from an ALSA program works.
lspci -vv excerpt:
01:00.0 VGA compatible controller: Trident Microsystems: Unknown device 8620 (rev 5d) (prog-if 00 [VGA]) Subsystem: IBM: Unknown device 0502 Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- Status: Cap+ 66Mhz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- Interrupt: pin A routed to IRQ 11 Region 0: Memory at 80800000 (32-bit, non-prefetchable) [size=8M] Region 1: Memory at 80500000 (32-bit, non-prefetchable) [size=128K] Region 2: Memory at 81000000 (32-bit, non-prefetchable) [size=8M] Expansion ROM at 80520000 [disabled] [size=64K] Capabilities:  AGP version 1.0 Status: RQ=32 SBA+ 64bit- FW- Rate=x1,x2 Command: RQ=0 SBA- AGP- 64bit- FW- Rate=<none> Capabilities:  Power Management version 1 Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-) Status: D0 PME-Enable- DSel=0 DScale=0 PME-
The video chip is a Trident CyberBlade Aladdin i1 which steals 8M of memory from the main memory to make up its video RAM. I am using the trident driver from XFree86 4.2, running at 1024x768x24bpp. It doesn’t seem to be accelerated too well (it seems slower than the S3 ViRGE/MX from my old Toshiba).
Xv seems to work more or less as of XFree86 4.2 (it was inconsistent in 4.1). The only problem is that there’s sometimes a blue band around the window, but that’s bearable. And mode switching seems to be fubar’ed, but it’s fast enough just having the window fill the whole screen. Mmmm. Full-screen video.
I have to use the software cursor, otherwise the cursor gets displayed as a big block, rather than an arrow. I’ve been told that it also fixes the 5cm-to-the-left problem that others have been having. In your /etc/X11/XF86Config-4 (or XF86Config, depending on what your distro does), the video card section should look something like this:
Section "Device" Identifier "Generic Video Card" Driver "trident" VideoRam 8192 Option "SWCursor" "on" EndSection
The SWCursor option is the one which turns on the software cursor.
Under X, I couldn’t get it to switch to driving an external monitor. Under XFree86 4.1, I had to switch to text mode with the monitor plugged in, switch it to drive an external monitor, and then restart X. Under XFree86 4.2, the situation has improved a bit: I just need to switch to text mode, plug in the monitor, switch it to drive the external monitor, and switch back to X (no restarting necessary).
The contrast buttons (Fn+Home and Fn+End) adjust the contrast properly.
Under Windows, it seems that I can set up an external monitor in a dual-head setup (LCD and monitor displaying different images), but I don’t have a second monitor, so I haven’t tried it out, and I definitely haven’t tried to make XFree86 do that. Well, apparently support for this hasn’t been coded up yet.
It has an integrated Intel 82557 100-BaseT network adaptor.
lspci -vv excerpt:
00:0a.0 Ethernet controller: Intel Corp. 82557 [Ethernet Pro 100] (rev 0d) Subsystem: IBM: Unknown device 023a Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- Status: Cap+ 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- Latency: 32 (2000ns min, 14000ns max), cache line size 08 Interrupt: pin A routed to IRQ 11 Region 0: Memory at 81a00000 (32-bit, non-prefetchable) [size=4K] Region 1: I/O ports at 9000 [size=64] Region 2: Memory at 81a20000 (32-bit, non-prefetchable) [size=128K] Expansion ROM at 81a40000 [disabled] [size=64K] Capabilities: [dc] Power Management version 2 Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold+) Status: D0 PME-Enable- DSel=0 DScale=2 PME-
eepro100 module from the kernel works fine. The only
problem is that it won’t suspend when I suspend the rest of the computer.
It has a miniPCI wireless network card.
00:0c.0 Network controller: Harris Semiconductor: Unknown device 3873 (rev 01) Subsystem: Action Tec Electronics Inc: Unknown device 0406 Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- Status: Cap+ 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- Interrupt: pin A routed to IRQ 11 Region 0: Memory at 80200000 (32-bit, prefetchable) [size=4K] Capabilities: [dc] Power Management version 2 Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold-) Status: D0 PME-Enable- DSel=0 DScale=0 PME-
orinoco_pci module from the 2.6 kernel works with the card.
The next paragraph is a bit outdated — I haven’t tried the prism2 drivers lately.
The Prism2 PCI drivers from
Absolute Value Systems detects
the card, and I can connect to the wireless network at the University. I use
prism2_pci module. There seems to be some incompatibility between
the linux-wlan drivers and the drivers in the kernel in the sense that some
tools written for one will not work with the other. Hopefully this situation
will improve in the future.
APM seems to be working relatively well. When I hit the suspend key (Fn+F4), it seems to work properly, except that the Ethernet adaptor is still active, the fan is still spinning, and hitting the eject button on the DVD drive makes it eject, so there doesn’t seem to be much power saving. Hitting the "screen off" key (Fn+F3) makes the screen go blank.
Unfortunately, it doesn’t seem to like it if I pull the power cord and there’s some disk activity — it just crashes.
Suspending from X seemed to work fine too, but when I tried it, I also had to change the network settings, which made some programs not work properly, so it didn’t really buy me any time.
If the battery runs out while the computer is running, it will automatically go into suspend mode.
Note for Debian users: if you are using a stock Debian kernel, you will need to turn on APM by passing “apm=on” to the kernel. If you are using LILO, you can do this by adding an “append” line to your /etc/lilo.conf. (I don’t use LILO, so I can’t tell you exactly what the syntax is.) Apparently, APM causes problems with certain computers, so Debian opted to keep it off by default.
Hibernation doesn’t work yet, but I haven’t given it much effort other than hitting the hibernate key (Fn+F12) and seeing it not work. Marcus Carl informs me that hibernation works for him. It seems like hibernation wants a FAT partition (which Marcus has), but my laptop came with XP, so it uses an NTFS partition. I tried swsusp which sort of works. It didn’t seem to like the USB (I have USB support compiled statically into the kernel), and the sound card didn’t want to come up properly. I’m guessing that it should work with a bit more tweaking.
ACPI from kernel 2.6 works to some degree. Namely, it detects the CPU, temperature sensor, and battery, and displays information correctly. However, suspending doesn’t seem to work.
The kernel irda, irtty, ircomm, ircomm-tty modules seem to be enough to get
the IrDA into a state so that it can communicate with my Palm. The IrDA shows
/dev/ttyS1). I haven’t tried any of
the fancy stuff like IR networking, printing, etc., because I don’t have any of
LIRC works with the SIR module. I just need to kill
irattach, make the serial driver drop the IR port using
lirc_sir module, and load
lircd. (I actually load LIRC on
bootup rather than
irattach now, since I use my remote more often than I
sync with my Palm.)
My UltraBay floppy drive finally arrived (April 2, over two months after I
ordered it), so I tried warm swapping. At first, it didn’t work, because I
hadn’t enabled "Legacy Floppy" support in the BIOS. A (semi-)quick reboot
later, and it recognized the floppy drive. Then I suspended, popped out the
floppy, dropped in the DVD drive, and ran the
idectl (which is
hdparm), and it recognized the DVD. Nifty.
I don’t dare try hot swapping, because when I hit the switch to pop out the drive, the computer makes loud beeping noises. (BTW, under Windows, it makes loud noises when I hit the switch even when the computer is suspended.)
It works fine with the native Linux kernel stuff from 2.4.19. I haven’t tried the pcmcia-cs modules. I only have a Compact Flash to PCMCIA adaptor, and a FireWire card, so those are the only things that I’ve tried. But PCMCIA has been around for a while, so I would be surprised if things don’t work.
Keyboard volume controls
The R30 has four extra keys at the top-right of the keyboard: a “ThinkPad” key, a volume up and down key, and a mute key. The mute key seems to work fine, with no help, and hitting volume up/down unmutes, but they won’t change the volume without some coaxing.
ThinkPad Buttons (tpb) can be used to make the buttons do useful stuff. The volume controls will change the volume, and the “ThinkPad” button can be assigned to execute a command. It can also provide a nice on-screen display for the volume, contrast, and other buttons. It even includes Debian packaging scripts. (Thanks to Stephan Schwarzer for prompting me to try it out.)
As-is, it seems to eat up too much CPU, even when setting the poll interval
to something larger. Markus Braun, the author of tpb, suggested to comment out
line 677 in tpb.c (
get_apm_state(nvram_state);), which is used for
detecting when AC is connected or disconnected. With the change made, its CPU
use is negligible.
Targus power adaptor
I have a Targus car/plane power adaptor which uses different tips for different devices. It powers the R30 fine with tip number 7, which comes with the adaptor. The Targus AC adaptor uses the same tips, so I assume it should work as well.