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
- 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 .
- 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.

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.