feat(core/build): add board and target configuration files
What changed, and why it matters
This commit adds new configuration files describing Trezor hardware models and build targets. It is a build-system feature with no user-facing behavior change and no apparent security relevance.
No security action required. Review as normal build-system refactoring.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The commit introduces TOML model/board configuration files under core/embed/models/ for multiple Trezor devices (D001, D002, T2B1, T2T1, T3B1, T3T1, T3W1) and updates core/embed/models/build.rs to emit a cargo:model=… build variable. The changes are declarative build metadata and a single added macro definition (DISPLAY_PANEL_T2T1). No code logic handling secrets, cryptography, memory, communication, or authentication is modified.
Changed components
core/embed/models/build.rscore/embed/models/*/model.tomlcore/embed/models/*/boards/*.tomlcore/embed/models/T2T1/boards/trezor_t.hInspect captured patch +412 / −0
diff --git a/core/embed/models/D001/boards/disc1.toml b/core/embed/models/D001/boards/disc1.toml
new file mode 100644
index 00000000..dbce8b29
--- /dev/null
+++ b/core/embed/models/D001/boards/disc1.toml
@@ -0,0 +1,10 @@
+header = "D001/boards/stm32f429i-disc1.h"
+
+[display]
+driver = "io/display_stm32f429i_disc1"
+
+[touch]
+driver = "io/touch_stmpe811"
+
+[sdram]
+bsp = "sys/sdram_stm32f429i_disc1"
diff --git a/core/embed/models/D001/model.toml b/core/embed/models/D001/model.toml
new file mode 100644
index 00000000..db20400b
--- /dev/null
+++ b/core/embed/models/D001/model.toml
@@ -0,0 +1,10 @@
+mcu = "stm32f429"
+default_board = "disc1"
+
+features = [
+ "dma2d",
+ "pvd",
+ "framebuffer",
+ "secure_mode",
+ "layout_bolt_d001",
+]
diff --git a/core/embed/models/D002/boards/dk.toml b/core/embed/models/D002/boards/dk.toml
new file mode 100644
index 00000000..049d7a4f
--- /dev/null
+++ b/core/embed/models/D002/boards/dk.toml
@@ -0,0 +1,11 @@
+header = "D002/boards/stm32u5g9j-dk.h"
+
+[display]
+driver = "io/display_ltdc_dsi"
+panel = "io/display_panel_stm32u5a9j_dk"
+
+[backlight]
+driver = "io/backlight_pin"
+
+[touch]
+driver = "io/touch_sitronix"
diff --git a/core/embed/models/D002/model.toml b/core/embed/models/D002/model.toml
new file mode 100644
index 00000000..22b0f98e
--- /dev/null
+++ b/core/embed/models/D002/model.toml
@@ -0,0 +1,19 @@
+mcu = "stm32u5g"
+default_board = "dk"
+secmon = true
+
+features = [
+ "boot_ucb",
+ "dma2d",
+ "hash_processor",
+ "lockable_bootloader",
+ "secmon_header",
+ "secmon_layout",
+ "secmon_verification",
+ "secret",
+ "secure_aes",
+ "storage_hw_key",
+ "tamper",
+ "framebuffer",
+ "layout_bolt_d002",
+]
diff --git a/core/embed/models/T2B1/boards/rev10.toml b/core/embed/models/T2B1/boards/rev10.toml
new file mode 100644
index 00000000..b71e77cc
--- /dev/null
+++ b/core/embed/models/T2B1/boards/rev10.toml
@@ -0,0 +1,11 @@
+header = "T2B1/boards/trezor_r_v10.h"
+
+[display]
+driver = "io/display_vg2864"
+panel = "io/display_panel_vg2864"
+
+[button]
+
+[optiga]
+
+[sbu]
diff --git a/core/embed/models/T2B1/boards/unix.toml b/core/embed/models/T2B1/boards/unix.toml
new file mode 100644
index 00000000..32b7760e
--- /dev/null
+++ b/core/embed/models/T2B1/boards/unix.toml
@@ -0,0 +1,11 @@
+header = "T2B1/boards/t2b1-unix.h"
+
+[display]
+driver = "display_unix"
+panel = "display_panel_vg2864"
+
+[button]
+
+[optiga]
+
+[sbu]
diff --git a/core/embed/models/T2B1/model.toml b/core/embed/models/T2B1/model.toml
new file mode 100644
index 00000000..2fa4d764
--- /dev/null
+++ b/core/embed/models/T2B1/model.toml
@@ -0,0 +1,14 @@
+mcu = "stm32f427"
+default_board = "rev10"
+emulator_board = "unix"
+
+features = [
+ "consumption_mask",
+ "lockable_bootloader",
+ "pvd",
+ "secret",
+ "framebuffer",
+ "secure_mode",
+ "ui_empty_lock",
+ "layout_caesar",
+]
diff --git a/core/embed/models/T2T1/boards/hw.toml b/core/embed/models/T2T1/boards/hw.toml
new file mode 100644
index 00000000..e7f17b58
--- /dev/null
+++ b/core/embed/models/T2T1/boards/hw.toml
@@ -0,0 +1,15 @@
+header = "T2T1/boards/trezor_t.h"
+
+[display]
+driver = "io/display_st7789"
+panel = "io/display_panel_t2t1"
+
+[backlight]
+driver = "io/backlight_tps61043"
+
+[touch]
+driver = "io/touch_ft6x36_t2t1"
+
+[sd_card]
+
+[sbu]
diff --git a/core/embed/models/T2T1/boards/trezor_t.h b/core/embed/models/T2T1/boards/trezor_t.h
index 952a0ff6..e0b86bde 100644
--- a/core/embed/models/T2T1/boards/trezor_t.h
+++ b/core/embed/models/T2T1/boards/trezor_t.h
@@ -2,6 +2,7 @@
#define _TREZOR_T_H
#define DISPLAY_COLOR_MODE DMA2D_OUTPUT_RGB565
+#define DISPLAY_PANEL_T2T1 1
#define DISPLAY_IDENTIFY 1
#define DISPLAY_TE_PORT GPIOD
diff --git a/core/embed/models/T2T1/boards/unix.toml b/core/embed/models/T2T1/boards/unix.toml
new file mode 100644
index 00000000..58cd7f7b
--- /dev/null
+++ b/core/embed/models/T2T1/boards/unix.toml
@@ -0,0 +1,14 @@
+header = "T2T1/boards/t2t1-unix.h"
+
+[display]
+driver = "display_unix"
+panel = "display_panel_t2t1"
+
+[backlight]
+
+[touch]
+driver = "touch_unix"
+
+[sd_card]
+
+[sbu]
diff --git a/core/embed/models/T2T1/model.toml b/core/embed/models/T2T1/model.toml
new file mode 100644
index 00000000..e6611025
--- /dev/null
+++ b/core/embed/models/T2T1/model.toml
@@ -0,0 +1,15 @@
+mcu = "stm32f427"
+default_board = "hw"
+emulator_board = "unix"
+
+features = [
+ "dma2d",
+ "pvd",
+ "secure_mode",
+ "layout_bolt",
+
+ # Legacy coin support
+ "decred",
+ "eos",
+ "nem",
+]
diff --git a/core/embed/models/T3B1/boards/revB.toml b/core/embed/models/T3B1/boards/revB.toml
new file mode 100644
index 00000000..41c6d4fe
--- /dev/null
+++ b/core/embed/models/T3B1/boards/revB.toml
@@ -0,0 +1,11 @@
+header = "T3B1/boards/trezor_t3b1_revB.h"
+
+[display]
+driver = "io/display_vg2864"
+panel = "io/display_panel_vg2864"
+
+[button]
+
+[optiga]
+
+[sbu]
diff --git a/core/embed/models/T3B1/boards/unix.toml b/core/embed/models/T3B1/boards/unix.toml
new file mode 100644
index 00000000..99f5bc64
--- /dev/null
+++ b/core/embed/models/T3B1/boards/unix.toml
@@ -0,0 +1,11 @@
+header = "T3B1/boards/t3b1-unix.h"
+
+[display]
+driver = "display_unix"
+panel = "display_panel_vg2864"
+
+[button]
+
+[optiga]
+
+[sbu]
diff --git a/core/embed/models/T3B1/model.toml b/core/embed/models/T3B1/model.toml
new file mode 100644
index 00000000..abd3e280
--- /dev/null
+++ b/core/embed/models/T3B1/model.toml
@@ -0,0 +1,18 @@
+mcu = "stm32u58"
+default_board = "revB"
+emulator_board = "unix"
+
+features = [
+ "consumption_mask",
+ "hash_processor",
+ "hw_revision",
+ "lockable_bootloader",
+ "pvd",
+ "secret",
+ "secure_aes",
+ "framebuffer",
+ "secure_mode",
+ "storage_hw_key",
+ "tamper",
+ "layout_caesar",
+]
diff --git a/core/embed/models/T3T1/boards/revE.toml b/core/embed/models/T3T1/boards/revE.toml
new file mode 100644
index 00000000..ef3ae188
--- /dev/null
+++ b/core/embed/models/T3T1/boards/revE.toml
@@ -0,0 +1,19 @@
+header = "T3T1/boards/trezor_t3t1_revE.h"
+
+[display]
+driver = "io/display_st7789"
+panel = "io/display_panel_lx154a2482"
+
+[backlight]
+driver = "io/backlight_tps61043"
+
+[touch]
+driver = "io/touch_ft6x36_t3t1"
+
+[haptic]
+
+[sd_card]
+
+[optiga]
+
+[sbu]
diff --git a/core/embed/models/T3T1/boards/unix.toml b/core/embed/models/T3T1/boards/unix.toml
new file mode 100644
index 00000000..6e6f5714
--- /dev/null
+++ b/core/embed/models/T3T1/boards/unix.toml
@@ -0,0 +1,18 @@
+header = "T3T1/boards/t3t1-unix.h"
+
+[display]
+driver = "display_unix"
+panel = "display_panel_lx154a2482"
+
+[backlight]
+
+[touch]
+driver = "touch_unix"
+
+[haptic]
+
+[sd_card]
+
+[optiga]
+
+[sbu]
diff --git a/core/embed/models/T3T1/model.toml b/core/embed/models/T3T1/model.toml
new file mode 100644
index 00000000..5655d4f0
--- /dev/null
+++ b/core/embed/models/T3T1/model.toml
@@ -0,0 +1,21 @@
+mcu = "stm32u58"
+default_board = "revE"
+emulator_board = "unix"
+
+features = [
+ "dma2d",
+ "hash_processor",
+ "hw_revision",
+ "lockable_bootloader",
+ "pvd",
+ "secret",
+ "secure_aes",
+ "framebuffer",
+ "secure_mode",
+ "storage_hw_key",
+ "tamper",
+ "layout_delizia",
+]
+
+[targets.bootloader]
+exclude = ["haptic"]
diff --git a/core/embed/models/T3W1/boards/revA.toml b/core/embed/models/T3W1/boards/revA.toml
new file mode 100644
index 00000000..d8590e40
--- /dev/null
+++ b/core/embed/models/T3W1/boards/revA.toml
@@ -0,0 +1,33 @@
+header = "T3W1/boards/trezor_t3w1_revA.h"
+
+[display]
+driver = "io/display_ltdc_dsi"
+panel = "io/display_panel_lx250a2401a"
+
+[backlight]
+driver = "io/backlight_tps61062"
+
+[touch]
+driver = "io/touch_ft3168"
+
+[button]
+
+[haptic]
+
+[ble]
+
+[nrf]
+
+[nrf_auth]
+
+[rgb_led]
+
+[power_manager]
+
+[nfc]
+
+[optiga]
+
+[tropic]
+
+[sbu]
diff --git a/core/embed/models/T3W1/boards/revB.toml b/core/embed/models/T3W1/boards/revB.toml
new file mode 100644
index 00000000..5948093a
--- /dev/null
+++ b/core/embed/models/T3W1/boards/revB.toml
@@ -0,0 +1,33 @@
+header = "T3W1/boards/trezor_t3w1_revB.h"
+
+[display]
+driver = "io/display_ltdc_dsi"
+panel = "io/display_panel_lx250a2401a"
+
+[backlight]
+driver = "io/backlight_tps61062"
+
+[touch]
+driver = "io/touch_ft3168"
+
+[button]
+
+[haptic]
+
+[ble]
+
+[nrf]
+
+[nrf_auth]
+
+[rgb_led]
+
+[power_manager]
+
+[nfc]
+
+[optiga]
+
+[tropic]
+
+[sbu]
diff --git a/core/embed/models/T3W1/boards/revC.toml b/core/embed/models/T3W1/boards/revC.toml
new file mode 100644
index 00000000..ec51a558
--- /dev/null
+++ b/core/embed/models/T3W1/boards/revC.toml
@@ -0,0 +1,33 @@
+header = "T3W1/boards/trezor_t3w1_revC.h"
+
+[display]
+driver = "io/display_ltdc_dsi"
+panel = "io/display_panel_lx250a2401a"
+
+[backlight]
+driver = "io/backlight_tps61062"
+
+[touch]
+driver = "io/touch_ft3168"
+
+[button]
+
+[haptic]
+
+[ble]
+
+[nrf]
+
+[nrf_auth]
+
+[rgb_led]
+
+[power_manager]
+
+[nfc]
+
+[optiga]
+
+[tropic]
+
+[sbu]
diff --git a/core/embed/models/T3W1/boards/unix.toml b/core/embed/models/T3W1/boards/unix.toml
new file mode 100644
index 00000000..ec8de698
--- /dev/null
+++ b/core/embed/models/T3W1/boards/unix.toml
@@ -0,0 +1,32 @@
+header = "T3W1/boards/t3w1-unix.h"
+
+[display]
+driver = "display_unix"
+panel = "display_panel_lx250a2401a"
+
+[backlight]
+
+[touch]
+driver = "touch_unix"
+
+[button]
+
+[haptic]
+
+[ble]
+
+[nrf]
+
+[nrf_auth]
+
+[rgb_led]
+
+[power_manager]
+
+[nfc]
+
+[optiga]
+
+[tropic]
+
+[sbu]
diff --git a/core/embed/models/T3W1/model.toml b/core/embed/models/T3W1/model.toml
new file mode 100644
index 00000000..a78c2a4a
--- /dev/null
+++ b/core/embed/models/T3W1/model.toml
@@ -0,0 +1,32 @@
+mcu = "stm32u5g"
+default_board = "revC"
+emulator_board = "unix"
+secmon = true
+
+features = [
+ "backup_ram",
+ "boot_ucb",
+ "dma2d",
+ "hash_processor",
+ "hw_jpeg_decoder",
+ "hw_revision",
+ "iwdg",
+ "lockable_bootloader",
+ "mcu_attestation",
+ "rtc",
+ "secmon_header",
+ "secmon_layout",
+ "secmon_verification",
+ "secret",
+ "secure_aes",
+ "serial_number",
+ "smp",
+ "storage_hw_key",
+ "framebuffer",
+ "suspend",
+ "tamper",
+ "telemetry",
+ "thp",
+ "touch_wakeup",
+ "layout_eckhart",
+]
diff --git a/core/embed/models/build.rs b/core/embed/models/build.rs
index 6ea0ed0c..b566e962 100644
--- a/core/embed/models/build.rs
+++ b/core/embed/models/build.rs
@@ -1,6 +1,26 @@
use xbuild::{CLibrary, Result, bail_unsupported};
fn main() -> Result<()> {
+ // Emit model identity for dependent build scripts (readable as DEP_MODELS_MODEL).
+ let model_id = if cfg!(feature = "model_t2t1") {
+ "T2T1"
+ } else if cfg!(feature = "model_t2b1") {
+ "T2B1"
+ } else if cfg!(feature = "model_t3b1") {
+ "T3B1"
+ } else if cfg!(feature = "model_t3t1") {
+ "T3T1"
+ } else if cfg!(feature = "model_t3w1") {
+ "T3W1"
+ } else if cfg!(feature = "model_d001") {
+ "D001"
+ } else if cfg!(feature = "model_d002") {
+ "D002"
+ } else {
+ ""
+ };
+ println!("cargo:model={model_id}");
+
xbuild::build(|lib| {
lib.add_include(".");
Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.