I’ve developed a fascination for open source firmware projects like coreboot and openwrt and as a result, I recently ordered some older hardware to experiment with. The victim — a Lenovo ThinkPad T420.
I chose the T420 because it is very similar to a laptop I used when I worked at IBM and it is very affordable (I picked up a refurbished T420 for about $130 on Newegg). After successfully installing coreboot on it, I somewhat regret my choice. The main problem is that the flash chip is buried under the magnesium shielding which means that the entire laptop must be disassembled in order to install coreboot.
Having disassembled and reassembled the laptop once, I can say that it’s not going to hold up to many reassemblys as I’ve already stripped a screw and cracked the plastic case a bit. The coreboot documentation recommends soldering wires to the board to eliminate the need for disassembly. However, I’m not particularly confident in my soldering abilities. Additionally, I’d be concerned about the length of the wires at that point. When I started the project, I thought the idea of “wires being too long” was kind of ridiculous; I thought that surely it’s not a common problem. On the contrary, after attempting to read the rom several times, I found that I was getting inconsistent reads. I can’t say for sure what the problem was, but it’s very possible that the wires were too long. I don’t want to risk ruining the board with my below-par soldering skills for a solution that may not work consistently.
The SPI programmer that I used was a BeagleBone Black that I setup using the libreboot documentation (https://libreboot.org/docs/install/bbb_setup.html). I don’t have a spare PC PSU sitting around so I used a really basic 3.3V power supply that I bought from amazon. The tutorial isn’t specific about why exactly you need an external power supply. The BBB has a 3.3 V pin, doesn’t it? Is there some reason why we can’t just use that? I assumed that the tutorial writer knows what they’re doing so I just used the external power supply to be safe. Let me know if you have tried without the power supply.
As mentioned above, the first problem I ran into was inconsistent reads. My first three read attempts did not match. After several more reads, I found that the second, fourth, and fifth reads matched and there was no indication of any problem with the roms that they produced so I assumed that it was sufficiently unlikely that all of them were corrupted in the same way.
Compiling was a bit tricky as the coreboot documentation for the board (https://www.coreboot.org/Board:lenovo/t420) doesn’t go into quite enough detail to get you through start to finish. However, ultimately I was able to piece together other documentation to get a complete picture of what to do. This tutorial was especially helpful: https://tylercipriani.com/blog/2016/11/13/coreboot-on-the-thinkpad-x220-with-a-raspberry-pi/
Fortunately, it was a breeze from there on. I kicked off the flashing process and after some time, lo and behold it completed successfully. Even more unexpectedly, after reassembling the laptop, it booted to seabios and subsequently linux!
If you’re looking for a more in depth tutorial, let me know and I will put one together. Additionally, I plan to do more coreboot work in the future including a port for another old laptop I own.