Hello Nordic!
I am using an Android phone and a nRF51822, and I'm performing BLE speed tests.
For these two devices the theoretical maximum is given by 4 * 20 / 0.0075 = 10.66kBps
, however, I am measuring half of that (around 5.2kBps
). To diagnose the cause I analized the BLE snoop file and discovered that in fact, for every 2 connection intervals only 4 user data packets were sent, instead of the expected 8. Additionaly to the 4 user data packets, 2 HCI event packets were logged and identified as Number_Of_Completed_Packets_Event
. The last slots of the second conenction interval are not used at all.
After some research, I understand that these HCI packets are used to perform flow control. Is there any way to disable or work around this feature? Otherise I will never be able to use the maximum BLE bandwidth.
The snoop file shows the folowing data:
... | P H C P | H C _ _ | P H C P | H C _ _ | ...
Legend:
| - beggining of connection interval
_ - unused slot
H - HCI packet
C - User request data packet (Write Command) sent by Central
P - User response data packet (Notification) sent by Peripheral