nRF52840 and S140. Packets per conn. event with iOS

Hi,

We have an application where I'm trying to maximise BLE data throughput to it's absolute highest I can get. Through reading docs/researching and doing some experiments, I think I've understood the relationship between max ATT_MTU size, length of data you send, using notifications, conn. interval, and num of packets per interval.

The issue I have currently is more to do with iOS but I was wondering if anyone had any relevant experience with developing ble applications for iPhones.

I developed a 'ble throughput benchmark test app' for my nRF52840 DK.

When connecting to some android devices I can achieve 1200-1300kbps throughput which is great. When I connect to an iPhone X running iOS15, the throughput slows down to about 600kbps. I used the nRF wireshark sniffer app and I noticed that, this is because, whilst with android, the DK can pretty much fill up the entire connection event with packets. But on iOS it seems to limit it to about 5 response packets per connection event. Even at the lowest conn. interval iOS supports (15ms) this leaves a lot of empty time between events, which slices my throughput in half.

I was wondering if anyone had experience working with iOS and knows any 'tricks' that could be used to get it to send more packets per conn. event and/or maximise throughput. 

I've already optimised GAP_EVENT_LENGTH to be as high as it can go, fully packing each packet's ATT payload (no wasted space) etc.

Related