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

Can the connection interval be lower than 30ms on iOS?

Hello,

I am trying to get a lower connection interval from iOS. But the lowest connection interval I could get were 30ms. Anyone has experience to achieve the connection interval lower to 20 ms? What connection parameters should I use?

Any helpful information will be appreciated.

Best Regards, Calvin

  • Hi

    You can find Apple's recommendation for connection intervals in this document, section 3.6 about connection parameters

    Update 23.12.2014 I observe the same as you when I run the standard ble_app_hrs from nRF51 SDK 7.1.0. If I select min interval as 20ms and max interval as 25ms, then my IOS 8.1 device will respond with connection interval 30ms, which will eventually result in connecton parameter negotiation failure and the nRF51 disconnects. However, if I choose min interval as 10ms and max interval as 20ms then IOS 8 will set connection interval of 18.75ms. But according to Apple's recommendations, min interval should be 20ms or higher. So the conclusion is that 30ms is the shortest connection interval which is still within the recommendations. You could run with 18.75ms but that would be at your own risk, as IOS will possibly not support that in future IOS versions.

    Description of the connection parameter update procedure is here.

  • Yes, I have seen that document and I set the connection parameters as below.

    #define MIN_CONN_INTERVAL MSEC_TO_UNITS(20, UNIT_1_25_MS)
    #define MAX_CONN_INTERVAL MSEC_TO_UNITS(40, UNIT_1_25_MS)
    #define SLAVE_LATENCY 0 
    #define CONN_SUP_TIMEOUT MSEC_TO_UNITS(300, UNIT_10_MS)
    

    But the default connection interval of iOS seems to be 30ms. The connection interval would be accepted when the connection is established without update request because 30ms is in the window between MIN_CONN_INTERVAL and MAX_CONN_INTERVAL.

    I tried to modify the MAX_CONN_INTERVAL to 28.75ms to make my device have the connection parameters update request to iOS. But finally the request was rejected.

    Could you advise me how to let my device negotiate a connection interval lower than 30ms with iOS device? It will be great if the connection interval can achieve 20ms.

    Thanks. Calvin

  • Is there anyone can help me on this issue? Or the final conclusion is impossible to achieve the connection interval lower than 30ms?

    Best Regards, Calvin

  • The best possible should be 11.25ms when connecting to an iOS device as a HID over GATT keyboard, see the Apple guidelines above. To get the same for your Service you need to combine your Service with the HID over GATT. In addition you will need to let iOS do the connection management, use the HID keyboard example to get started.

  • Hi,

    Thanks for your information. Besides the lower connection interval, we also need transfer 6 packets at each connection event. And the packet size is 20 bytes. I wonder if the HID over GATT can achieve the conditions?

    Calvin

Related