I can receive data from the end device, but once the device is turned off, I cannot receive data unless I re-register the end device on TTN. Is this such a specification? Or was I doing something wrong?
How can you re-register a device?
As far as i know a DEVUI registered once cannot be registerd a second time!?!
What kind of device is it? Something of the shelf or some DIY build?
OTAA or ABP activation?
With FrameChecks or without?
Do you have access to a gateway and can you peek into the ttnconsole or in a packetlog on the gateway itself?
Quite a lot of questions but often neccessary to tracedown such beahavior.
Classic ABP issue where the device resets the internal frame counters. If you go to the TTN console for the device you can reset the frame counters when you reset the device. That should solve this issue.
A better solution would be to change the device to OTAA.
OTAA doesn’t solve the problem, it only moves it from frame counter to join nonce.
A LoRaWAN node has to have memory of what it has done before.
If you have a sufficiently effective random generator it effectively solves the issue. And as the nonce can only assume 64k values over its lifetime storing that in eeprom (without having to be concerned about wearing out the eeprom) is feasible, solving the issue.
The device used is ATMega328P.
Once the power was turned off, I could see the gateway log on the TTN, but I couldn’t see the device log.
I can check the device log again by reacquiring the EUI.
I am using ABP.
Others are currently being confirmed.
I don’t have the device right now, but I’ll try using OTAA right away.
No mystery here. You simply cannot cold start an ABP device with no knowledge of the past such that it starts over from frame counter zero, unless you also zero the frame counter at the server and in so doing expose yourself to replay attacks.
A properly designed node is required to maintain a memory of what it has done before; even a firmware upgrade can’t rezero the counter without hitting this issue.