Downlink events not visible on the UI

Hi,
I have latest version - 4.14.0 with two end devices (axioma water meter and axioma heat meter). Uplinks are working as expected but what is strange is when uplink contains bit adr_ack_req:true then chirpstack server should reply with some downlink message right? But I dont see any records on the events/frames for these devices - what could be a reason of this?

I checked app server logs (trace level) and I can see there uplink - mqtt topic “eu868/gateway/…/event/up” and then nothing…4 seconds after I can see that server publish topic “eu868/gateway/…/command/down” so some message was sent but why this message-event is not visible on the event/frames tab on the GUI?

On the device frames tab I see only incoming frames
On the device event tab I see uplinks and also responses for mentioned downlink which was with code:“DOWNLINK_GATEWAY” description:“TOO_LATE”

Regarding to this TOO_LATE issue. If I understand correctly this issue could be caused by wrong RX1 timer? Iam using default timer (1 second?) but server is sending downlink after 4-6 seconds so its rejected by the gateway right?

Thx for answers
Tomas

Hello Tomas,

I think you did most of the troubleshooting, it’s worth increasing RX1 delay, especially if joins are working correctly.
Having rx1_delay=5 in your *.toml config file is a good place to start.

If this works, then it’s worth checking why you have so much delay.
On a cloud setup it’s not so uncommon, but if everything is mostly local, then you might have an issue somewhere (big time differences between gateway and chirpstack for instance).

Hmm I have all my chirpstack infra (GW, MQTT, APP,…) runnning on docker (synology NAS) and also LoRa gateway (mikrotik) on LAN and all are time synced with NTP so I dont know what could be wrong there.

I checked NTP again so we will see if this help. Do you know how this TOO_LATE mechanism exactly working? Which times and timestamps are compared?? My RX delay is currently configured to 10-14 seconds.

Tom

To me the TOO_LATE mechanism is generated by the Semtech part on the gateway (chirpstack only reporting what the gateway gave as error), so it’s worth looking at the logs on the gateway to see why it’s not accepting the downlink.
Don’t hesitate to switch it to verbose, it helps to have a better idea about what the gateway is doing.

I had cases with all components synched with GPS time and still had issue because of bug in implementing the time synch, so sadly you will have to tinker a bit around to find what is causing the issue.

Hmm I upgraded all components to the latest versions (mikrotik gw also), checked NTP sync but its better but I dont understand why there is so much delay between uplink and downlink:

image

13 second is much from my point. I set tracing level on the APP side and i can see that uplink message comes on 13:35:02:

{“timestamp”:“2025-09-08T11:35:02.973362Z”,“level”:“TRACE”,“fields”:{“message”:“MQTT event”,“event”:"Incoming(Publish(Publish { dup: false, qos: AtMostOnce, retain: false, topic: b"eu868/gateway/789a18ffff49d01c/event/up
{“timestamp”:“2025-09-08T11:35:03.886621Z”,“level”:“TRACE”,“fields”:{“message”:“Initializing InfluxDB integration”},“target”:“chirpstack::integration::influxdb”}

Downlink 13:35:14:

{“timestamp”:“2025-09-08T11:35:14.495483Z”,“level”:“TRACE”,“fields”:{“message”:“Downlink response flow”},“target”:“chirpstack::downlink::data”,“span”:{“downlink_id”:1431724445,“name”:“data_down”},“spans”:[{“deduplication_id”:“43acf434-aefc-4113-bd4a-71a8e2b06994”,“name”:“up”},{“dev_eui”:“8c83fc05008dc194”,“name”:“data_up”},{“downlink_id”:1431724445,“name”:“data_down”}]}
{“timestamp”:“2025-09-08T11:35:15.247278Z”,“level”:“INFO”,“fields”:{“message”:“Sending downlink frame”,“region_id”:“eu868”,“gateway_id”:“789a18ffff49d01c”,“topic”:“eu868/gateway/789a18ffff49d01c/command/down”,“json”:true},“target”:“chirpstack::gateway::backend::mqtt”,“span”:{“downlink_id”:1431724445,“name”:“data_down”},“spans”:[{“deduplication_id”:“43acf434-aefc-4113-bd4a-71a8e2b06994”,“name”:“up”},{“dev_eui”:“8c83fc05008dc194”,“name”:“data_up”},{“downlink_id”:1431724445,“name”:“data_down”}]}

What could be a reason of this delay?? During these 12 seconds I can see some messages on the logs but nothing related to my current device.
@brocaar any idea? Iam using default config file and I modified just codec max_execution_time=“5000ms” and rx1_delay=5 nothing else.

Yes, correct.
We can not see the “downlink” in the ChirpStack GUI.
We can only see ack/tack only.

I also hope we can see “downlink” in the ChirpStack GUI.

1 Like