OTAA best practice: how to not join every time?

And:

As an aside, since version 1.0.0 the RN2483 mac save command saves much more, and does include the frame counters, but no mention of the pending MAC command responses. (But maybe more recent versions even include that?)

See also How to persist LMIC OTAA parameters with an ESP32?