DWM3000 RX Timestamp not updated on every packet, CIA processing does not complete


I’m doing security research using the DW3000 Evaluation Board using the software from GitHub - seemoo-lab/uwb-sniffer: A UWB Sniffer with accurate timestamps .

I’d need to be able to get accurate timestamps for every received packet. However when the timestamp is read out using dwt_readrxtimestamp(), the value changes only every few seconds.

According to the User Manual, the CIADONE flag (bit 10 of the status register) indicates that the RX timestamp has been calculated and can be read out.
I discovered through debugging that for most packets, CIADONE will never read 1 (waiting results in an infinite loop).
For the packets where CIADONE reads 1, the timestamp gets updated, but this happens rarely.

In the original source code, the STS mode is set to DWT_STS_MODE_1. When the STS mode is set to DWT_STS_MODE_ND (STS with no data), the timestamp is updated for every packet, however then the captured packets all are empty.

The User manual says “Where the CIA is
configured to operate on the STS which occurs later in the packet, the CIADONE event
status flag bit is not set until CIA algorithm has completed its processing.”

I have a few questions on my mind:

  • Does the CIA configuration refer to the STS mode?
  • Are there other reasons why the CIA processing may fail?
    • Are there any configuration options that may let the CIA processing fail for some packets?
    • Does the success of CIA processing depend on the format / validity of incoming packets in some way?

I’d be thankful for any suggestions!

Hello sbraendle,

this sounds a bit like the problem we had. When receiving a packet we got RXPRD, RXSFDD, RXPHD, RXFR and RXFCG flags set, but not the CIADONE flag. We are not using STS.
I solved this issue by increasing the time I waited from releasing RST signal and start of communication between host and DW3000. We used a fixed delay of 10 ms which was not enough. After increasing the delay I received the packets including the CIADONE flag.

Hope that helps.

Hi Iltis, thanks for your reply!
Unfortunately this didn’t solve the problem.
I’ll investigate in which way the receiver may be configured to not match the sender’s packet format. I found out some other flags are missing after receiving a packet.