I have a RN2483-based devkit (The Things Node) and try to get ADR running on it in both directions, i.e. have it reliably adjust DR up as well as down.
Where I do my tests, I typically see up to three more-or-less far away gateways, the SNR typically varies between 0dB and -10dB or so. From my understanding of SNR limits, I would expect ADR to adjust to around SF8-SF10 to keep around 10dB link margin - please correct me if I’m wrong.
Starting with SF11, ADR does seem to work: After 64 uplinks (i.e. ADR_ACK_LIMIT?) I get a downlink from TTN, and the DR is adjusted up to eg DR2/SF10.
Starting at SF7, it does NOT seem to work: while there are some uplinks after ADR_ACK_LIMIT, the node never adjusts DR down / SF up. I’ve also tried sending manual down-links, and requesting confirmation in up-links. After confirmation, the RN2483 reports a link margin of 5dB - i.e. I think ADR should command SF up. However even after hundreds of uplinks with marginal SNR and many missed packets, it remains at SF7 / DR5
I use the TTN arduino library and did not see any mechanism to actually perform ADR. In the RN2483 Command Reference it sounds like it’s all handled internally in the RN2483 after turning ADR on. During the startup code generated by the TTN library, ADR is turned on with mac set adr on, and I join using OTAA, so all network parameters should be controlled by TTN.
Am I missing something fundamental here?
Thanks for any pointers,