Is the Low level bluetooth description of bonding correct? #13539
Unanswered
brianreinhold
asked this question in
Libraries & Drivers
Replies: 1 comment 2 replies
-
@brianreinhold That's right, this is not implemented yet, we only implement the "persist keys" part of bonding, but yes we're also supposed to persist other state (including pending indications!). Service discovery also requires implementing the service db hash characteristic too. There's a bit of work to be done here... I'm not sure when we'll get to it but it's definitely a known issue and unfortunately not that simple to implement (and needs to be implemented for both NimBLE and BlueKitchen). Are you interested in contributing? |
Beta Was this translation helpful? Give feedback.
2 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
The documentation describes bonding as follows:
Bonding is the process of storing those secrets into non-volatile storage. When bonded, a device is able to resolve a resolvable private address (RPA) from another device based on the stored identity resolving key (IRK). To support bonding, an application must implement the _IRQ_GET_SECRET and _IRQ_SET_SECRET events.
My understanding is that bonding requires more than just the saving of the Long Term Keys but also the enabling of characteristics and saving of service discovery. The idea being that on a reconnect, in an idealized situation, the only thing a central would need to do is encrypt using the LTKs and then the data would be indicated/notified and the device could shut off when everything is sent. Minimal power use. No service discovery or re-enabling of the characteristics needed. There is often an equal sign placed between pairing and bonding but that is not true. In practice most devices that pair and save LTKs also save service discovery results and the enabled state.
Beta Was this translation helpful? Give feedback.
All reactions