Hi
We're seeing uplinks processed and forwarded to the application even when there is a very large discrepancy between gwTime and nsTime in rxInfo. This is causing out-of-sequence readings downstream in our interval-based application, since the reading is effectively timestamped incorrectly relative to when it was actually measured.
Example:
"uplinkId": 52089,
"gwTime": "2026-06-24T07:29:57.261191+00:00",
"nsTime": "2026-06-24T08:39:19.111590107+00:00",
"timeSinceGpsEpoch": "1466321415.261s"
Drift here is approximately 69 minutes 22 seconds. Despite this, the uplink was decoded, processed, and delivered via integration with no error, warning, or flag of any kind in the event payload.
Environment:
ChirpStack v4
Device class A, LoRaWAN EU868
Confirmed uplinks
Devices are on sites with known weak RF conditions / retransmission behaviour
Question / request:
Is there any existing mechanism (event code, log level, or configuration) that flags or surfaces this kind of drift on an uplink event, beyond rx_timestamp_max_drift?
We understand rx_timestamp_max_drift only governs which timestamp ChirpStack trusts internally (falls back to another gateway's timestamp, or server time) — it does not reject the packet, and it does not alter the raw gwTime/nsTime values exposed in rxInfo. Can you confirm this understanding is correct?
Would it be feasible to have ChirpStack optionally reject or flag uplinks where gwTime/nsTime drift exceeds a configurable threshold, rather than relying on downstream consumers to calculate and validate this themselves?
Impact:
For interval-based metering/telemetry applications, a reading with a significantly delayed or drifted timestamp can be worse than no reading at all, as it risks being allocated to the wrong time period downstream.