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

nRF8001 rev. D on iOS 6-7

Hi!

I have some problem to reconnect an already bonded device containing a chip nRF8001 rev D with my iOS app. Rev C works fine with the first connection and the reconnection.

Rev D connect and pair but when you try to reconnect the statut stay on "Connecting..." and nothing happened (On Android, all works fine) . No timeout and no error occure during the reconnection.

Someone as a clue on what can do this? Thx

Jiu

  • Now I understand better. The ACI Bond Security request will work on Android and I have checked that.

    Can you verify that the device that you paired with on the iOS is present in Settings -> Bluetooth and show it as a paired device.

    nRF8001 D version: nRFgo studio Can you change the Security Request Delay to 10 seconds, in nRF8001 configuration -> Security, and then test it with iOS

    Let me know about 1 and 2.

    1. Yes, the device appears under Bluetooth devices in iOS and can be removed (forget this device).
    2. Setting security request delay to 10 seconds (together with Device security required) does not change anything for Android or Windows. Not tested on iOS, but as it already worked with the previous modification (Device security -> Security required), I don't understand why...

    There seems to be some confusion. I think we have to explain the whole thing:

    • Both profiles for nRF8001 revision C and D (as posted on Monday by Jiu) work correctly with Windows (Bluegiga BLED112) and Andoid 4.3/4.4, but only nRF8001C works with iOS. nRF8001D does connect and pair with iOS, but it is impossible to reconnect the same chip to the same Apple device (no events on nRF8001D after command Connect).
    • When changing the profile for nRF8001D (Device security -> Security required) it works fine with iOS but not with Windows nor Android. When reconnecting to a paired master (Win or Android) the nRF8001D disconnects with ACI Status 0x8D (Bond required to proceed with connection).

    As Android and Windows do both accept our present profile, why does iOS have issues? We need a configuration that works with every operating system.

  • ==

    1. Yes, the device appears under Bluetooth devices in iOS and can be removed (forget this device). Ok, so the device was successfully paired.
    1. Setting security request delay to 10 seconds (together with Device security required) does not change anything for Android or Windows. Not tested on iOS, but as it already worked with the previous modification (Device security -> Security required), I don't understand why...

    Let me rephrase (2), Can you set Device Security -> No Security Required , Security request delay to 10 seconds . You will use ACI Bond and ACI bond Security Request. You can also set the timeout in the ACI Connect to a few minutes so you can check that you get a Disconnected Event (Timed out), if there is no connection . Can you try this out.

    =

    iOS actually does not like this method of pairing of using the ACI Bond Security Request and is not the recommended method according to iOS, however I do see that you have got it working on the C version.

    See section 3.9 of the developer.apple.com/.../bluetoothdesignguidelines.pdf

    Now that I understand your situation let me see if I can re-produce it. Caveat: Remember the Apple guidelines clearly do not approve this I am attempting to re-produce for my understanding and to see if there is a work around.

    = Alternative: Device Security -> No Security Required Set a Characteristic to have Security required and use this Characteristic to enable security from the iOS app, by reading or writing to it. This however means that the method you have used to work with Android and iOS needs to change a bit.

  • We did a couple of tests, here are the results:

    • "No securitiy required" and "Security request delay" = 10s does not solve the reconnection-problem of iOS. It is still impossible to reconnect to an iOS-device with these profile-settings...
    • iOS 7.1 works fine without using the "ACI Bond security request" on the nRF8001 side, so Apple Bluetooth design guidelines are respected.
    • Some or Android 4.4.2 devices work with the "Security required" option in our profile, but there is always a problem at the first connection (nRF8001 ACI Bond). The services (indication/notification) are never activated. At reconnection these services are activated on some devices, whereas others still don't work...

    Your alternative solution might be a good idea. Unfortunately I did not find the required option in nRFgo Studio. Can you explain a little bit more? Bluetooth speification v4.1 suggests "Authenticated Signed Writes" property for characteristics, but I can't find this option in nRFgo Studio...

  • You can request a beta release of this feature in the support portal at www.nordicsemi.com/.../Contact-Support-Team This should be released in the following weeks.

Related