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

Android LE Connection Update terminates with Reason Connection Timeout

I'm trying to figure out why "some" (as in not all of them) Android Devices drop my Bluetooth Low Energy connection (to an NRF52 which I don't think is the problem) after a few seconds.

The behavior within the HCI Snoops reveals the following:

  1. LE Create_Connection
  2. After 261 ms the Android devices the first time to trigger a LE Connection_Update with values that make sense (Connection Interval min & max 7.5 ms, Latency 0, Supervision Timeout 2000)
  3. And recieves success after 560 ms (which seems ok)
  4. About 240 ms the Android starts doing a Connection_Update again, but this time it chooses values that do not make sense (Connection Interval Min: 21.25, Connection Interval Max: 45.00, Connection Latency: 0x0000, Supervisor Timeout: 20) which has to result in a disconnect, since the Supervision timeout will trigger a terminate with the Reason "Connection Timeout" (0x08).
  5. The terminate happens right after the success message from the slave that the ll connection update request was successful.

Does anyone have an idea how to make android not update the slave latency wrongly (or not do the connection updates at all, which would be fine by me for now).

Does anyone have any idea?

Note: I have seen the noumerous questions regarding these kind of issues, but it seems that noone has provided hard evidence towards the reasons.

  • At step 4. Are you sure about the connection parameter update ? Usually when the central update the connection parameter, it will not set Connection Interval Min and Connection Interval Max, it will just Connection interval. Usually it's only the peripheral sending request with connection interval min and max.

    Supervision timeout 20 means 20 seconds ?

    What do you mean by "update the slave latency wrongly" ? I don't see anything wrong with slave latency here.

Related