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

Parents
  • 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

Reply
  • 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

Children
No Data
Related