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

sniffer detects LL infinite loop

tr4x_87dB_0xc7_1024_7.5ms_おかしい.psdWe are using a transmission scheme where we tag each of our packets with a block number and fire them off using write without acknowledgement. The receiving side looks for "holes" (missing block numbers) and requests the re-transmission of those missing blocks.

While testing functionality with the central app running on a PC and using the MasterEmulator.dll, we noticed the Central sometimes "locked up" and resent the same packet "forever", well, hundreds of times until some watchdog timer kicks in and the connection is disconnected.

The packet is sent at an interval of ~7.5ms, and the channel always changes, so the radio timing sync is working OK. But there is a vicious circle where the SN and NESN get out of sync.

image description

I have not delved into the details of the link layer, but I would imagine there should be some sort of retry timeout mechanism, who knows?
I believe the connection interval used was 7.5ms, and the peripheral is using S130 2.0.0-7 Alpha with app_sched_execute(); to process the Q. The peripheral may well have been operating near its limit, which may have caused a critical delay which sparked this sequence, but no matter how you get into it, this infinite loop is a LL state machine problem, bug or feature.

We will be transitioning to the S130 release version image soon enough, and the problem may, just go away. Or then again, it may not.

Hope some one has time to address the issue. Thanks. Karel.

Minor edit: added the trace file (sorry, its a TI trace file).

Parents
  • Hi Karen,

    Could you send a full trace ? If possible, please use Nordic Sniffer, we prefer to analyze data capture from that.

    From the trace what I can see is that the packet from Slave is often missing and it sent strange NESN. Please make sure you put the sniffer close to the master and slave.

    I'm not sure what "The receiving side looks for "holes" (missing block numbers) and requests the re-transmission of those missing blocks." for. BLE is a reliable protocol,there will be no packet missing, packet is always retransmited until it's ACKed.

    It's by default that if a packet is not ACKed after a "connection supervision timeout" the connection will be terminated.

    How often do you see the issue ? Which nRF51 chip are you testing with (please read the laser marking and compare to the revision overview here )

Reply
  • Hi Karen,

    Could you send a full trace ? If possible, please use Nordic Sniffer, we prefer to analyze data capture from that.

    From the trace what I can see is that the packet from Slave is often missing and it sent strange NESN. Please make sure you put the sniffer close to the master and slave.

    I'm not sure what "The receiving side looks for "holes" (missing block numbers) and requests the re-transmission of those missing blocks." for. BLE is a reliable protocol,there will be no packet missing, packet is always retransmited until it's ACKed.

    It's by default that if a packet is not ACKed after a "connection supervision timeout" the connection will be terminated.

    How often do you see the issue ? Which nRF51 chip are you testing with (please read the laser marking and compare to the revision overview here )

Children
No Data
Related