The ThinkPad 240 is a small laptop with only a 10.4" screen from 1999. It features a Mobile Celeron or PIII processor ranging from 300-600mhz. There were multiple models including the 240, 240X, and the 240Z. Detailed specs aren't common for the 240Z as it was available only in select markets. The 2609-21U model I have came with the 400mhz Celeron. I have since replaced the motherboard with one from a 240X for the faster 500Mhz CPU.
My 240 came from eBay and the seller didn't exactly pack it that well so the laptop was damaged. I didn't send it back because it was already AS-IS and I was able to get the screen working when the seller said it was dead. It came with a 12GB Hitachi DK23AA-12 HDD but it was dead on arrival. Pretty much only two options other than a new HDD for old PATA laptops: CompactFlash w/ IDE Adapter or PATA SSDs. PATA SSD's are pretty rare but I was able to grab a 16Gb Transcend TS16GSSD25-S with SLC NAND for about $15 from eBay. It runs a bit hot...
The 240 I have came with a battery that didn't last very long, so I took it apart. The battery I have uses 3x 103450 3.7v Prismatic cells in series to produce 11.1v. I attempted to purchase a battery replacement from Kahlon but they cancelled my order after finding the battery they had in stock was an old date code and not charging. I have found some listings for 103450 cells, but it's difficult to tell what is trustworthy. I am currently considering purchasing from Akkuplus.de which seems to list a pre-tabbed cell replacement on their website.
Check out James's site for more information on the battery internals.
There are a few options for internet access with this laptop. First is the CardBus PCMCIA slot which you can install an eithernet adapter (or older 802.11b adapters). Second is a MiniPCI slot, but it is designed for the IIB form factor which makes it very difficult to find any modern wireless adapter. As far as I can tell, there are no known 802.11n+ MiniPCI adapters in this form factor that have Linux support. The final option is the usb port. I decided that was the best method and settled on a Edimax EW-7811Un 802.11b/g/n nano USB adapter. This adapter has a RealTek RTL8188CUS which is supported in Linux and OpenBSD.
This image comes from the FCC application submitted by the vendor. More device specific information can be seen on the WikiDev page.
This laptop does not have a CD-ROM and you cannot boot from the USB port. The best path to installing an OS is to passthrough the hard drive to a modern PC and install inside a VM. I used a cheap USB->IDE adapter to accomplish this. Installation of Void Linux itself was straightforward. Pay attention to how much space to spare for the /boot partition where new kernels will be installed, perhaps 500MB would be sufficient.
Using the Edimax EW 7811Un nano-USB adapter with the default rtl8192cu linux driver is terrible. It is very unstable, at least with this particular adapter. I found a new driver called rtl8xxxu that supports this chipset but it's not enabled by default. Unfortunately this driver uses a kernel config parameter to support untested chipsets like mine, but it would take the 240 *days* to recompile the kernel. Instead, I just manually removed the #ifdef CONFIG_RTL8XXXU_UNTESTED when compiling the kernel module. I'm not sure how to pass this config option otherwise. After installing this and blacklisting rtl8192cu my wireless works great!
First thing to do was pick the lightest possible window manager, JWM. The 240 has a Neomagic MagicGraph128XD graphics chip, while the 240X has a SiliconMotion SM712 LynxEM+. With the 240 at first Xorg didn't work. By default Void Linux uses a graphical console which breaks the neomagic Xorg driver. Unfortunately, the neomagic Xorg driver does not support EXA acceleration, so scrolling will be painfully slow. Void Linux does not include a driver package for either chip, you must compile them yourself. The siliconmotion Xorg driver does support EXA but the current version has terrible screen tearing and distortion. As a workaround I modified the driver slightly and it seemed to reduce the problem significantly.
In Xorg siliconmotion driver smi_exa.c function SMI_EXAInit set the following:
offScreenBase = memorySize/2
To disable graphical console set /etc/default/grub:
The 240X has some extra nessesary options in /etc/xorg.conf:
Option "UseBIOS" "false"
I saw a deal on eBay for a 240X 500mhz motherboard and decided to give it a try. Installation wasn't very difficult, but after I finished it would not boot. Turns out the 240X uses the Intel 440 MX chipset with a hard limit of 256MB memory. There are some discussions on the web about desoldering the onboard chips to utilize a single 256MB low density (16 chip) sodimm, but for now I have just put 128MB in it.
MiniPCI factory modem dimensions (measured with a digital caliper):
5mm x 64mm x 41.2mm (Z x X x Y)
There isn't much more room than that, just a tad bit more in the Y dimension.
The display in mine is a Sharp LQ104S1LH11.