Don't understand ADR


I’m using propietary nodes based on Heltec Mini Shell. Some of them are installed in challenging locations which result is very low signal on GW (< -115 dBm) and low and variable SNR (-3 dB to -12 dB). The device works in Class C and uplinks a packet every 10 minutes.

I’m using the heltec lorawan stack and there is a flag for using ADR which is enabled. The join is always performed in SF7 which causes from time to time the device can’t join (I see the join request/join accept packets in the lorawan frames tab of the device but no in the data tab) and the device becomes unreachable for a time (I guess the device keeps rejoining until a success).

The question is that even ADR is enabled, it always works at SF7 and the network server doesn’t instruct the device to lower the SF (the network server sees a device packet every 10 minutes so there are enough data to adjust SF).

Is this behavior correct? Is there something I can adjust?.

Depending on the SNR values of the received packages, the ADR might not adjust your spreading factor. Keep in mind that the default ADR only lowers the SF and can’t raise it. Without seeing the SNR and RSSI of the received packages it is hard to tell if the ADR is “working correctly”

Furthermore, if you want to implement your own ADR algorithm you can do that
Then you can set your own thresholds.

If you’re experiencing SNR from -3 to -12, it seems right that it wouldn’t adjust the SF down.

How far is your node from your gateway?
May be the signal is not bad enough to change DR.
My ChirpStack changes the DR quite based on distance.

BTW, you can set in ChirpStack to limit to DR 0,1,2 only in the toml file.

1 Like