Increase in Download Time from Sensors to Mobile with Recent IOS Updates

We have observed a significant increase in download time from the sensors to the mobile device after recent OS updates. We are connected to the external sensors via the BLE interface using the following connection parameters(15,15,0,6000)

https://mbientlab.com/tutorials/MetaMotionRL.html:

example 1.For 1 Meter with duration of 28 Seconds the IOS 17.1 taking 44 secs where as IOS 17.5.1 taking 82 secs . 2..For 1 Meter with duration of 45 Seconds the IOS 17.1 taking 74 secs where as IOS 17.5.1 taking 143 secs .

Even with the same connection parameters, download times were considerably lower in iOS 15 and below devices.

We are currently using the connection parameters 15, 15, 0, 6000.

I have learned from some documents that the minimum connection interval was changed to 20, but when I tried it, the download time increased further. I am seeking assistance on how to achieve the same download times as the older versions.

https://mbientlab.com/community/discussion/comment/11852#Comment_11852

Answered by DTS Engineer in 789985022

Are these connection parameters what you are requesting, or what iOS is responding with?

It could be that the iOS device is responding with a different set of parameters. You would want to check what the actual connection parameters are, and then determine if the change in throughput is simply due to that, or something else is going on.

I am not sure what documents you have been reading for your connection interval information, but I suggest to always refer to the official Accessory Design Guidelines for Apple Devices

The current connection parameters guidelines are as follows: Keep in mind that connection parameter requests may be rejected if they do not meet the guidelines.

General connection parameter request guidelines:

  • Peripheral Latency ≤ 30 connection intervals.
  • Supervision Timeout from 6 seconds to 18 seconds.
  • Interval Min ≥ 15 ms.
  • Interval Min ≤ 2 seconds.
  • Interval Min is a multiple of 15 ms.
  • One of the following:
    • Interval Max at least 15 ms greater than Interval Min.
    • Interval Max and Interval Min are both 15 ms.
  • Interval Max * (Peripheral Latency + 1) of 6 seconds or less.
  • Supervision Timeout greater than Interval Max * (Peripheral Latency + 1) * 3.

When Interval Max and Interval Min are both 15 ms like in your request, sometimes a 30 ms interval could be offered to better balance power and performance constraints.

Also, there is much more to throughput performance than simply using a faster connection interval. Things you may want to check if your peripheral device and app is using efficiently:

  • along with the 15ms interval request
  • use writes without response vs. with response
  • use larger MTU sizes
  • use the extended data length (aka Data Packet Length Extension)
  • request to use LE 2M PHY (if devices are capable)
  • and if throughput is critical, use L2CAP instead of GATT reads/writes

Keep in mind that because the peripheral requests to use these connection options does not necessarily mean the iOS device in the user's hands is capable of handing, or in a state to accept the requested parameters, and it may respond with a different set of parameters. You will want to gracefully handle whatever the connection parameters and capabilities end up being.

Are these connection parameters what you are requesting, or what iOS is responding with?

It could be that the iOS device is responding with a different set of parameters. You would want to check what the actual connection parameters are, and then determine if the change in throughput is simply due to that, or something else is going on.

I am not sure what documents you have been reading for your connection interval information, but I suggest to always refer to the official Accessory Design Guidelines for Apple Devices

The current connection parameters guidelines are as follows: Keep in mind that connection parameter requests may be rejected if they do not meet the guidelines.

General connection parameter request guidelines:

  • Peripheral Latency ≤ 30 connection intervals.
  • Supervision Timeout from 6 seconds to 18 seconds.
  • Interval Min ≥ 15 ms.
  • Interval Min ≤ 2 seconds.
  • Interval Min is a multiple of 15 ms.
  • One of the following:
    • Interval Max at least 15 ms greater than Interval Min.
    • Interval Max and Interval Min are both 15 ms.
  • Interval Max * (Peripheral Latency + 1) of 6 seconds or less.
  • Supervision Timeout greater than Interval Max * (Peripheral Latency + 1) * 3.

When Interval Max and Interval Min are both 15 ms like in your request, sometimes a 30 ms interval could be offered to better balance power and performance constraints.

Also, there is much more to throughput performance than simply using a faster connection interval. Things you may want to check if your peripheral device and app is using efficiently:

  • along with the 15ms interval request
  • use writes without response vs. with response
  • use larger MTU sizes
  • use the extended data length (aka Data Packet Length Extension)
  • request to use LE 2M PHY (if devices are capable)
  • and if throughput is critical, use L2CAP instead of GATT reads/writes

Keep in mind that because the peripheral requests to use these connection options does not necessarily mean the iOS device in the user's hands is capable of handing, or in a state to accept the requested parameters, and it may respond with a different set of parameters. You will want to gracefully handle whatever the connection parameters and capabilities end up being.

Hi

Regarding the request to use LE 2M PHY (if devices are capable)? how to use this connection I heard that the BLE 5 is defaulted to 1M PHY ?

Can you provide any sample code ?

Increase in Download Time from Sensors to Mobile with Recent IOS Updates
 
 
Q