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

Supervision Timeout for iOS and Android

I'm working on a BLE peripheral that will connect to both iOS and Android devices. It is important to maintain connection during usage so I consider increasing supervision timeout. iOS allows up to 6s and Android allows up to 20s. If I set timeout to a value between 6s and 20s, it works fine with Android but connection would always drop in a few seconds with iOS. My questions:

- Wouldn't connection parameter negotiation happen in this case?

- If negotiation doesn't work, is there a way to adjust timeout based on the type of connected central?

Thanks

Parents
  • Hi,

    It is important to maintain connection during usage so I consider increasing supervision timeout.

    Does this has to be important? Typically the app on the  nRF would start advertising and the phone would start scanning after a disconnect, so in most cases the user would not notice that a disconnect happened at all. There may be something special about your use case that makes this a problem, though.

    If I set timeout to a value between 6s and 20s, it works fine with Android but connection would always drop in a few seconds with iOS. My questions:

    - Wouldn't connection parameter negotiation happen in this case?

    The iOS device will typically reject the connection parameter request if it if outside what is specified in section 36.6 in Apple's Accessory Design Guidelines. But perhaps you disconnect the link when the request is not accepted? 

    - If negotiation doesn't work, is there a way to adjust timeout based on the type of connected central?

    It is not trivial to determine the type of central reliably and the behavior of iOS and Android could change over time, so the best approach would probably be to try a different set of connection parameters (with a lower supervision timeout).

Reply
  • Hi,

    It is important to maintain connection during usage so I consider increasing supervision timeout.

    Does this has to be important? Typically the app on the  nRF would start advertising and the phone would start scanning after a disconnect, so in most cases the user would not notice that a disconnect happened at all. There may be something special about your use case that makes this a problem, though.

    If I set timeout to a value between 6s and 20s, it works fine with Android but connection would always drop in a few seconds with iOS. My questions:

    - Wouldn't connection parameter negotiation happen in this case?

    The iOS device will typically reject the connection parameter request if it if outside what is specified in section 36.6 in Apple's Accessory Design Guidelines. But perhaps you disconnect the link when the request is not accepted? 

    - If negotiation doesn't work, is there a way to adjust timeout based on the type of connected central?

    It is not trivial to determine the type of central reliably and the behavior of iOS and Android could change over time, so the best approach would probably be to try a different set of connection parameters (with a lower supervision timeout).

Children
No Data
Related