Yes, very much by design:
[…] you should realize that these frame counters reset to
0
every time the device restarts (when you flash the firmware or when you unplug it). As a result, The Things Network will block all messages from the device until theFCntUp
becomes higher than the previousFCntUp
. Therefore, you should re-register your device in the backend every time you reset it.
So, when using ABP for production, you should save the counters in non-volatile memory. For insecure debugging, one can disable the check.