fix(core/bootloader): disable 'pair new device' menu item in case BLE is disabled
What changed, and why it matters
This commit changes the bootloader menu on a Trezor hardware wallet so that the 'Pair new device' Bluetooth option is grayed out when Bluetooth Low Energy (BLE) is disabled. It is a UI consistency fix rather than a fix for an exploitable vulnerability. There is no evidence in the commit or supplied references that this resolves a security issue.
No immediate security action required. Treat as a normal UI/UX fix. If reviewing for a security advisory, request additional evidence (e.g., a CVE, security release note, or researcher report) showing that the always-enabled menu item led to an exploitable condition.
Security signals we found
UI control enabled state now tied to BLE hardware/feature availability
No changes to cryptographic, authentication, or pairing protocol code
No mention of vulnerability, CVE, security bug, or researcher attribution in commit message or diff
Evidence from the diff
In core/embed/rust/src/ui/layout_eckhart/bootloader/bld_menu_screen.rs, the bootloader menu screen now imports trezorhal::ble and sets the ‘Pair new device’ button’s initial enabled state to ble::get_enabled(). Previously the button was always enabled. This prevents a user from selecting a pairing action when the BLE hardware/feature is off. The change is purely presentational/stateful UI gating and does not modify BLE pairing logic, authentication, or cryptographic handling.
Changed components
core/embed/rust/src/ui/layout_eckhart/bootloader/bld_menu_screen.rsTrezor Safe 5 / Eckhart layout bootloader menu UIInspect captured patch +9 / −5
diff --git a/core/embed/rust/src/ui/layout_eckhart/bootloader/bld_menu_screen.rs b/core/embed/rust/src/ui/layout_eckhart/bootloader/bld_menu_screen.rs
index daf77e4e..05571605 100644
--- a/core/embed/rust/src/ui/layout_eckhart/bootloader/bld_menu_screen.rs
+++ b/core/embed/rust/src/ui/layout_eckhart/bootloader/bld_menu_screen.rs
@@ -1,7 +1,10 @@
-use crate::ui::{
- component::{Component, Event, EventCtx},
- geometry::{Alignment, Rect},
- shape::Renderer,
+use crate::{
+ trezorhal::ble,
+ ui::{
+ component::{Component, Event, EventCtx},
+ geometry::{Alignment, Rect},
+ shape::Renderer,
+ },
};
use super::{
@@ -33,7 +36,8 @@ impl BldMenuScreen {
pub fn new() -> Self {
let bluetooth = Button::with_text("Pair new device".into())
.styled(theme::bootloader::button_bld_menu())
- .with_text_align(Alignment::Start);
+ .with_text_align(Alignment::Start)
+ .initially_enabled(ble::get_enabled());
let reboot = Button::with_text("Restart".into())
.styled(theme::bootloader::button_bld_menu())
.with_text_align(Alignment::Start);
Why this scored 19/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.