I have an issue where bonding to multiple devices is failing. This is very repeatable. Here is how we demonstrate the problem:
1. Pair our DA14585 peripheral to one central device. Connect. All is well. Disconnect.
2. Pair DA14585 to a second central device. Connect. Still fine - communicating with the second device. Disconnect
3. Try to connect to our DA14585 from the first paired device. The DA14585 rejects the connection with LL_REJECT_IND, error code 0x06 “PIN or Key Missing”.
This can be repaired on the first central by forgetting the pairing on the central device and then re-connecting (and re-entering the PIN). But then the second central device can no longer connect, which makes pairing useless for more than one device. It appears that only the last paired device can actually connect.
Our bond database size is set to 3 pairings. The bond database appears to be intact and not corrupted. What is going on here?
Any help appreciated.
MKE
Hi mkelwood,
Thanks for let us know. I will try to replicate your issue. Could you please clarify which example of the SDK are you using? The ble_app_security example? Or you have implemented a custom application? I used the ble_app_security example of the SDK, but I was not able to replicate this issue. In case you are using this example, could you please clarify which type of security are you using?
Thanks, PM_Dialog
Hello PM_Dialog,
We are currently using SDK 6.0.10.511 on DA14585. This is a custom application; I believe it was originally derived from the ble_app_peripheral example sources but is has been extensively modified and expanded. We are using Passkey Entry authentication method where a 6 digit passkey PIN is unique to each device and is generated using a proprietary hash of the device serial number. On the device side this is handled in the user_app_on_tk_exch() function.
I have attached our user_config.h file so you can see the other security settings.
此外,债券数据库存储在闪存memory of another processor on the PCB, so we had to implement custom load/store software for this database. I suspected this may be causing the problem but I have verified that the bond database that is stored in the separate processor is identical the the database in DA14585 memory, and the fields appear to be valid.
Let me know if you need any more information.
With best regards,
MKE
Hi mkelwood,
Thanks for your inputs. I will try to replicate your issue and I will get back to you as soon as I have a solution. Be aware that my first attempt wat to replicate it with the ble_app_security example of the SDK, but unfortunately it seems to work correctly.
Thanks, PM_Dialog
Thank you PM_Dialog. Please let me know if you need any additional information.
Hi mkelwood,
Could you please try the procedure you have described with the ble_app_security example of the SDK? Do you have the same issue?
Thanks, PM_Dialog
This appears to have been our problem - corruption in the bond database during transfer between processors. I believe we have it fixed. Thank you for your help.
Hi mkelwood,
Glad that you figured your issue out.
Thanks, PM_Dialog