I’m facing an issue that I don’t fully understand. When my end-node (RAK Field Tester) sends a payload to a gateway connected via UDP, everything works fine. I receive a single payload on the server, and the downlink with network data is sent as expected.
However, when the uplink payload is transmitted through a mesh relay, my server receives two uplinks with the same FCnt, leading to UPLINK_F_CNT_RETRANSMISSION, and no downlink is sent. The test is with a single relay.
At first, I suspected that the mesh network was having difficulties handling ack, so I deactivated confirmed uplinks, but the issue persists.
I’d like to understand which settings I need to adjust on my server or gateway OS to ensure that only a single uplink is received when using a mesh gateway.
After some testing and MQTT supervision, the issue seems to come from the ACK command not reaching the device when it is connected to a relay node.
From the logs of my relay, I see the following error: Handle mesh event error: Tx Ack error: TOO_EARLY.
I understand that I need to reduce the RX delay. I tried modifying my /etc/chirpstack-concentratord/concentratord.toml file by copying it from the example folder in the sx1302 directory, and add
In the LoRaWAN specifications the RX2 delay is defined as RX1 delay + 1 second!
You can set RX1 delay from 1 to 15 seconds and RX2 delay from 2 to 16 seconds.
But RX1 and RX2 delay parameters have to be the same in the devices and in the server!
When a device configured for Confirmed UpLinks do not receive confirmation DownLink, it can re-try the same UpLink after 1 to 3 seconds after RX2 window is closed. That means the minimal time between two re-tries of the same UpLink can not be less than 3 seconds.
If you use more than 1 Gateway it is normal to see more than 1 same UpLink in the Gateways Log, if there is any. I’m not using the ChirpStack server and don’t know what logs are available.
Thanks! It’s now working fine, and the downlink is successfully sent to the device via the relay.
However, I’m at the edge of the border gateway’s coverage. When weather conditions are favorable (often during low cloudy weather), the device is received by both the relay and the gateway.
In my device events, when both receive the transmission, I see retransmissions—the same uplink but with two different rx_info entries, one from the relay and the other from the border gateway. If I understand correctly, there’s nothing I can do to ensure a single event? I also tried increasing the deduplication window up to 1000ms, but it didn’t change anything.
In this case force the DownLinks to be in RX2 slot only without using Relay Gateway at all.
But while the Gateway is transmitting DownLinks in RX1 or RX2 slots, then it do NOT receive ANY UpLinks!
RX2 slot is in DR0/SF12 only and a Downlink, even empty one, takes over 1 second!
To not see re-transmitted messages, you can try to lower the deduplication window, not to increase it!