|
|
|
Title: ThinkPad x301 Restoration: Software
|
|
|
|
Author: Alessandro Mauri
|
|
|
|
|
|
|
|
|
|
|
|
# ThinkPad x301 Restoration Project: Software Side
|
|
|
|
|
|
|
|
Of course me being me I can't just modify the hardware, I also have to do
|
|
|
|
something about the software side of things. After all if I just slapped
|
|
|
|
Windows 10 on it, it would just be an old slow laptop. But I want more, I want
|
|
|
|
lightning fast boot times, I want a good experience and most of all I want
|
|
|
|
freedom where I can get it.
|
|
|
|
|
|
|
|
## [Coreboot][cboot]
|
|
|
|
|
|
|
|
> coreboot is an extended firmware platform that delivers a lightning fast and
|
|
|
|
> secure boot experience on modern computers and embedded systems. As an Open
|
|
|
|
> Source project it provides auditability and maximum control over technology.
|
|
|
|
|
|
|
|
Basically coreboot is a platform that provides basic hardware initialization
|
|
|
|
for other programs to run on and start your bootloader (or OS) of choice. Such
|
|
|
|
programs are called payloads, I decided to go with [SeaBIOS][sbios] a free
|
|
|
|
[BIOS][bios] implementation, but you can choose
|
|
|
|
[from a variety of available payloads][payloads], there's even a linux distro
|
|
|
|
in there!
|
|
|
|
|
|
|
|
Now to the ones who know coreboot is a bit difficult to configure, that's why
|
|
|
|
projects such as [Libreboot][lboot] and [Skulls][skulls] exist, but being the
|
|
|
|
masochist I am, I decided to have a go at configuring it on my own and in the
|
|
|
|
process also remove the [Intel Management Engine (ME)][ime] like Libreboot does.
|
|
|
|
**I lied** this is not just software, unfortunately the flashing of the new BIOS
|
|
|
|
cannot be done within the operating system, only official ones can be installed
|
|
|
|
that way (at least on this machine), so to do this you'll need some things, some
|
|
|
|
knownledge, and a lot of patience.
|
|
|
|
Oh and [here's the coreboot page for the x301][corex301].
|
|
|
|
|
|
|
|
### Getting the stuff you'll need
|
|
|
|
|
|
|
|
First of all one cannot go further in this intent witout some "basic" gear, what
|
|
|
|
we need to do is find a chip on the mainboard of the laptop, access it's pins
|
|
|
|
(in a way we're hijacking it), connect it to an external device called a
|
|
|
|
programmer and load the new [firmware][fware] on that chip so that the machine
|
|
|
|
can execute what's on it.
|
|
|
|
There is one complication, the chip is in [WSON8][wson] package, which
|
|
|
|
is not easy to work with since the pins do not exent to the side but on the
|
|
|
|
bottom making them almost impossible to attach an [IC clip][icclip] to.
|
|
|
|
Since if anything goes wrong during the next steps you'd want to reprogram
|
|
|
|
the chip, and that cannot be easily done without a clip, you really want that
|
|
|
|
old chip gone in favor of a new one. But that requires soldering.
|
|
|
|
|
|
|
|
So here's a handy list of everything you will need to proceed:
|
|
|
|
|
|
|
|
1. A [Raspberry Pi][rpi], used for the actual programming; it is not strictly
|
|
|
|
necessary but if you have it already it is the easiest method.
|
|
|
|
An alternative method is by using a [CH341A][ch341a] programmer and applying
|
|
|
|
[this fix][ch341fix] to avoid burning the whole board.
|
|
|
|
2. A [SOIC8 IC clip][soicclip]
|
|
|
|
|
|
|
|
|
|
|
|
[cboot]: https://www.coreboot.org/
|
|
|
|
[sbios]: https://www.seabios.org/SeaBIOS
|
|
|
|
[bios]: https://wikipedia.org/wiki/BIOS
|
|
|
|
[payloads]: https://www.coreboot.org/Payloads
|
|
|
|
[lboot]: https://libreboot.org/
|
|
|
|
[skulls]: https://github.com/merge/skulls
|
|
|
|
[ime]: https://wikipedia.org/wiki/Intel_Management_Engine
|
|
|
|
[corex301]: https://doc.coreboot.org/mainboard/lenovo/x301.html
|
|
|
|
[fware]: https://en.wikipedia.org/wiki/Firmware
|
|
|
|
[wson]: https://blog.mbedded.ninja/pcb-design/component-packages/wson-component-package/
|
|
|
|
[icclip]: https://www.sparkfun.com/products/13153
|
|
|
|
[rpi]: https://www.raspberrypi.org/
|
|
|
|
[ch341a]: https://www.amazon.it/Programmatore-Youmile-CH341A-Burner-EEPROM/dp/B07YDFNYDS
|
|
|
|
[ch341fix]: https://www.eevblog.com/forum/repair/ch341a-serial-memory-programmer-power-supply-fix/
|
|
|
|
[soicclip]: https://www.amazon.it/WINGONEER-eeprom-programmazione-circuit-adattatori/dp/B012VSGQ0Q
|