This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

nrf51 as central iOS as peripheral pairing

Hello

There are a lot of information, examples and questions about pairing with iOS, where iOS acts as central and nrf acts as peripheral, but there is absolutely no information about the opposite case.

I develop iOS application witch acts as BLE peripheral and a nrf51 based device, with acts as central. I need to organise to organize two-way authentication between my iOS application and nrf based device, so I'm trying to implement pairing and bounding.

Is there any information about inlementation in this case? I do not quite understand how to organize it using iOS as peripheral.

Best regards, Vitaliy

EDIT 07.08.2015

Problem has been solved in this thread

Parents
  • There are some information. We have central examples in our SDK, like ble_app_hrs_c. We have message sequence charts that describe most of the procedures. See this. For central applications we have a device manager central library to handle pairing and bonding.

    Unfortunately, this library will not work out of the box with iOS, since it uses IRK. Please see this. I try to look into this some more, but this is the answer I have for you at this point.

    Edit 30.07.2015: I modified the ble_app_hrs_c example and the device manager central library. It seems to be working with peripherals that use random resolvable address.

    If there are no bonds it will scan and connect normally, if there are any bonds, it will scan and connect with whitelisting using the addresses and IRKs for the bonded devices.

    If a connection to a previously bonded IRK device is made, the device manager will use the IRK to identify the correct bond. Then it will not pair again, but just encrypt the link using the previously shared LTK.

    Here is my project, it is given as is, and with limited testing. You can find the changes I made by searching for pemy. I used SoftDevice S120 2.1.0 and SDK 9.0.0. Unzip the project to \examples\ble_central.

    Edit 07.08.2015: There was a bug in the project. Here is the project with a fix.

    Be sure to use the device manager central library included in the folder. The project in \pca10028\s120\arm5_no_packs uses it, but for example the project in \pca10031\s130\arm5_no_packs doesn't. Just remove the library and add the one included in the folder instead.

Reply
  • There are some information. We have central examples in our SDK, like ble_app_hrs_c. We have message sequence charts that describe most of the procedures. See this. For central applications we have a device manager central library to handle pairing and bonding.

    Unfortunately, this library will not work out of the box with iOS, since it uses IRK. Please see this. I try to look into this some more, but this is the answer I have for you at this point.

    Edit 30.07.2015: I modified the ble_app_hrs_c example and the device manager central library. It seems to be working with peripherals that use random resolvable address.

    If there are no bonds it will scan and connect normally, if there are any bonds, it will scan and connect with whitelisting using the addresses and IRKs for the bonded devices.

    If a connection to a previously bonded IRK device is made, the device manager will use the IRK to identify the correct bond. Then it will not pair again, but just encrypt the link using the previously shared LTK.

    Here is my project, it is given as is, and with limited testing. You can find the changes I made by searching for pemy. I used SoftDevice S120 2.1.0 and SDK 9.0.0. Unzip the project to \examples\ble_central.

    Edit 07.08.2015: There was a bug in the project. Here is the project with a fix.

    Be sure to use the device manager central library included in the folder. The project in \pca10028\s120\arm5_no_packs uses it, but for example the project in \pca10031\s130\arm5_no_packs doesn't. Just remove the library and add the one included in the folder instead.

Children
Related