Here is one of the better check lists I’ve found and saved awhile ago. Not sure of the source anymore, probably found it during an allnighter. It covers x230 heads building, flashing and IME removal. I would cross-reference it with pictures on the osresearch website. I hope it’s helps.
Build/Make Heads On Audited System:
Download all repositories and clone heads
git clone https://github.com/osresearch/heads
sudo apt update
sudo apt install -y build-essential zlib1g-dev uuid-dev libdigest-sha-perl libelf-dev bc bzip2 bison flex git gnupg iasl m4 nasm patch python python2 python3 wget gnat cpio ccache pkg-config cmake libusb-1.0-0-dev autoconf texinfo ncurses-dev doxygen graphviz udev libudev1 libudev-dev automake libtool rsync innoextract
git clone https://github.com/corna/me_cleaner.git
At heads directory run command:
at heads/blobs/xx30 run command:
wget https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe && innoextract g1rg24ww.exe && python ~/me_cleaner/me_cleaner.py -r -t -O ~/heads/blobs/xx30/me.bin app/ME8_5M_Production.bin
at heads top directory run command:
The result: 3 new rom files named heads-x230-hotp-maximized-v-dirty-bottom, -top and -nothing, at 12, 8 and 4MB.
On Flashing System:
If Using Debian Live USB:
open terminal to install flashrom utilities
sudo apt install -y \ bison \ build-essential \ curl \ flashrom \ flex \ git \ gnat \ libncurses5-dev \ m4 \ rename \ zlib1g-dev
Verify Flash Device Communication:
First physically read and note if possible both the ID of the top and bottom chips starting with "MX"
Use following command three times to verify read of top chip:
sudo flashrom -p ch341a_spi
it finds multiple versions of the chip. If you are able to read the print on your chips, there are numbers that match the output of the above command.
Once read verifies you have a good connection back up the top chip:
sudo flashrom -p ch341a_spi -r factory_top-1.bin -c "MX25L3206E/MX25L3208E"
sudo flashrom -p ch341a_spi -r factory_top-2.bin -c "MX25L3206E/MX25L3208E"
sudo flashrom -p ch341a_spi -r factory_top-3.bin -c "MX25L3206E/MX25L3208E"
Verify perfect copies as the chip reader connection can be flaky:
Now flash the top ROM.
time sudo flashrom --chip "MX25L3206E/MX25L3208E" --programmer ch341a_spi --write heads-x230-hotp-maximized-top.rom
Once you see "verified" connect SPI reader to bottom chip.
Use following command three times to verify read of bottom chip:
sudo flashrom -p ch341a_spi
Once good connection confirmed backup chip.
sudo flashrom -p ch341a_spi -r factory_bottom-1.bin -c "MX25L6406E/MX25L6408E"
sudo flashrom -p ch341a_spi -r factory_bottom-2.bin -c "MX25L6406E/MX25L6408E"
sudo flashrom -p ch341a_spi -r factory_bottom-3.bin -c "MX25L6406E/MX25L6408E"
Once verified flash the bottom chip:
time sudo flashrom --chip "MX25L6406E/MX25L6408E" --programmer ch341a_spi --write heads-x230-hotp-maximized-bottom.rom
Now install RAM and boot laptop to setup LibremKey. Heads should be installed with IME killed.