2016-05-11 19:07:56 +00:00
# TREZOR Firmware
2015-08-05 14:38:53 +00:00
2016-05-11 19:07:56 +00:00
[](https://travis-ci.org/trezor/trezor-mcu) [](https://gitter.im/trezor/community)
2015-08-05 14:38:53 +00:00
2017-01-10 14:14:29 +00:00
https://trezor.io/
2015-08-05 14:38:53 +00:00
2016-05-11 19:07:56 +00:00
## How to build TREZOR firmware?
2015-08-05 14:38:53 +00:00
2016-02-18 23:24:33 +00:00
1. < a href = "https://docs.docker.com/engine/installation/" > Install Docker</ a >
2015-08-05 14:38:53 +00:00
2. `git clone https://github.com/trezor/trezor-mcu.git`
3. `cd trezor-mcu`
4. `./firmware-docker-build.sh TAG` (where TAG is v1.3.2 for example, if left blank the script builds latest commit)
This creates file `output/trezor-TAG.bin` and prints its fingerprint at the last line of the build log.
2016-05-11 19:07:56 +00:00
## How to build TREZOR bootloader?
2016-02-18 23:24:33 +00:00
1. < a href = "https://docs.docker.com/engine/installation/" > Install Docker</ a >
2. `git clone https://github.com/trezor/trezor-mcu.git`
3. `cd trezor-mcu`
4. `./bootloader-docker-build.sh`
This creates file `output/bootloader.bin` and prints its fingerprint and size at the last line of the build log.
2016-05-11 19:07:56 +00:00
## How to get fingerprint of firmware signed and distributed by SatoshiLabs?
2015-08-05 14:38:53 +00:00
2017-01-10 14:14:29 +00:00
1. Pick version of firmware binary listed on https://wallet.trezor.io/data/firmware/releases.json
2. Download it: `wget -O trezor.signed.bin https://wallet.trezor.io/data/firmware/trezor-1.3.6.bin`
2016-07-04 17:03:27 +00:00
3. `./firmware-fingerprint.sh trezor.signed.bin`
2015-08-05 14:38:53 +00:00
2016-07-04 17:03:27 +00:00
Step 3 should produce the same sha256 fingerprint like your local build (for the same version tag).
2015-08-05 14:38:53 +00:00
The reasoning for `firmware-fingerprint.sh` script is that signed firmware has special header holding signatures themselves, which must be avoided while calculating the fingerprint.