Hi Team,
We recently conducted a BLE throughput test by sending 2MB of data from the peripheral to the central on both Android and iOS devices. We observed significantly lower throughput on iOS compared to Android. We would appreciate any suggestions or best practices to improve BLE throughput on iOS.
Observations and Potential Bottlenecks:
Number of Packets per Connection Event: On all iPhone models tested, the average number of packets per connection event is only 5, regardless of the device model. Is this a limitation of iOS? Can this be adjusted at the application level?
Connection Interval Configuration: Our peripheral requests a lower connection interval (7.5ms) using the "Connection Parameter Update Request" packet, but iOS does not honor it.
Is there a way to configure or request a specific connection interval on iOS?
What factors influence iOS’s decision to accept or reject the requested connection interval?
Here are our stats done on different phones:
Notes:
Throughput Formula: Throughput = (1000ms * number of packets * packet size) / Connection interval (ms)
Both Central and Peripheral support BLE version 5.X.
Low power mode on iOS is disabled.
The application was in the foreground during the test on iOS.
Packet size after headers: 242 bytes.
Are there other factors or iOS configurations that might impact BLE throughput?
We would appreciate any insights or recommendations to improve throughput on iOS devices.
Selecting any option will automatically load the page