The changelog indicates firmware 2.8.9 includes bootloader version 2.1.10. When building from firmware 2.8.9 (core/v2.8.9), the embedded bootloader produces a hash:
But when building bootloader 2.1.10 directly (core/bl2.1.10) with the command ./build-docker.sh --models T2T1 --targets bootloader core/bl2.1.10, we get a different hash:
Bootloader 2.1.10 was only updated for T3T1 aka Trezor Safe 5. The correct fingerprint is ed1b9225088ed0c260318cfc61b8661dceb80eff92f9889b0b93b30be9772bfd, which is what you will get if you build that tag with --models T3T1.
T2T1 aka Trezor T is on bootloader 2.1.8, correct fingerprint is 482f6e49e61a85f8e9e9f5bafecccb313eb81efec5f795cca88c36df795e8910.
The signed bootloader is included as a binary in the source distribution. If you look at bootloader built from a random non-bootloader tag (e.g. core/v2.8.9), you’ll get an ad-hoc hash that may or may not match any released or signed version. But that is not the bootloader that is bundled into the firmware.
Thank you for the prompt reply. I greatly appreciate it.
Trezor model T.
I understand that there used to be a way to reproducibly verify the bootloader and this was documented here in archived repo: trezor-core/blob/master/docs%2Fbootloader.md
And made use of a tool called binctl
This is archived - do you think it would still work with current versions?
a newer version of the tool is called headertool and you have it available if you are in poetry shell of the firmware repo.
the reproducible build will be something something build-docker, but you’ll have to look how the script works on the target tag version core/bl2.1.8. there may have been some changes
you can install a custom firmware that will calculate and report the firmware fingerprint
that can’t really be done easily. the firmware carries the bootloader in compressed form, so you’d have to do some amount of disassembly, locate the right sequence, uncompress it …
This is the usual way: verify that your firmware build matches the downloaded image, then verify that the build process is putting in the right bootloader.
The bootloader image that you’re looking for is sitting in core/embed/models/T2T1/bootloaders/bootloader-T2T1.bin.