chore(core): allow dropping telemetry-related code in build time
What changed, and why it matters
This is a routine build-system cleanup. It lets the firmware compile without the optional telemetry feature by replacing a hardcoded feature name with a variable. There is no security bug being fixed here.
No security action needed. Treat as normal build maintenance.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The commit refactors SCons build scripts to define a TELEMETRY boolean from FEATURES_AVAILABLE and pass it through to the micropython preprocessing tool, which substitutes utils.USE_TELEMETRY at build time. This is purely a build-time feature-gating change; no runtime logic, parsing, or crypto code is modified.
Changed components
core/SConscript.firmwarecore/SConscript.unixcore/site_scons/site_tools/micropython/__init__.pyInspect captured patch +8 / −2
diff --git a/core/SConscript.firmware b/core/SConscript.firmware
index d9cf493f..0eb94c1c 100644
--- a/core/SConscript.firmware
+++ b/core/SConscript.firmware
@@ -491,6 +491,7 @@ SDCARD = ('sd_card' in FEATURES_AVAILABLE)
OPTIGA = ('optiga' in FEATURES_AVAILABLE)
SERIAL_NUMBER = ('serial_number' in FEATURES_AVAILABLE)
BACKLIGHT = ('backlight' in FEATURES_AVAILABLE)
+TELEMETRY = ('telemetry' in FEATURES_AVAILABLE)
N4W1 = ('n4w1' in FEATURES_AVAILABLE)
env.Tool('micropython')
@@ -767,7 +768,7 @@ if FROZEN:
))
)
SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'apps/misc/*.py'))
- if 'telemetry' in FEATURES_AVAILABLE:
+ if TELEMETRY:
SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'apps/telemetry/*.py'))
SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'apps/bitcoin/*.py'))
SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'apps/bitcoin/*/*.py',
@@ -863,6 +864,7 @@ if FROZEN:
ui_layout=ui.get_ui_layout(TREZOR_MODEL),
thp=THP,
power_manager='power_manager' in FEATURES_AVAILABLE,
+ telemetry=TELEMETRY,
n4w1=N4W1,
include_source_lines=MICROPY_ENABLE_SOURCE_LINE,
)
diff --git a/core/SConscript.unix b/core/SConscript.unix
index 468089db..453b6c01 100644
--- a/core/SConscript.unix
+++ b/core/SConscript.unix
@@ -474,6 +474,7 @@ SDCARD = ('sd_card' in FEATURES_AVAILABLE)
OPTIGA = ('optiga' in FEATURES_AVAILABLE)
SERIAL_NUMBER = ('serial_number' in FEATURES_AVAILABLE)
BACKLIGHT = ('backlight' in FEATURES_AVAILABLE)
+TELEMETRY = ('telemetry' in FEATURES_AVAILABLE)
N4W1 = ('n4w1' in FEATURES_AVAILABLE)
env.Tool('micropython')
@@ -782,7 +783,7 @@ if FROZEN:
))
)
SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'apps/misc/*.py'))
- if 'telemetry' in FEATURES_AVAILABLE:
+ if TELEMETRY:
SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'apps/telemetry/*.py'))
SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'apps/bitcoin/*.py'))
SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'apps/bitcoin/*/*.py',
@@ -882,6 +883,7 @@ if FROZEN:
ui_layout=ui.get_ui_layout(TREZOR_MODEL),
thp=THP,
power_manager='power_manager' in FEATURES_AVAILABLE,
+ telemetry=TELEMETRY,
n4w1=N4W1,
include_source_lines=MICROPY_ENABLE_SOURCE_LINE,
)
diff --git a/core/site_scons/site_tools/micropython/__init__.py b/core/site_scons/site_tools/micropython/__init__.py
index df89d0a2..a5b89754 100644
--- a/core/site_scons/site_tools/micropython/__init__.py
+++ b/core/site_scons/site_tools/micropython/__init__.py
@@ -62,6 +62,7 @@ def generate(env):
layout_eckhart = env["ui_layout"] == "UI_LAYOUT_ECKHART"
thp = env["thp"]
power_manager = env["power_manager"]
+ telemetry = env["telemetry"]
n4w1 = env["n4w1"]
include_source_lines = env["include_source_lines"]
interim = f"{target[:-4]}.i" # replace .mpy with .i
@@ -79,6 +80,7 @@ def generate(env):
rf"-e 's/utils\.USE_TOUCH/{touch}/g'",
rf"-e 's/utils\.USE_THP/{thp}/g'",
rf"-e 's/utils\.USE_POWER_MANAGER/{power_manager}/g'",
+ rf"-e 's/utils\.USE_TELEMETRY/{telemetry}/g'",
rf"-e 's/utils\.USE_N4W1/{n4w1}/g'",
r"-e 's/if TYPE_CHECKING/if False/'",
r"-e 's/import typing/# &/'",
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.