Dear Nordic support,
We are experiencing a throughput issue with an nRF52840 dongle operating in the central role, running a custom application developed using nRF Connect SDK 2.9.1. The dongle is connected to an nRF54L15 DK acting as a peripheral using an HCI UART firmware. We are trying to measure maximum throughput by sending GATT notifications. Our goal is to send as many packets as possible within each connection interval. The setup involves a single connection with Data Length Extension (DLE) enabled, using a packet size of 251 bytes and an MTU of 247 bytes.
We are using the vendor-specific Quality of Service (QoS) event to monitor the number of packets sent during each connection event. Before starting the throughput test, we pre-fill all available ACL buffers with notifications using bt_gatt_notify_cb
. After this pre-filling, each time the callback is called, we immediately trigger another notification to keep the buffers full.
The problem is that the number of packets transmitted per connection event appears inconsistent and lower than expected. We observe significant variations in the number of packets sent and received (both CRC OK and CRC NOK) across consecutive connection events.
Example logs from the QoS events:
> 00> [00:14:25.649,100] <dbg> Ble: onQosEvent: QoS: counter: 65 - CRC recv ok: 5 - CRC recv nok: 0 - NAK: 0
> 00> [00:14:25.681,900] <dbg> Ble: onQosEvent: QoS: counter: 66 - CRC recv ok: 1 - CRC recv nok: 0 - NAK: 0
> 00> [00:14:25.722,900] <dbg> Ble: onQosEvent: QoS: counter: 67 - CRC recv ok: 0 - CRC recv nok: 0 - NAK: 0
> 00> [00:14:25.769,300] <dbg> Ble: onQosEvent: QoS: counter: 68 - CRC recv ok: 1 - CRC recv nok: 0 - NAK: 0
> 00> [00:14:25.813,000] <dbg> Ble: onQosEvent: QoS: counter: 69 - CRC recv ok: 1 - CRC recv nok: 0 - NAK: 0
Some details on our configuration:
-
CONFIG_BT_BUF_ACL_TX_COUNT
andCONFIG_BT_L2CAP_TX_BUF_COUNT
set to 20. CONFIG_BT_CTLR_SDC_MAX_CONN_EVENT_LEN_DEFAULT
set to 40000.-
Connection interval is 40ms, no latency, 4s supervision timeout
What are your recommendations for achieving a consistently high number of packet transfers within each connection interval? Are there specific settings or techniques you recommend for optimizing buffer filling and transmission speed?
Thanks in advance for your support,
Best regards