Librebooted my x200
Today I finally librebooted my thinkpad x200. This wont be a full tutorial because a million people have done that, instead it will be a collection of things I had to figure out and whatnot.
tl;dr: I followed this tutorial and it worked fine. Though there was an error in the pinout diagram they provide, my corrected version: (click to see larger picture)
First let me say the libreboot install docs were hard for me to follow logically with how it is laid out and the research you are expected to do first.
- I had no clue if my RAM would work, I have 4GB of DDR3 SODIMM PC3-8500 RAM in 2Rx8 density. Many people have said the requirements on RAM are very specific and few combinations actually work. I think that's mostly bullshit, as long as the previously mentioned is correct, I believe you're probably fine.
- The RTC battery, remove it or not? The libreboot docs do not mention removing it, however many tutorials online say you need to. I asked in #libreboot on freenode and they said yes, remove it.
- What programmer do you use? "Well, that's on you, figure it out" is how the docs seem to put it. They seem to suggest a Beagle Bone Black, however in IRC they are adamant they are NOT recommending it - just use whatever you have. I had 3 Raspberry Pi's, however they all had died for various reasons. Instead I found many people using and recommend the CH341A USB programmer, so I bought one. Terrible idea. The black version is shit. The 3.3v power output is 5v and the IO logic is at 5v. This is DANGEROUS and could destroy your chip, the fact it works for some people is amazing, but I did not risk it, I wrote off the cost and didn't use it (it was about $10 anyway). Next, I had the option of using my stm32 bluepill dev board. However there were no tutorials and I suck at this hardware stuff, instead I just ordered a raspberry pi zero because it was the cheapest pi I could find. Just buy a damn pi.
- To determine what kind of SOIC clip you need, you first must dissasemble your laptop. I needed a SOIC16 clip. It is rare for the x200 to have a SOIC8 chip, but you might. So I bought a cheap SOIC16 clip off ebay. Easy right? No, their pins are too close together to put female jumper cables on - I learnt this once the clip arrived. You could easily solder wires onto the clip if you had the skills, which I didn't. After a couple of tries I just bought a clip with wires pre-soldered. Buy a clip with wires pre-soldered.
- Update your BIOS and ECC firmware to the latest version in Windows or the bootable disc image. ECC firmware is important as it brings battery life improvements. coreboot/libreboot does NOT touch the ECC firmware and cannot update it.
- Don't forget you need a new wifi adapter as x200's come with intel wifi cards that are not supported by free software. Luckily a junk laptop I have had an atheros chip.
- On my first try the clip was not connected properly so it couldn't find a chip - I powered the pi down and reattached the clip, it worked fine. Amazingly my wiring was correct.
- Do not be a fucking idiot, turn the pi off before you attach the clip or when readjusting the clip - and check your wiring with a multimeter.
- Make multiple copies of your factory ROM, ensure their checksums match, ensure the data isn't junk (hexdump -C factory.rom, look for some hard-coded strings or something to ensure it isn't just junk).
- The libreboot docs do not mention how long the process takes. Reading the chip took about 15 minutes each time and about an hour to erase, flash and verify the chip.
- In my case, the pi powered the chip perfectly, I did not require an external power source, but some people do. Your mileage may vary.
- I had some problems with the RTC after librebooting. I had to sync the RTC using: hwclock --hctosys
Now for some pictures of the process:
Checked the BIOS and ECC versions are the latest:
Completed the required laptop disassembly:
Wired up the pi as required:
Put the clip on and connected it to the pi correctly:
Replaced the wifi card:
From here, I migrated the Arch install to Parabola and life was free.