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

BLE4 transfer speed slower on iPhone8/X than 5/6/7.

Hello-

Recently, we optimized our BLE4 transfer settings. With the same device, firmware, and payload, we get better transfer rates on iPhone5,6,7 than iPhone 8/X. On all systems the parameter settings requested by peripheral are accepted by iPhone.

Has anyone seen this problem? I am aware that BLE5 supports "data length extension" and is capable of potentially much higher transfer rates, but this would require (for us) an SDK upgrade and some re-architecting, so I wanted to exhaust the BLE4 options first.

On iPhone5S,6, and 7 we get 6-7KB/s.

On iPhone8/X and variants we max out at ~2.7KB/s.

The relevant current transfer speed settings are as follows:

nr52

SDK is 14.2.0, SD132

gap_conn_params.min_conn_interval = MSEC_TO_UNITS(15, UNIT_1_25_MS); /**< Minimum acceptable connection interval - how fast peripheral/central exchange data.*/;
gap_conn_params.max_conn_interval = MSEC_TO_UNITS(15, UNIT_1_25_MS); /**< Maximum acceptable connection interval (1 second). */
NRF_SDH_BLE_GAP_EVENT_LENGTH 24 //this is 30ms

I believe the GAP param change request is acknowledged on both sets of phones because in all cases my BLE handler hits this event:

case BLE_GAP_EVT_CONN_PARAM_UPDATE:

//and in this message I check (and report over UART) this result:

p_ble_evt->evt.gap_evt.params.conn_param_update.conn_params.max_conn_interval * 125 / 100);

This reports as 15ms for both iPhone5/6/7 where I see the speedboost and on 8/X, where I do not.

Related