# bithd-mcu
**Repository Path**: bison-fork/bithd-mcu
## Basic Information
- **Project Name**: bithd-mcu
- **Description**: fork 自 github/bithd/bithd-mcu
硬钱包 mcu 相关代码
- **Primary Language**: Unknown
- **License**: LGPL-3.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-03-04
- **Last Updated**: 2022-03-26
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# BITHD Firmware
https://bithd.com/
## How to build BITHD firmware?
1. Install Docker
2. `git clone https://github.com/bithd/bithd-mcu.git`
3. `cd bithd-mcu`
4. `pipenv --python 3 install` (set up pipenv)
5. `export VERSION_TAG=v4.1.7`
6. `export DEVICE_MODEL=BITHD_RAZOR` (where alternative value is BITHD_BITHD)
7. `pipenv run ./build-firmware.sh $VERSION_TAG`
8. `pipenv run ./script/prepare_firmware.py -f ./build/razor-$VERSION_TAG-unsigned.bin` (prepare the image to sign)
This creates file `build/razor-$TAG-unsigned.bin` and prints its fingerprint and size at the end of the build log.
## Verify signed image exported from App
1. Get the same version signed firmware image exported from App, eg "razor-v4.1.7-signed.bin"
2. Compare the unsigned and signed image files, eg v4.1.7
```shell
diff <(xxd build/razor-v4.1.7-prepared.bin) <(xxd build/razor-v4.1.7-signed.bin)
```
The following is the comparison result for v4.1.7. The only differences are the first 256 bytes that the signed image has the signatures.
```
1c1
< 00000000: 5452 5a52 945f 0600 0000 0001 0000 0000 TRZR._..........
---
> 00000000: 5452 5a52 945f 0600 0304 0501 0000 0000 TRZR._..........
5,16c5,16
< 00000040: 0000 0000 0000 0000 0000 0000 0000 0000 ................
< 00000050: 0000 0000 0000 0000 0000 0000 0000 0000 ................
< 00000060: 0000 0000 0000 0000 0000 0000 0000 0000 ................
< 00000070: 0000 0000 0000 0000 0000 0000 0000 0000 ................
< 00000080: 0000 0000 0000 0000 0000 0000 0000 0000 ................
< 00000090: 0000 0000 0000 0000 0000 0000 0000 0000 ................
< 000000a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
< 000000b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
< 000000c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
< 000000d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
< 000000e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
< 000000f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
---
> 00000040: 3a68 2f7d 8f3b 9d0a 855c 020c 925a 777d :h/}.;...\...Zw}
> 00000050: e9f9 ca1d df66 bebc 1692 9fe0 4d21 2b5d .....f......M!+]
> 00000060: a387 4242 6efb bf92 1baf 7f88 31a0 607a ..BBn.......1.`z
> 00000070: 70a0 7832 b203 915d c6fe 2b1b c0e9 b051 p.x2...]..+....Q
> 00000080: 7e42 3955 a18b 4d4c 109d edc9 d96c 5f75 ~B9U..ML.....l_u
> 00000090: ab25 510e 477e 0ff1 7402 9610 dd5a b1ad .%Q.G~..t....Z..
> 000000a0: db9d 87ca d82e d7c4 6215 c238 5c0d 2a9a ........b..8\.*.
> 000000b0: 1651 0194 0edc 3ccf c2de 1a58 f82c e7ef .Q....<....X.,..
> 000000c0: d60b 546a bf6c 3791 69b0 1e3c fbea 5bd8 ..Tj.l7.i..<..[.
> 000000d0: d889 7096 540d 28fa ff7e f0de f8ea 641f ..p.T.(..~....d.
> 000000e0: a47b aaa5 7529 8945 7bc1 e5f3 871a 4c34 .{..u).E{.....L4
> 000000f0: 4270 57cf 09e3 845a 38cc aac1 224d b386 BpW....Z8..."M..
```
## Build signed image
Based on the upper prepared firmware image, anyone can build the same signed image by signatures uploaded in code repository.
1. Use the build_signed_firmware.py script to generate the signed firmware image
```shell
pipenv run ./script/build_signed_firmware.py -f ./build/razor-v4.1.7-prepared.bin -s ./signatures/razor-v4.1.7.csv
```
2. `shasum -a 256 ./build/bithd-$TAG-signed.bin` (calculate sha256 checksum)
## How to build BITHD bootloader?
1. Install Docker
2. `git clone https://github.com/bithd/bithd-mcu.git`
3. `cd bithd-mcu`
4. `./build-bootloader.sh TAG` (where TAG is bl1.3.2 for example)
This creates file `build/bootloader-TAG.bin` and prints its fingerprint and size at the end of the build log.