fix(core): don't send disconnect notification on pairing mode entry
What changed, and why it matters
This commit removes code that forcibly disconnected an active Bluetooth connection and sent a disconnect notification whenever the user entered Bluetooth pairing mode on a Trezor device. The change likely fixes a user-experience or minor security issue where entering pairing mode unnecessarily dropped an existing trusted connection, which could be disruptive or potentially exploitable in a social-engineering or pairing-confusion scenario. The patch is small and removes a deliberate disconnect step, but the commit message gives no explicit security context.
Treat as a low-to-moderate behavioral fix. Review whether keeping an active BLE connection during pairing could allow a nearby attacker to influence or intercept the pairing process (e.g., pairing confusion, man-in-the-middle, or unauthorized bonding). Verify that the pairing UI clearly indicates the active connection state and that pairing mode entry cannot be triggered without user confirmation. Consider adding a changelog or security note if the change addresses a reported issue.
Security signals we found
Behavioral change in Bluetooth pairing flow
Removal of forced disconnect on pairing mode entry
Removal of hardcoded 300 ms delay before pairing
No explicit security explanation in commit message
No changelog entry provided
Evidence from the diff
In core/src/apps/homescreen/device_menu.py, the patch deletes a block that, on entry to device pairing mode, checked whether BLE was connected, sent a NOTIFY_DISCONNECT notification, waited 300 ms, and then called ble.disconnect(). After the patch, the device no longer severs an existing BLE connection before pairing. This alters the pairing-mode entry behavior so that an already-paired, connected device remains connected while the user adds another device, rather than being force-disconnected. The commit title frames this as ‘don’t send disconnect notification on pairing mode entry’ and includes ‘[no changelog]’.
Changed components
core/src/apps/homescreen/device_menu.pyBluetooth LE pairing flowBLE connection managementInspect captured patch +0 / −5
diff --git a/core/src/apps/homescreen/device_menu.py b/core/src/apps/homescreen/device_menu.py
index ea2cbe2b4..bd3bb452d 100644
--- a/core/src/apps/homescreen/device_menu.py
+++ b/core/src/apps/homescreen/device_menu.py
@@ -211,11 +211,6 @@ async def handle_device_menu() -> None:
ble_enable(True)
try:
- if ble.is_connected():
- utils.notify_send(utils.NOTIFY_DISCONNECT)
- utime.sleep_ms(300)
- ble.disconnect()
-
if len(paired_devices) < BLE_MAX_BONDS:
await pair_new_device()
else:
Why this scored 33/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.