Thinkpad 240

Thinkpad 240

260 × 202 × 27 mm, 1.3 kg

I got this in April 2000. I had to buy new batteries in July 2002 and again in February 2005. In July 2006 I replaced it with a Thinkpad x40.

This is a pretty nice machine. It actually has a built-in serial port, which I need for my smart card readers and Palm hotsync cable. It doesn't have a real modem or ethernet.

BIOS Versions

The IRET19WW BIOS that came with my 240 has a serious bug. Suspend/resume disables the cpu L2 cache, greatly degrading performance. I tried adding a resume hook to re-enable the cache via the cr0 cache enable bits but this didn't work. The cache isn't simply disabled, it completely disappears (as reported by cpuid). The only fix seems to be a bios upgrade.

I tried to "upgrade" to the IRET71WW bios version. Unfortunately, it has the nasty side effect of disabling the ctl-alt function keys for F1-F4, making it impossible to switch virtual consoles.

One solution is to rebind the keys in wscons. I rebind F1 as F6 and F2 as F7, then put X on console 4.

wsconsctl -w keyboard.map+="keycode 64 = Cmd_Screen0 f6 F6"
wsconsctl -w keyboard.map+="keycode 65 = Cmd_Screen1 f7 F7"

You can get bios upgrades from IBM.

A great resource for Thinkpad information is ThinkWiki.

See walker logan hagius' IBM ThinkPad 240 Page for more info on bios versions.

See tummy.com ThinkPad 240 Information for more useful tips, including how to change the disk or memory.

OpenBSD Quirks

PC-card modems don't work. If you like, you can try playing with arch/i386/i386/rbus_machdep.c:RBUS_IO_START. Good values to try are 2000, 700, 420, or 3f8. See also dev/isa/i82365_isasubr.c.

Despite the marketing hype, the 240 does not have a built-in modem (it's a mis-named "Win" modem).

Ctl-alt-F keys (for switching virtual consoles) don't work as expected. Ctl-alt-F1 works if you hit the F1 twice while holding ctl-alt. F2, F5, and F6 work normally. F3 and F4 don't work at all, they perform the same function that Fn-F3 and Fn-F4 perform, standby and suspend.

Quirks fixed in 3.6

In XFree86 4.2.0 and later, keys will sometimes autorepeat with no delay. This is extremely irritating. This is apparently due to repeated key up events, often reported by Toshiba users. Suggested solutions are to turn off auto-repeat, fix the kernel keyboard driver or the X server to suppress the bogus events, or disable Xkb.

My 3c575 won't suspend properly. It stays powered up, then on resume the machine hangs and must be power cycled.

Quirks fixed in 3.0

In XF 4.2.0, 3-button mouse emulation mode doesn't work. There is apparently a patch for this but I haven't tried it.

Quirks fixed in 2.9

Cardbus devices are unreliable. Most of them will work fine if you disable cardbus in your kernel config (or ukc), forcing them to run in isa compatibility mode.

In 2.8 you need to apply patches to apm.c and pms.c to get suspend to work (see below). Even with these patches, sometimes suspend fails. When this happens, the disk spins down, the suspend light starts blinking, and the machine goes into limbo. All you can do is power down and reboot.

I have commented out the USB devices in the kernel config. They are disabled in the generic kernel but I don't know why. I'll try them some day.

Quirks fixed in 2.8 or before

If you have anything in pcmcia socket 0, the normal kernels will get a page fault just after probing socket 1. Fix this by using the '-c' boot flag to get to UKC. Then change pcmcia* socket -1 to socket 0. Later, build a kernel with only pcmcia socket0 (see kernel config file below).

If you get a kernel page fault during the eso0 probe, disable eso* in ukc (see above), then build a kernel with no eso* device.

If you ctl-alt-del during the boot process, you may need a paperclip to recover.

OpenBSD 3.6 Configuration Files

kernel config and dmesg
XF86Config

OpenBSD 3.3 Configuration Files

kernel config and dmesg
XF86Config

OpenBSD 3.1 Configuration Files

kernel config and dmesg
XF86Config

OpenBSD 2.9 Configuration Files

kernel config and dmesg
XF86Config

OpenBSD 2.8 Configuration Files

kernel config and dmesg
XF86Config

Jim Rees