This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

BLE_GATTC_EVT_TIMEOUT: Possible causes?

Hello,

I am still having troubles with the BLE_GATTC_EVT_TIMEOUT. The problem is that the error is not happening frequently and is hard to reproduce. It is also hard to attach a sniffer to each connection (and the nRF sniffer doesn't even work reliably) Here is what I have:

  • Scatternet of 8 Beacons running as concurrent central and peripheral
  • I send Write Requests but after a while the communication stalls for 30 seconds
  • I receive a GATTC timeout

I do have one beacon that will produce a similar fault very realiable. All Beacons are nRF51 Dongles of newer age with the S130 v2. It will connect to other beacons, the exchange a few packets, but then the link only sends empty PDUs. (THIS MIGHT NOT BE THE SAME FAULT)

image description

Is this a fault that I could potentially have made in my code? It looks like the Acknowledgement is never sent, but how could I possible interfer in this process with my code? Isn't this the SoftDevice's fault? Is it possible that I can decide to not acknowledge a write or to block it? Why is packet 155 an empty PDU, why is it not acknowledged directly?

Marius

Parents
  • What would happen if I were to slow to fetch all events from the event buffer? Would a BLE_GATTS_EVT_WRITE get lost inbetween and would never be answered by the SoftDevice? I have added two logs here from two connected nodes. Each of the nodes has other connections, but I filtered the log to show only the communication between the two. (TX_COMPLETE is generic though).

    Log A: http://i.imgur.com/bgdIyoN.png

    Log B: http://i.imgur.com/Bi7FMXZ.png

    At one point, node A sends a packet (marked with (4) at the beginning of the line), but node B does never receive this packet. Nor does it receive any BLE_GATTS_EVT_WRITE event. The WRITE_RSP after (4) is just the current event that is being processed, it is not a write response to this very packet. I read all coming events.

    After this, the connection is ended 30 seconds later with a BLE_GATTC_EVT_TIMEOUT. Any clues how I could proceed?

Reply
  • What would happen if I were to slow to fetch all events from the event buffer? Would a BLE_GATTS_EVT_WRITE get lost inbetween and would never be answered by the SoftDevice? I have added two logs here from two connected nodes. Each of the nodes has other connections, but I filtered the log to show only the communication between the two. (TX_COMPLETE is generic though).

    Log A: http://i.imgur.com/bgdIyoN.png

    Log B: http://i.imgur.com/Bi7FMXZ.png

    At one point, node A sends a packet (marked with (4) at the beginning of the line), but node B does never receive this packet. Nor does it receive any BLE_GATTS_EVT_WRITE event. The WRITE_RSP after (4) is just the current event that is being processed, it is not a write response to this very packet. I read all coming events.

    After this, the connection is ended 30 seconds later with a BLE_GATTC_EVT_TIMEOUT. Any clues how I could proceed?

Children
No Data
Related