1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2025-07-27 08:58:28 +00:00
trezor-firmware/nordic/trezor
2025-07-22 14:04:28 +02:00
..
boards/arm/t3w1_revA_nrf52832 feat(nordic): reserve flash space for manufacturing data 2025-05-07 19:13:50 +02:00
radio_test fix(nordic): add version file to radio_test 2025-07-22 14:04:28 +02:00
scripts feat(nordic): implement multisig fw signatures 2025-07-22 14:04:28 +02:00
trezor-ble feat(nordic): use stricter FIH settings in mcuboot 2025-07-22 14:04:28 +02:00
zephyr refactor(nordic): rename west to nordic 2025-02-10 17:22:57 +01:00
CMakeLists.txt refactor(nordic): rename west to nordic 2025-02-10 17:22:57 +01:00
Kconfig refactor(nordic): rename west to nordic 2025-02-10 17:22:57 +01:00
README.md chore(nordic): improve building instructions 2025-07-22 14:04:28 +02:00
west.yml chore(core/nordic): specify ncs sdk version by commit hash 2025-07-22 14:04:28 +02:00

Trezor BLE Gateway

Welcome to the Trezor BLE Gateway project! This repository contains the source code and instructions to build and flash the application onto the t3w1_nrf52833 board.

Table of Contents

Prerequisites

Before you begin, ensure you have met the following requirements:

  • nrfutil: Install nrfutil. This tool is essential for managing the nRF Connect SDK and toolchains.
  • Git: Ensure you have Git installed for cloning repositories.

Getting Started

Follow these steps to set up the project on your local machine.

Install the toolchain

Using nrfutil, install the required toolchain for the nRF Connect SDK:

nrfutil toolchain-manager install --ncs-version v2.9.0

Launch the nRF Shell

First, launch the nRF shell using the nrfutil toolchain manager and set the NCS to chosen version:

nrfutil toolchain-manager launch --shell

Initialize the Workspace

Initialize your West workspace for the Trezor BLE Gateway project:

cd nordic
west init -l ./trezor

Update nRF Connect SDK Modules

Update the modules:

west update

Building and signing using script: debug, production

To be invoked from nix-shell in nordic/trezor folder.

./scripts/build_sign_flash.sh -b t3w1_revA_nrf52832 -d -s
./scripts/build_sign_flash.sh -b t3w1_revA_nrf52832 -p -s

Alternative build methods

Signing custom method

hash_signer needs to be invoked from nix-shell.

imgtool sign --version 0.1.0+0 --align 4 --header-size 0x200 -S 0x6c000 --pad-header build/trezor-ble/zephyr/zephyr.bin build/trezor-ble/zephyr/zephyr.prep.bin --custom-tlv 0x00A2 0x3
imgtool sign --version 0.1.0+0 --align 4 --header-size 0x200 -S 0x6c000 --pad-header build/trezor-ble/zephyr/zephyr.hex build/trezor-ble/zephyr/zephyr.prep.hex --custom-tlv 0x00A2 0x3
imgtool dumpinfo  ./build/trezor-ble/zephyr/zephyr.prep.bin >> ./build/trezor-ble/zephyr/dump.txt
python ./scripts/extract_hash.py ./build/trezor-ble/zephyr/dump.txt
hash_signer -d e3d47ab7e90f15badb1a2fac8c082b727c3fa24f1238ad8607b67f720a63c4e9
python ./scripts/insert_signatures.py ./build/trezor-ble/zephyr/zephyr.prep.hex 0x82a2258db3da5c14ceddfff92e39531c873f870bad81a66506d706fd31da4ab4ad8e76d62686f0b0bbcf02dd4473d27b3bf0a2b98182d8b52bb2f1336eb7630d 0x0003 -o ./build/trezor-ble/zephyr/zephyr.signed_trz.hex
python ./scripts/insert_signatures.py ./build/trezor-ble/zephyr/zephyr.prep.bin 0x82a2258db3da5c14ceddfff92e39531c873f870bad81a66506d706fd31da4ab4ad8e76d62686f0b0bbcf02dd4473d27b3bf0a2b98182d8b52bb2f1336eb7630d 0x0003 -o ./build/trezor-ble/zephyr/zephyr.signed_trz.bin
python ../zephyr/scripts/build/mergehex.py  build/mcuboot/zephyr/zephyr.hex build/trezor-ble/zephyr/zephyr.signed_trz.hex -o build/trezor-ble/zephyr.merged.signed.hex
west flash --hex-file ./build/trezor-ble/zephyr.merged.signed.hex

Building the Application

cd trezor
west build ./trezor-ble -b t3w1_revA_nrf52832 --sysbuild

When building for first time, add --pristine=always so that NCS versions and their cached files don't mix and fubar each other.

Debug builds can be built using the debug overlay configuration: Build the application for the t3w1_revA_nrf52832 board:

west build ./trezor-ble -b t3w1_revA_nrf52832 --sysbuild -- -DOVERLAY_CONFIG=debug.conf

Build Radio test application

cd trezor
west build ./radio_test/ -b t3w1_revA_nrf52832 --sysbuild --pristine

Flashing the Application

Flash the compiled application onto the board:

west flash

Build MCUBoot bootloader: debug, prod, default

west build ./trezor-ble -b t3w1_revA_nrf52832 --sysbuild --domain mcuboot -- -Dmcuboot_EXTRA_CONF_FILE="$PWD/trezor-ble/sysbuild/mcuboot.conf;$PWD/trezor-ble/sysbuild/mcuboot_debug.conf"
west build ./trezor-ble -b t3w1_revA_nrf52832 --sysbuild --domain mcuboot -- -Dmcuboot_EXTRA_CONF_FILE="$PWD/trezor-ble/sysbuild/mcuboot.conf;$PWD/trezor-ble/sysbuild/prod.conf"
west build ./trezor-ble -b t3w1_revA_nrf52832 --sysbuild --domain mcuboot

Build Application

west build ./trezor-ble -b t3w1_revA_nrf52832 --sysbuild --domain trezor-ble -- -DOVERLAY_CONFIG=debug.conf