Intermittent BLE Notification packet loss with nRF52832

Hi everyone,

I have an interesting issue to discuss. I'm developing a BLE peripheral based on Telit BlueMod +S50 (nRF52832) & NCS v2.7.0. I send data on regular, long intervals to the BLE peripheral via UART, which is forwarded to the connected BLE central (based on ESP32C3) via BLE notifications. Connection interval is 50ms, latency is 0, and supervision timeout is 5 seconds, PHY is 1M, and no data packet length extension is used.

I have observed that the notifications have a loss rate of 0.5-1.5 %, when sent at an interval of 1-5 seconds, even though both BLE modules are only 15 cm apart. Interestingly, an interval of 0.3 seconds has a 0% loss rate, even over extended testing duration (72hrs). Since the data is not too long (15 Bytes), and the intervals are relatively long (not a "streaming" case), it doesn't seem to be a buffering issue, rather a timing issue.

Has anyone faced this before? Also, is there a throughput sample available that works with notifications (instead of writes)?

  • Hi,

    Packets successfully added to the notification queue in the Bluetooth stack should not be lost. Notification packets are re-transmitted until they are acknowledged by the receiver. The link will be considered lost if a packet fails to be received after x attempts (number of attempts is dependent on the supervision timeout and connection interval set for the given connection). Does your code ensure the notification send function always returns with success?

    Has anyone faced this before? Also, is there a throughput sample available that works with notifications (instead of writes)?

    Below is a sample I create to simulate sending of sensor data. It can also be used to test throughput.

    7673.send_sensor_samples.zip

    Best regards,

    Vidar

Related