Hi, I’m building a custom TDoA-based RTLS on DWM3001CDK boards (QM33 SDK 1.1.1). I moved to raw driver calls (dwt_starttx/dwt_setdelayedtrxtime) after finding that FiRa’s OWR_UL_TDOA round usage validates and goes ACTIVE, but doesn’t actually execute as one-way ranging — traffic stays TWR-shaped (RANGING_INITIATION/RANGING_RESPONSE) and the UL_TDOA_NTF callback never fires, even with every documented OWR-UT session parameter set (tx interval, timestamp length, device ID, report config).
My current approach for anchor-to-anchor clock sync: a reference anchor schedules a delayed TX via dwt_setdelayedtrxtime() + dwt_starttx(DWT_START_TX_DELAYED), embeds that scheduled time (plus TX antenna delay) in the payload, and other anchors capture it with their own RX timestamp to derive a clock offset. In testing, the computed offset between two boards is wildly unstable frame-to-frame, not just noisy, essentially random across the full 32-bit range, even after accounting for the documented SYS_TIME latch behavior and forcing DWT_DW_IDLE before reading system time.
Questions:
- Is there a working example or reference design for wireless (non-EXTCLK/OSTR) anchor-to-anchor clock sync on DW3000?
- Is
OWR_UL_TDOAactually functional end-to-end in QM33 SDK 1.1.1, or is anchor-side reporting still incomplete? (fira_ul_tdoa_ranging_resultsonly wraps a genericfira_ranging_infowhosetimestamp_nsis documented[NOT IMPLEMENTED].) - Any guidance on getting a value from
dwt_setdelayedtrxtime()'s scheduling to actually reflect a coherent, monotonically-advancing time across repeated once-per-second transmissions?
Happy to share logs/code if useful. Thanks!