In this blog, I would like to show how to configure the bandwidth on each BLE Connection. Throughput is always one of the hottest question on the BLE. How can the device get the maximum throughput? Also, how can the device configure each connection with difference bandwidth?

Throughput

For the Bluetooth 4.0/4.1, the theory of maximum throughput is up to 305kbps if all the device uses 100% time for communication.

However, some BLE central such as IOS have limited on the time for BLE communication. The minimum connection interval of IOS is 15ms. For example, it can send up to 7 packets per connection interval (given MTU = 188 bytes, Data length extension = 27).

The throughput on the IOS would be 1 / 15ms * 185 bytes * 8 bit = 96.35kbps.

Bluetooth 4.2

Bluetooth 5.0

Bandwidth configuration on Nordic Softdevice

For example, inside the softdevice specification of S140v7.01 (v2.1),

For example, the connection interval is 15ms. The GAP event length is set to 6 (6 x 1.25ms = 7.5ms)

// <o> NRF_SDH_BLE_GAP_EVENT_LENGTH - GAP event length. 
// <i> The time set aside for this connection on every connection interval in 1.25 ms units.

#ifndef NRF_SDH_BLE_GAP_EVENT_LENGTH
#define NRF_SDH_BLE_GAP_EVENT_LENGTH 6
#endif

It means that it only has 50% (7.5ms) time for bandwidth.