Updating libreboot in Thinkpad T480S

As all of you may imagine, it is not only about installing new software but also about keeping the new software up to date… And that is why this is entry is published! I want to detail what I did to update my laptop’s libreboot installation.

Pre-requisites

Prepare the laptop

I cloned the official libreboot git repository.

git clone https://codeberg.org/libreboot/lbmk

I installed dependencies for debian.

cd lbmk
git checkout 25.06
./mk dependencies debian

I built flashprog firmware.

./mk -b flashprog

Once the build was completed, some binary files were generated at ./elf/flashprog/flashprog

Build the the BIOS firmware

As I did when building libreboot for the first time, I built the BIOS firmware using below parameters

./mk -b coreboot t480s_vfsp_16mb

Backup laptop’s BIOS

To verify the dump was correct, I created three dumps from the same BIOS.

Dump 1

jeronimodiaz@thinkpad:~/git/lbmk$ sudo ./elf/flashprog/flashprog -p internal:laptop=force_I_want_a_brick,boardmismatch=force -r dump.bin
[sudo] password for jeronimodiaz: 
flashprog p1.4-2-g564c93d on Linux 6.1.0-40-amd64 (x86_64)
flashprog is free software, get the source code at https://flashprog.org

Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).
coreboot table found at 0x7aa33000.
Found chipset "Intel Kaby Lake U w/ iHDCP2.2 Prem.".
Enabling flash write... Warning: Setting BIOS Control at 0xdc from 0x8b to 0x89 failed.
New value is 0x8b.
SPI Configuration is locked down.
OK.
Found Programmer flash chip "Opaque flash chip" (16384 kB, Programmer-specific) on internal.
Reading flash... done.

Dump 2

jeronimodiaz@thinkpad:~/git/lbmk$ sudo ./elf/flashprog/flashprog -p internal:laptop=force_I_want_a_brick,boardmismatch=force -r dump1.bin
flashprog p1.4-2-g564c93d on Linux 6.1.0-40-amd64 (x86_64)
flashprog is free software, get the source code at https://flashprog.org

Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).
coreboot table found at 0x7aa33000.
Found chipset "Intel Kaby Lake U w/ iHDCP2.2 Prem.".
Enabling flash write... Warning: Setting BIOS Control at 0xdc from 0x8b to 0x89 failed.
New value is 0x8b.
SPI Configuration is locked down.
OK.
Found Programmer flash chip "Opaque flash chip" (16384 kB, Programmer-specific) on internal.
Reading flash... done.

Dump 3

jeronimodiaz@thinkpad:~/git/lbmk$ sudo ./elf/flashprog/flashprog -p internal:laptop=force_I_want_a_brick,boardmismatch=force -r dump2.bin
flashprog p1.4-2-g564c93d on Linux 6.1.0-40-amd64 (x86_64)
flashprog is free software, get the source code at https://flashprog.org

Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).
coreboot table found at 0x7aa33000.
Found chipset "Intel Kaby Lake U w/ iHDCP2.2 Prem.".
Enabling flash write... Warning: Setting BIOS Control at 0xdc from 0x8b to 0x89 failed.
New value is 0x8b.
SPI Configuration is locked down.
OK.
Found Programmer flash chip "Opaque flash chip" (16384 kB, Programmer-specific) on internal.
Reading flash... done.

Once the backups are completed, I compared them to verify they are correct.

jeronimodiaz@thinkpad:~/git/lbmk$ sha1sum dump.bin 
118e6381b370a3cabbcdf481ef64d3bdc8b2cec6  dump.bin
jeronimodiaz@thinkpad:~/git/lbmk$ sha1sum dump1.bin 
118e6381b370a3cabbcdf481ef64d3bdc8b2cec6  dump1.bin
jeronimodiaz@thinkpad:~/git/lbmk$ sha1sum dump2.bin 
118e6381b370a3cabbcdf481ef64d3bdc8b2cec6  dump2.bin

Flash BIOS firmware

As my laptop was already running libreboot, I didn’t need to use any external flashing and I was able to update the BIOS firmware using the flashprog tool directly in the laptop.

jeronimodiaz@thinkpad:~/git/lbmk$ sudo ./elf/flashprog/flashprog -p internal:laptop=force_I_want_a_brick,boardmismatch=force -w bin/t480s_vfsp_16mb/seabios_t480s_vfsp_16mb_libgfxinit_corebootfb.rom 
flashprog p1.4-2-g564c93d on Linux 6.1.0-40-amd64 (x86_64)
flashprog is free software, get the source code at https://flashprog.org

Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).
coreboot table found at 0x7aa33000.
Found chipset "Intel Kaby Lake U w/ iHDCP2.2 Prem.".
Enabling flash write... Warning: Setting BIOS Control at 0xdc from 0x8b to 0x89 failed.
New value is 0x8b.
SPI Configuration is locked down.
OK.
Found Programmer flash chip "Opaque flash chip" (16384 kB, Programmer-specific) on internal.
Reading old flash chip contents... done.
Erasing and writing flash chip... Erase/write done.
Verifying flash... VERIFIED.

At this point, the laptop’s BIOS is updated and running version 25.06.

I hope you found useful this post. If you have any question, do not hesitate to share it in comments. I will be happy to help you.

See you in the next post!

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *