feat(core): adjust backlight normal settings to 85.
What changed, and why it matters
This commit simply lowers the default screen brightness for the T3W1 hardware model of the Trezor hardware wallet from 150 to 85. It is a product tuning change, not a security fix or vulnerability. The change affects bootloader, production test, and UI theme code, and updates expected test screenshots (UI fixtures) accordingly.
No security action required. Treat as routine hardware-specific UX tuning. If reviewing for release notes, note the lower default brightness for T3W1.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The patch adjusts BACKLIGHT_NORMAL definitions and direct display_set_backlight() calls for TREZOR_MODEL_T3W1 from 150 to 85. It also introduces a shared BACKLIGHT_LOW (45) constant in the bootloader and uses it in the host-control workflow fade logic. The bulk of the diff is updates to tests/ui_tests/fixtures.json hashes for T3W1 brightness tests, reflecting the changed default brightness in UI snapshots. No cryptographic, memory-safety, authentication, or authorization changes are present.
Changed components
core/embed/projects/bootloader/bootui.hcore/embed/projects/bootloader/workflow/wf_host_control.ccore/embed/projects/prodtest/cmd/prodtest_touch.ccore/embed/projects/prodtest/main.ccore/embed/rust/src/ui/layout_eckhart/theme/backlight.rstests/ui_tests/fixtures.jsonInspect captured patch +24 / −8
diff --git a/core/embed/projects/bootloader/bootui.h b/core/embed/projects/bootloader/bootui.h
index ac9f2e91..9f33cd65 100644
--- a/core/embed/projects/bootloader/bootui.h
+++ b/core/embed/projects/bootloader/bootui.h
@@ -25,7 +25,13 @@
#include "rust_ui_bootloader.h"
+#ifdef TREZOR_MODEL_T3W1
+#define BACKLIGHT_NORMAL 85
+#else
#define BACKLIGHT_NORMAL 150
+#endif
+
+#define BACKLIGHT_LOW 45
// Displays a warning screen before jumping to the untrusted firmware
//
diff --git a/core/embed/projects/bootloader/workflow/wf_host_control.c b/core/embed/projects/bootloader/workflow/wf_host_control.c
index 3b0bf0a7..563e96ea 100644
--- a/core/embed/projects/bootloader/workflow/wf_host_control.c
+++ b/core/embed/projects/bootloader/workflow/wf_host_control.c
@@ -132,7 +132,7 @@ workflow_result_t workflow_host_control(const vendor_header *const vhdr,
// device idle.
if (!faded && ticks_expired(fade_deadline)) {
fade_value = display_get_backlight();
- display_fade(fade_value, 45, 200);
+ display_fade(fade_value, BACKLIGHT_LOW, 200);
faded = true;
}
diff --git a/core/embed/projects/prodtest/cmd/prodtest_touch.c b/core/embed/projects/prodtest/cmd/prodtest_touch.c
index d1d7fb12..cbd90f7c 100644
--- a/core/embed/projects/prodtest/cmd/prodtest_touch.c
+++ b/core/embed/projects/prodtest/cmd/prodtest_touch.c
@@ -353,7 +353,12 @@ static void prodtest_touch_draw(cli_t* cli) {
uint32_t idx = 0;
screen_prodtest_draw(events, 0);
+
+#ifdef TREZOR_MODEL_T3W1
+ display_set_backlight(85);
+#else
display_set_backlight(150);
+#endif
for (;;) {
uint32_t evt = touch_get_event();
diff --git a/core/embed/projects/prodtest/main.c b/core/embed/projects/prodtest/main.c
index f5bc24b2..5c0f3b31 100644
--- a/core/embed/projects/prodtest/main.c
+++ b/core/embed/projects/prodtest/main.c
@@ -299,7 +299,12 @@ int prodtest_main(void) {
rgb_led_set_color(RGBLED_GREEN);
#endif
+#ifdef TREZOR_MODEL_T3W1
+ display_set_backlight(85);
+#else
display_set_backlight(150);
+#endif
+
prodtest_show_homescreen();
while (true) {
diff --git a/core/embed/rust/src/ui/layout_eckhart/theme/backlight.rs b/core/embed/rust/src/ui/layout_eckhart/theme/backlight.rs
index fa204d63..3c0006d7 100644
--- a/core/embed/rust/src/ui/layout_eckhart/theme/backlight.rs
+++ b/core/embed/rust/src/ui/layout_eckhart/theme/backlight.rs
@@ -2,7 +2,7 @@
use crate::storage;
// Typical backlight values.
-const BACKLIGHT_NORMAL: u8 = 150;
+const BACKLIGHT_NORMAL: u8 = 85;
const BACKLIGHT_LOW: u8 = 45;
const BACKLIGHT_DIM: u8 = 5;
const BACKLIGHT_NONE: u8 = 0;
diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json
index 01b9cb26..6b561a71 100644
--- a/tests/ui_tests/fixtures.json
+++ b/tests/ui_tests/fixtures.json
@@ -30428,7 +30428,7 @@
"T3W1_cs_test_msg_applysettings.py::test_set_brightness[127-False]": "a796ec9d6dbecabea047d16875d51b7537f54e1786a7aad1b7f54d313191a36f",
"T3W1_cs_test_msg_applysettings.py::test_set_brightness[255-False]": "b7abb155d40c7691a18261b77592805002f4613e4a37a5714b57fd6b3993f86d",
"T3W1_cs_test_msg_applysettings.py::test_set_brightness[256-True]": "c24521e569c08e3605b164212c876f8ac57c5eef6cca6f2ca53a635a883ebc4b",
-"T3W1_cs_test_msg_applysettings.py::test_set_brightness[None-False]": "ec07834582944cb42962ea218930eb31b2e4a4bb30af48ef24756e31c7f5a499",
+"T3W1_cs_test_msg_applysettings.py::test_set_brightness[None-False]": "b2c0fdc71025ac4b60f2020b74209f65e1859d01ef76d23e95ecff7e61a76748",
"T3W1_cs_test_msg_applysettings.py::test_set_brightness_negative": "c24521e569c08e3605b164212c876f8ac57c5eef6cca6f2ca53a635a883ebc4b",
"T3W1_cs_test_msg_applysettings.py::test_set_label[empty]": "6bcad12302cc6c4f138911cdb086c8af1dbb6b6bf2f42cf25efe6a2e5edfaeb8",
"T3W1_cs_test_msg_applysettings.py::test_set_label[max_len]": "dc68ab34b4f3e3fb23a9c4feae8da05c1b3b3ec64d9a2c0919a7b21ec73d34c1",
@@ -31904,7 +31904,7 @@
"T3W1_de_test_msg_applysettings.py::test_set_brightness[127-False]": "373325535a34845c25d6809e7c8d7fdbd721e21d86d328428a6bea820212df80",
"T3W1_de_test_msg_applysettings.py::test_set_brightness[255-False]": "682c94c65af0d7bfa85158a938f22e6fa37a868967fa7c7b32bfa650ede9d793",
"T3W1_de_test_msg_applysettings.py::test_set_brightness[256-True]": "98735f888f827501b25c78c6a737c1983a800c620f709c65b1d95f6c8c9a2b90",
-"T3W1_de_test_msg_applysettings.py::test_set_brightness[None-False]": "b66cb35eebd821e61c419b2bceb2fc302c0abc2e0679a1ef4be368e162b497e8",
+"T3W1_de_test_msg_applysettings.py::test_set_brightness[None-False]": "f2510754b9895d3dac26e9e561c35e4875dabae49ac159cf7a266cec009fb202",
"T3W1_de_test_msg_applysettings.py::test_set_brightness_negative": "98735f888f827501b25c78c6a737c1983a800c620f709c65b1d95f6c8c9a2b90",
"T3W1_de_test_msg_applysettings.py::test_set_label[empty]": "77546ac557f321427311aa650c35697f8c2777ff28792d7a4c671bc5ec7b564a",
"T3W1_de_test_msg_applysettings.py::test_set_label[max_len]": "0fdf48c6561908ffe75bc53f1c145c1d55a7cd2ea986aa02e9d5a3e010468fd5",
@@ -33380,7 +33380,7 @@
"T3W1_en_test_msg_applysettings.py::test_set_brightness[127-False]": "16bc0b635b155a9385571f6a17536dd77b7168240afaed0d9d69a2027af2980f",
"T3W1_en_test_msg_applysettings.py::test_set_brightness[255-False]": "ba4587a0753caf7037add89a524614873d2e403b8dc547e27da1fd2906ed5f8b",
"T3W1_en_test_msg_applysettings.py::test_set_brightness[256-True]": "931d9afceb0ba1e4faae891775819277242d889644d5c0c5863fc8c9fcf859b1",
-"T3W1_en_test_msg_applysettings.py::test_set_brightness[None-False]": "942ef4eef022282136082fea93819d927fb4d426d2be7a001408245792d389a1",
+"T3W1_en_test_msg_applysettings.py::test_set_brightness[None-False]": "ea5a1571ead2bffe4b0f604ac0281fc1bc5a9f804b1f5d5ce9d9490b86e54ac7",
"T3W1_en_test_msg_applysettings.py::test_set_brightness_negative": "931d9afceb0ba1e4faae891775819277242d889644d5c0c5863fc8c9fcf859b1",
"T3W1_en_test_msg_applysettings.py::test_set_label[empty]": "23592d8c0fba7a843d087a76ca4692ea8d7f5c1a9f7e18ffc17698938eb2754b",
"T3W1_en_test_msg_applysettings.py::test_set_label[max_len]": "a82ad50db332495413f1175a4ef4a9082e7b270529222787be3238dfae9ad799",
@@ -34856,7 +34856,7 @@
"T3W1_es_test_msg_applysettings.py::test_set_brightness[127-False]": "d3e5e4229ae690a17544d8128aa780a414402e7389985792f141e58c406c99f5",
"T3W1_es_test_msg_applysettings.py::test_set_brightness[255-False]": "5fe23c959fa9e9325b65ea954bb72583ee49c13aa115615a1b5a60152a4ad1be",
"T3W1_es_test_msg_applysettings.py::test_set_brightness[256-True]": "56536ae9cd7c4ff8022def4ec3350031d3614064d961f53a2850f2be425af201",
-"T3W1_es_test_msg_applysettings.py::test_set_brightness[None-False]": "9527b0c3b93113ad8104d09a8e77fab0ab49789714a485f3de17dd65bdecf3c9",
+"T3W1_es_test_msg_applysettings.py::test_set_brightness[None-False]": "e1f320e537853c06046c8cfe7e0ef6d0e52a560368bd4714c15165d7affba559",
"T3W1_es_test_msg_applysettings.py::test_set_brightness_negative": "56536ae9cd7c4ff8022def4ec3350031d3614064d961f53a2850f2be425af201",
"T3W1_es_test_msg_applysettings.py::test_set_label[empty]": "e520763171c1bbcf5208403dae285a0e18e9347752490e6f414e7d9dafb3e5ea",
"T3W1_es_test_msg_applysettings.py::test_set_label[max_len]": "9cecb4929ae1adc6739231245b6807a9fbaae23fb2fceb303613e3d132b9e242",
@@ -36332,7 +36332,7 @@
"T3W1_fr_test_msg_applysettings.py::test_set_brightness[127-False]": "6e3eb04c18ac8249958a77fda6953f0d9f447499816d3fb162d73366ee668193",
"T3W1_fr_test_msg_applysettings.py::test_set_brightness[255-False]": "ad36ddc82ba868e70a170ae25f9843d7ab8c8dbea5c5eeb5873680422c8f071d",
"T3W1_fr_test_msg_applysettings.py::test_set_brightness[256-True]": "e8156cf4eda1d29060f05b4a18d50032b0b344230609b7de7cababfe0a86b20b",
-"T3W1_fr_test_msg_applysettings.py::test_set_brightness[None-False]": "8e873835367283ddedbd67954aba0a69d42ebce0939bec246d382287584bb81a",
+"T3W1_fr_test_msg_applysettings.py::test_set_brightness[None-False]": "9a225eb308180c01c07334eaddc8908639fba89f753ae8932368128588178a42",
"T3W1_fr_test_msg_applysettings.py::test_set_brightness_negative": "e8156cf4eda1d29060f05b4a18d50032b0b344230609b7de7cababfe0a86b20b",
"T3W1_fr_test_msg_applysettings.py::test_set_label[empty]": "0d2c4ef6a1aaac1b7b0687b809d930368bda860c345a17f73111f6078dbce6c9",
"T3W1_fr_test_msg_applysettings.py::test_set_label[max_len]": "22334a11930c4b84120b96a1c493f95d5e04d2ed3392a2935fe8b4967137a0a6",
@@ -37808,7 +37808,7 @@
"T3W1_pt_test_msg_applysettings.py::test_set_brightness[127-False]": "d6152e778926fe2ea3ec3baf3be1a58bd4347e700b7255b367cb738e81a6b228",
"T3W1_pt_test_msg_applysettings.py::test_set_brightness[255-False]": "d26e3e5027951a7c192b1aa2923d8b79b31aba0f96d1ccb964d3160f9c2c7a7e",
"T3W1_pt_test_msg_applysettings.py::test_set_brightness[256-True]": "1c74667c078e25e7e0d37c7b2aa35f7c8ab02cd88e74695ecb355c82a293b0cc",
-"T3W1_pt_test_msg_applysettings.py::test_set_brightness[None-False]": "c1cc4c8f7504d5bf8f3708bf79682e465473b9486fadb54d9351704375df8d76",
+"T3W1_pt_test_msg_applysettings.py::test_set_brightness[None-False]": "03916372e05271c0a3cbb578963c2fdb312da61fa3e61b30c303cc1f74daf6a0",
"T3W1_pt_test_msg_applysettings.py::test_set_brightness_negative": "1c74667c078e25e7e0d37c7b2aa35f7c8ab02cd88e74695ecb355c82a293b0cc",
"T3W1_pt_test_msg_applysettings.py::test_set_label[empty]": "bfda4aec214685dc8a117f7b8b0b7c1ab1f4ba5ac1dfe79337a312b406001129",
"T3W1_pt_test_msg_applysettings.py::test_set_label[max_len]": "8322b31c732476952f71f5081d0d5e4b639b00e7f3037d76b3675293a9341514",
Why this scored 20/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.