DISCLAIMER

Installing Libreboot on your device can potentially void its warranty and may cause irreversible damage if not done correctly. Proceed with caution and at your own risk. I provide this tutorial “as is” and without any warranty, express or implied. I disclaim all liability for any damage or issues that may arise from following these instructions. By using this tutorial, you acknowledge that you understand the risks involved and release me from any claims or damages that may result. Make sure to back up your data and be prepared for potential complications.

Reminder

  1. When it comes to performance, HP Elitebook 820 G2 is the best model supported by Libreboot currently. However, if you persue freedom, this model should not be your choice because despite the installation of Libreboot plenty of proprietary blobs are remained. Consider ThinkPad X200 and refer to this guide .
  2. This is a brief reference, not a comprehensive step-by-step guide. As is said by the Libreboot project, HP Elitebook 820 G2 is a very hard machine to flash, and before writing this tutorial I have suffered from failures too. Please refer to the official docs, and if you encounter problems, consult #libreboot on Libera.Chat.

Tutorial

Again, this tutorial is not so comprehensive and it’s strongly recommended to refer to the official guide the same time: https://libreboot.org/docs/install/hp820g2.html

1. Build ROMs

Refer to this guide: https://libreboot.org/docs/build/

Debian GNU/Linux 12 is recommended. Please don’t use Sid otherwise you’ll encounter errors; if you don’t have Debian GNU/Linux 12 set up a virtual machine using QEMU and AQEMU.

2. Write a MAC address to the ROM you want to flash

Build idftool from the coreboot repo and nvmutil from the Libreboot repo .

 $ git clone https://github.com/coreboot/coreboot
 $ cd coreboot/util/ifdtool
 $ make
 $ cd ../../..
 $ git clone https://codeberg.org/libreboot/lbmk
 $ cd libreboot/util/nvmutil
 $ make
 $ cd ../../..

Depending on the version you want to use (if you don’t know what you are doing, please don’t use txtmode ROMs otherwise you’ll encounter graphical rendering issues), choose a ROM file and write a MAC address.

 $ ./coreboot/util/ifdtool/ifdtool -x seaxxxx_hp820g2_12mb_libgfxinit_corebootfxxxx.rom
 $ ./libreboot/util/nvmutil/nvm flashregion_3_gbe.bin setmac
 $ ./coreboot/util/ifdtool/ifdtool -i gbe:flashregion_3_gbe.bin seaxxxx_hp820g2_12mb_libgfxinit_corebootfxxxx.rom

This will result in a new *.rom.new file.

For details refer to this guide: https://libreboot.org/docs/install/nvmutil.html

3. Expand the resulting *.rom.new file

 $ dd if=/dev/zero of=4mb.bin bs=4M count=1
 $ cat seaxxxx_hp820g2_12mb_libgfxinit_corebootfxxxx.rom.new 4mb.bin > libreboot16.rom

4. Learning about your chips and flash

On your main board there are 2 chips: a 2MB private chip and a 16MB system chip.

P1 2 Chips on the Mainboard

Please find a dot of each chip’s corner and this dot indicates the pin 1.

First back up both the chips.

The 2MB private chip is used to verify the stock BIOS and all we need to do is just fuck that goddamn tryant chip up:

 # flashprog -p PROGRAMMER --erase

Repeat this step for 2-3 times.

Then flash the expanded rom like this:

 # flashprog -p PROGRAMMER --ifd -i gbe -w libreboot16.rom --noverify-all
 # flashprog -p PROGRAMMER --ifd -i bios -w libreboot16.rom --noverify-all
 # flashprog -p PROGRAMMER --ifd -i me -w libreboot16.rom --noverify-all
 # flashprog -p PROGRAMMER --ifd -i fd -w libreboot16.rom --noverify-all

Finally erase the tryant private chip again:

 # flashprog -p PROGRAMMER --erase

5. Finalization

Put back the battery and immediately you should see a happily leaping deer on your screen and it’s time to enjoy ^_^

If not, check whether you have done the steps precisely and if you have any questions consult #libreboot on Libera.Chat.