Hello
I'm trying to maximize the throughput between a NRF52832 and iOS devices in both directions.
Currently, I seem to achieve about 400 Kbps from an iPhone 8 to the NRF52 using:
- CBCharacteristicWriteWithoutResponse
- maximumWriteValueLengthForType:CBCharacteristicWriteWithoutResponse
- canSendWriteWithoutResponse on iOS side.
This seem to be what I can expect considering the Apple WWDC 2017 talk about Core Bluetooth.
However, when I send data from the NRF52 to the iPhone, I cannot go beyond 128 Kbps.
I do this using:
- sd_ble_gatts_hvx()
- BLE_GATT_HVX_NOTIFICATION
- multiple calls to sd_ble_gatts_hvx() until the SoftDevice queue is filled up
- calling again sd_ble_gatts_hvx() as soon as I get a BLE_GATTS_EVT_HVN_TX_COMPLETE
In both cases, the interval is set to 15ms, PHY=2Mbps, ATT MTU set to 185 bytes, Gatt data length set to 251 bytes.
- How can I improve the throughput from NRF52 to iOS?
- Isn't it supposed to be the same speed in both directions?
Thanks!