InfiniTimeOrg / InfiniTimeOrg/InfiniTime

BLE bond deleted after 2 reboots without connectivity to central

Open
#2,093 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug
Dominant language
C
Stars
3.4k
Forks
1.1k
PR merge metrics
No merged PRs in 30d

Description

Verification
  • I searched for similar bug reports (including closed issues) and found none was relevant.
What happened?

After 2 reboots bond was deleted

What should happen instead?

Bond is preserved after any number of reboots

Reproduction steps
  1. Turn off bluetooth on the central (phone etc.)
  2. Reboot PineTime
  3. Reboot PineTime
  4. Bond now is deleted on the watch
More details?

This behavior is counter-intuitive and likely most InfiniTime users are not aware of this behavior.
Likely this might also have negative impact on security - at least some companion apps (e.g. Gadgetbridge 0.79) will continue to function as before after the bond is deleted on the watch (whether any encrypted pairing is done in this case or all data is transferred unencrypted is an open question).

This is by design (see #796 and 51f62ad096024d45c0274267a90d6adfe58c7c6d ), but why the bond is removed after 2 reboots?
Does existence of the bond have any negative effects? Maybe this could/should be converted into a button under Bluetooth settings (or something like that)?
@evergreen22 Thanks for the BLE bonding functionality! Maybe you know answers to the questions above?

Version

1.14.0

Companion app

Gadgetbrigle, but this will also apply to others

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the behavior with Bluetooth disabled on the central and two PineTime reboots. Review issue #796 and commit 51f62ad096024d45c0274267a90d6adfe58c7c6d to understand the existing bonding behavior and why it is removed; done means the intended behavior is established and verified, either by preserving the bond or clearly documenting the design decision.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
embedded-iot, security
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.