fix(core): fix BLE busy after restart with BLE turned off
What changed, and why it matters
This commit fixes a bug in the Trezor hardware wallet where Bluetooth (BLE) communication could get stuck in a 'busy' state after a device restart if BLE was turned off. The fix moves the start of BLE communication outside the 'if BLE is enabled' block, so the BLE subsystem is always initialized even when the user has disabled Bluetooth. The changelog describes this as fixing a 'Connected Trezor is used by another application' bug. There is no direct evidence in the commit that this is a security vulnerability; it appears to be a usability/functional bug fix.
Treat as a functional bug fix rather than a security issue unless additional research shows the busy state can be exploited to bypass pairing, pairing confirmation, or transaction authorization. No urgent security action is indicated by the commit alone. Users should update firmware through normal channels.
Security signals we found
Bluetooth subsystem initialization bug
Device state inconsistency after restart
User-facing error message 'Connected Trezor is used by another application'
No explicit security framing by vendor
Evidence from the diff
In core/src/ble.py, the call to ble.start_comm() was previously inside an ‘if enable:’ branch, where ‘enable’ is the persisted BLE on/off setting. If BLE was disabled, start_comm() was never called, which left the BLE stack in a state where it could report as busy after a restart. The patch unconditionally calls ble.start_comm() immediately after ble.set_enabled(enable), so the BLE communication layer is initialized regardless of the enabled flag. This is a one-line logic change with no new dependencies or API surface.
Changed components
core/src/ble.pyTrezor Core BLE initializationBluetooth Low Energy communication stackInspect captured patch +2 / −1
diff --git a/core/.changelog.d/6448.fixed b/core/.changelog.d/6448.fixed
new file mode 100644
index 00000000..faabad8e
--- /dev/null
+++ b/core/.changelog.d/6448.fixed
@@ -0,0 +1 @@
+Fix 'Connected Trezor is used by another application' bug.
diff --git a/core/src/ble.py b/core/src/ble.py
index c2f0bf4d..dc328e58 100644
--- a/core/src/ble.py
+++ b/core/src/ble.py
@@ -10,8 +10,8 @@ from trezor import log, utils
try:
enable = storage.device.get_ble()
ble.set_enabled(enable)
+ ble.start_comm()
if enable:
- ble.start_comm()
start_ms = utime.ticks_ms()
Why this scored 29/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.