Adr engine will never decrease data-rate

Good morning @brocaar .

We were wondering why ADR engine does never decrease the DR. For us it seems logical that the network states will be changing over time. We have devices in SF7 that are losing a lot of packages if we forbid SF7 and put them in SF8 (rejoining) it seems that they work better but the server seems to be always too optimistic about network state and always puts them as low as possible without taking into account packet loss.

Is there any reason why ADR engine does this? Will be changed in the future?

Another thing we were wondering is why the ADR engine takes nbrep, txpower and DR independendat. Could it be improved to take into account the 3 things mixed together?

Thanks.

This is intentional. When the ADR engine would lower the data-rate, devices would use more airtime which could result in a higher collision rate. If that would result again in the ADR engine deciding to lower the data-rate again, then you would have even more collisions and so on.

To make the ADR engine less optimistic, you can increase the installation_margin in loraserver.toml.

Another thing we were wondering is why the ADR engine takes nbrep, txpower and DR independendat. Could it be improved to take into account the 3 things mixed together?

I think it does? It will detect the packet-loss and adapts the NbTrans value accordingly. The TXPower is only decreased when the ADR algorithm reached the highest possible DR.

But what if it is not about the collisions. As we try to avoid collisions with random sends during the day. It’s unsual see our devices send at the same time.

We have some devices near a police station and they seem to have a signal jammer. When it’s turned off network seems to work fine and devices tend to go SF7 (ideal state) but when the jammer is on around 50-75% of packets get lost and devices don’t go to higher values. I know this is not fault of lora server. We tried to change the MAX and MIN DR but devices are already in position and we cannot go device per device rejoining the network.

Couldn’t this be parametrized in any way? Or maybe just only when we change the MAX-MIN DR value?

And the other part. We were thinking of “if I have lost X packages dont only adjust NbTrans adjust power too and check”

Thanks