Hi,
I'm doing some experimental evaluation of BLE Long Range. I use the ble_app_att_mtu_throughput example with parameters:
- ATT MTU: 247 bytes
- Data length extension: 251 bytes
- Connection interval: 20 ms
- Connection length extension: on
- Preferred PHY: Coded
Using these parameters, I get an experimental throughput of 40.08 kbps. I also want to theoretically validate this, in the same way I did for 1Mbps and 2 Mbps PHY (https://devzone.nordicsemi.com/f/nordic-q-a/29269/theoretical-throughput-doesn-t-match-experiments-done-via-ble_app_att_mtu_throughput-example). But now I need to use the packet format of a Coded Phy packet, given below:
Using this information, I calculate:
- Tx-Time (full packet) = 80 µs + 256 µs + 16 µs + 24 µs + 257 * 8 * 8 µs + 24 * 8 µs + 3 * 8 µs = 17040 µs
- Rx-Time (empty packet) = 80 µs + 256 µs + 16 µs + 24 µs + 2 * 8 * 8 µs + 24 * 8 µs + 3 * 8 µs = 720 µs
- IFS = 150 µs
=> Theoretical send-time = 17040 µs + 720 µs + 150 µs * 2 = 18060 µs
But through previous questions (https://devzone.nordicsemi.com/f/nordic-q-a/29269/theoretical-throughput-doesn-t-match-experiments-done-via-ble_app_att_mtu_throughput-example and https://devzone.nordicsemi.com/f/nordic-q-a/28682/ble_app_att_mtu_throughput-throughput-calculation-packets-per-interval-data-length-extension) I know that the SoftDevice will first check if a full TX and RX can still be done before a next real packet exchange is scheduled. The timing for this is Tx-time (full packet) + Rx-time (full packet) + 150 µs * 2 = 2* 17040 µs + 300 µs = 34380 µs. However, this is already more than the full 20 ms connection interval... So it doesn't fit in there even once...
So in short, I'm a bit at a loss how to calculate the theoretical throughput for Long Range BLE...
Any help would be greatly appreciated. Thank you in advance.
Kind regards,
Mathias