Maximising BLE throughput on IOS vs Android

Hi,

I am working on a project using the nrf52840. For legacy reasons we are using Nordic SDK version 15.3.0 and SoftDevice S140 version 6.1.1. 

I am trying to maximise throughput for a nrf52840 peripheral talking to an IOS or android phone. 

I have enabled the 2mbps PHY and DLE using sd_ble_opt_set. MTU size is 247.

On Android I get maximum throughput when I set the MIN/MAX CONN INTERVAL to MSEC_TO_UNITS(400, UNIT_1_25_MS) (close to 1.5mbps). 

If I do this when connecting to an IOS device I get packet loss, and very low throughput. Setting MIN/MAX CONN INTERVAL to MSEC_TO_UNITS(15, UNIT_1_25_MS) gives me about 800 kbps, which is better, but still short of what I get on android.

Does anyone have any suggestions about how to debug this issue?

I have looked at it with ble sniffing available, and have had a quick look, but it seems pretty similar.

Attached is a snippet of the ble sniffer, filtered for just the LE LL events

I am using the nrf connect app on android and a custom react native app on IOS

Android:

IOS:

Related