feat(bluetooth): disable BLE pairing on the daemon adapter#1076
Closed
tfrere wants to merge 1 commit into
Closed
Conversation
Every GATT characteristic exposed by the daemon (commands, responses, install_id, network status) is intentionally unencrypted because the information they carry is also broadcast in the BLE advertisement manufacturer data. There is therefore no security benefit in having the adapter accept SMP pairing requests, and the only user-visible side-effect of being pairable was an iOS / Android "Pair this accessory?" prompt the first time the mobile app connected. Drop the NoInputNoOutput Just Works agent registration and set the adapter to Pairable=False so the mobile OS no longer surfaces a pairing dialog. The NoInputAgent class is kept in the module for reference in case a future encrypted-write characteristic warrants re-enabling bonding. Also document the libnice session-reuse abort observed on the central / Wi-Fi WebRTC path under docs/known-issues/libnice-session-reuse-crash.md so the diagnostic work is not lost while we deal with it later. Made-with: Cursor
|
The docs for this PR live here. All of your documentation changes will be reflected on that endpoint. The docs are available until 30 days after the last update. |
Contributor
Author
|
Closing for cleanup. Branch light/feat-ble-no-pairing remains on remote, can be reopened against mobile-app-integration-light if/when we want to ship BLE pairing hardening. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Stacked on top of #1069 (
mobile-app-integration-light). Carve-out from the umbrella draft #1070.Every GATT characteristic exposed by the daemon (commands, responses, install_id, network status) is intentionally unencrypted because the information it carries is also broadcast in the BLE advertisement manufacturer data. There is therefore no security benefit in having the adapter accept SMP pairing requests, and the only user-visible side-effect of being pairable was an iOS / Android "Pair this accessory?" prompt the first time the mobile app connected.
This PR drops the
NoInputNoOutputJust Works agent registration and sets the adapter toPairable=Falseso the mobile OS no longer surfaces a pairing dialog. TheNoInputAgentclass itself is kept in the module for reference in case a future encrypted-write characteristic warrants re-enabling bonding.Also includes a new diagnostic note at
docs/known-issues/libnice-session-reuse-crash.mdcapturing the libnice session-reuse abort observed on the central / Wi-Fi WebRTC path - independent of pairing, but written up at the same time so the investigation is not lost.Files
src/reachy_mini/daemon/app/services/bluetooth/bluetooth_service.py(+22 / -10): drop agent registration, setPairable=False, update module docstring.docs/known-issues/libnice-session-reuse-crash.md(NEW, +107): diagnostic write-up of an unrelated WebRTC libnice issue, documented for future debugging.Test plan
bluetoothctl showon the daemon's adapter reportsPairable: no.WIFI_STATUS,WIFI_SCAN,WIFI_CONNECT).Notes
2958b079ondev/mobile-app-integration. No conflicts.Made with Cursor