Automatically generated from the Gemini capsule gemini://

Time-stamp: <2021-04-15 17h06 UTC>

Modding my Thinkpad x230

I thought it would be fun to compile a list of things i've done to (or inflicted upon) my Thinkpad x230.

Why upgrade?

Before i bought the x230, i had been using an even older Thinkpad x200. I believe i had one of the earlier models, my machine only has a single internal mono speaker for example and no webcam¹. In the year 2021 that dates my x200 to about 13 years old. There's so much to love about the x200, but in particular the 4:3 screen ratio is great.

Unfortunately that very screen was a source of much anguish. It has a CCFL² backlight, and over the life of the machine that began to fail. I wasn't easily able to find a replacement (there's only so much old stock), so i decided that this was a good invitation to upgrade. (Of course, all it took was upgrading to a completely different computer for me to find a replacement screen.)

Why did i settle on the x230? Read on as we explore the things i was able to do thanks to the hard work of others.

Base specs

The particular version of the x230 i ended up buying³ had

This is already a world apart in performance from my x200 -- which, as ever, was plenty for my interests, activities, and work.

Hardware mods

I soon doubled the RAM to 16GB⁴ and added an internal LITEON LMH-128V2 128GB mSATA card (with which i have yet to do anything). I put the WiFi card in the `never use' pile and installed a Qualcomm Atheros AR9285 card instead, which doesn't require firmware blobs. With an aftermarket 9-cell battery, ACPI reports an estimated 12 hours+ of battery life at reasonable screen brightness and idle. What more could i want? Well ...

Nitrocaster's amazing FHD mod

The first and most exhausting mod i went for was the installation of Nitrocaster's adaptor board to take advantage of the extra LVDS internal lanes for the dock and re-form them into an FHD LVDS output.

Nitrocaster's store page

For this purpose i also obtained an LG LP125WF4-SPB1 panel, and i'm consistently impressed by it.

Unfortunately for me the installation of this mod involved some rather fine-pitch soldering. Although i have a very nice temperature-controlled soldering iron, what i didn't have at the time was flux and a fine tip. Take this lesson here and now: the difference between a bad solder job and a good solder job is flux.

I definitely destroyed/shorted a few of the decoupling caps on the dock lines, and even stripped part of the via lining on one of the crucial holes in the mod board! However, after obtaining some flux and a finer tip -- and using a toy hand-microscope -- i managed to coax the board into always working. Caveat emptor: the LVDS cable has conductive shielding, another trap.

To properly deactivate the internal LVDS connector, and minimise the power drain of the board itself, i had to toy around with Coreboot in the form of Heads -- see below.

Summary: highly recommend, moderate to difficult installation, can't go back⁵.

Classic-style x220 keyboard

The x230 has its flaws, and among the most egregious offenders is the `new-style' keyboard. Yugh. The keys are far apart, the mechanism feels wrong, and the buttons are somewhat glossy. The back-light was sort-of fun, but i have other ways to revisit my teenage years.

Fortunately for me, many smart people have thought about this and worked out how to perform the ``classic keyboard mod''.

ThinkWiki classic keyboard mod

As noted on that page, to have the keyboard function correctly some amount of firmware fiddling had to be done, see below.

I took this opportunity to obtain a 105 key keyboard, so that i could comfortably use Colemak mod-dh angle layout and retain Z under my left pinky (without having to reach to the centre of the keyboard). They legends happen to be in French (i think it was actually AZERTY), but neither this or English QWERTY correspond to my actual layout so it doesn't matter too much. As a bonus, on the 105 key layout the Return button is nice and large (and blue).

Colemak mod-dh angle layout

Dreymar's implementation for Linux and other OSs

Summary: can't live without it, absolutely do.

Internal CSR8510 bluetooth

The x230 palmrest came with a fingerprint scanner. I once heard fingerprint identification likened to ``a lock whose key one leaves on everything one touches''. Needless to say it sat disconnected for the longest time. Eventually i connected it to satiate my curiosity about the device itself, and i observed that it was listed as a USB device. Bingo.

I bought a CSR8510 USB bluetooth adaptor and removed the casing. Although the specs for the bluetooth chip say that it can operate in the 3.3V voltage range, i saw that the USB device had the chip connected by way of the (internal) linear regulator. I `obtained' the schematics (!) for the x230, and looked at the fingerprint reader lines -- unfortunately VCC was only 3.3V. I decided to find out how picky the USB device actually was.

It turns out it's not at all! I'm not sure if the linear regulator is also secretly a boost converter, or if it's smart enough to bypass it on low voltage, but hey, it works! I tucked the diminutive bluetooth chip in the cradle that used to house the fingerprint reader, covered the hole with semi-transparent black plastic so that i could see its little LED dimly blinking away, and my x230 now has blob-free bluetooth!

Summary: nice to have, but soldering to the flatflex cable was irritating; bluetooth + Qubes = :(

Software mods

In order to have the FHD and keyboard mods work well/at all, some software modifications were in order.

Classic-style x220 keyboard

Beyond the physical fitting of the keyboard, and the cutting of a trace to prevent shorts, in order to have the embedded controller (EC) understand the classic-style keyboard matrix, Hamish Coleman & contributors had to reverse-engineer and modify the keycode handling part of the EC firmware!

Modified EC firmware

Certainly an impressive feat. Regrettably the precise process through which a firmware blob is sent to the EC remains unknown, and so in order to apply the patch i had to revert to stock firmware from Coreboot. This was very challenging, and involved all manner of toying around with DOS and extracting EEPROM images from Lenovo update packages. I also, in particular, had to restore the ME section of the EEPROM in order for the stock BIOS to behave.

Once i was on a vulnerable firmware version, actually applying the EC mod was trivial. Congratulations to Hamish &co!

Heads ``boot firmware''

Part of the impetus of moving up a few generations was the ability to run Heads and Qubes. I've written a little about my Qubes setup before:

Qubes posts

Heads is the other half of the security setup i have on this laptop. It performs a TOTP exchange with a USB hardware security token and verifies, beyond what i consider to be reasonable doubt, that the boot firmware, kernel images, and grub configuration have not been changed without my knowledge. It can even leverage the TPM chip to store disk decryption keys, although i don't make use of this particular feature.

Nitrocaster's FHD mod is essentially entirely hardware, and as far as the computer is concerned the old internal LVDS connector is still there but unattached. This tends to confuse older versions of Linux, and if i had a BIOS or something pre-kernel to look at, the output would still be on the primary (non-existent) interface. There's also a power-drain attached to keeping this port up.

Fortunately Alex Couzens has been hard at work on modifying the `video boot table' blob used by the integrated graphics and has produced a Coreboot patch to remedy this.

Coreboot FHD patch

I managed to port the patch into the Heads build system and you can see my ineffective attempts at explaining how to set this up here:

Whamjangling FHD into Heads

What can i say other than: it works for me :)

They don't make them like they used to

From the metallic chassis, to the screen hinges evidently built to last, through the labelled accessible screw holes, to the availability of readable schematics ... i think these old Thinkpads are one of the last few vestiges of the age before rampant consumerism and planned obsolescence. Sure the CPU isn't a 256000 core mega beast, and it doesn't have RAM measured in the Yottabytes with frequencies in the Terrahertz, but it turns out that i don't actually need that -- and i'm not sure i ever will.

In Qubes i routinely run 8+ VMs simultaneously, and while there might be some wait time as the all spin up in the morning, i'd be hard pressed to notice that they're even there. Hardware wise i don't want for anything on my x230. Now if only the software world would catch up⁶.


¹ yes! I consider this a feature

² compact cold fluorescent light, or is it cold compact?

³ certain online auction sites have a plentiful supply of refurbished and as-is models

⁴ i know, it's slow for DDR3, but buying new RAM seems wasteful

⁵ even literally, i doubt that anything short of a hot-air rework station could remove the adaptor board

⁶ why does Firefox take 1GB+ of memory? Why does rustc pull in dozens of libraries, and generate hundreds of megabytes of build artefacts for the most trivial projects?