heads/blobs/t440p
Manuel Mendez 87ec2ca043
blobs: Ignore build generated binaries
These are generated during the build process so should be ignored.

Signed-off-by: Manuel Mendez <github@i.m.mmlb.dev>
Signed-off-by: Thierry Laurion <insurgo@riseup.net>
2024-05-02 13:00:51 -04:00
..
.gitignore blobs: Ignore build generated binaries 2024-05-02 13:00:51 -04:00
download-clean-me Remove hard coded paths in shebang lines 2024-05-02 13:00:22 -04:00
extract Remove hard coded paths in shebang lines 2024-05-02 13:00:22 -04:00
gbe.bin Add T440p gbe.bin blob 2023-02-25 19:53:47 -05:00
ifd.bin Add T440p ifd.bin blob 2023-02-25 19:53:46 -05:00
README.md Add T440p blobs documentation 2023-02-28 11:58:34 -05:00

T440p Blobs

Overview

Coreboot on the T440p requires the following binary blobs:

  • mrc.bin - Consists of Intels Memory Reference Code (MRC) and is used to initialize the DRAM.
  • me.bin - Consists of Intels Management Engine (ME), which we modify using me_cleaner to remove all but the modules which are necessary for the CPU to function.
  • gbe.bin - Consists of hardware/software configuration data for the Gigabit Ethernet (GbE) controller. Intel publishes the data structure here, and an ImHex hex editor pattern is available here.
  • ifd.bin - Consists of the Intel Flash Descriptor (IFD). Intel publishes the data structure here, and an ImHex hex editor pattern is available here.

Heads supplies an IFD and GbE blob, which we extracted from a donor board. We changed the MAC address of the GbE blob to 00:de:ad:c0:ff:ee using nvmutil, to support anonymity and build reproducibility.

When building any T440p board variant with make, the build system will download a copy of the MRC and Intel ME. We extract mrc.bin from a Chromebook firmware image and me.bin from a Lenovo firmware update.

Using Your Own Blobs

You can compile Heads using the Intel ME, GbE, and and IFD blobs from your original ROM.

However, it's worth noting that our analysis showed no tangible difference between the Intel ME from a donor board and Lenovo's website. Also, we found no meaningful difference between the IFD and and GbE blobs extracted from two T440ps, asides from the LAN MAC address.

First, make sure you've built Heads at least once in order to download the Coreboot sources:

$ make BOARD=t440p-hotp-maximized

Then, supply the path to the Coreboot sources via the COREBOOT_DIR environment variable, and run the blob-extraction script:

$ export COREBOOT_DIR="./build/x86/coreboot-4.17/"
$ ./blobs/t440p/extract /path/to/original_rom.bin ./blobs/t440p

Now, you can rebuild Heads:

$ make BOARD=t440p-hotp-maximized