Digital Matter LoRaWAN® stack join schedule
Digital Matter devices, based on LoRaWAN™ technology, will attempt to join a LoRaWAN network. The join is attempted when they are set to Over The Air Activation (OTAA), which is the default setup. The join requires an exchange of messages, initiated by the device, to the network, to do a key exchange and establish the keys for the subsequent communication.
This article explains the expected join schedule of the device. The schedule stops when the join is completed. Complete is when the network accepts and responds to the device, and the device hears the response.
The join may not complete for these reasons, resulting in the schedule of retries described at the bottom of this article:
- Device is not in range of the network.
- The network can hear the device, but the device is out of range to hear the response.
- The device is not setup on a network.
- The device is setup with the incorrect keys (Dev EUI, App EUI, App Key).
The schedule for attempting the join is as follows:
- The stack will send up to 3 join requests each time the device would normally transmit (heartbeat, tracking message, stats message).
- The requests will be throttled back with a varying duty cycle:
- 1% transmit duty cycle in the first hour after a reset (~2.5 minutes between the 3 join requests at SF12)
- 0.1% transmit duty cycle in the next 10 hours (~25 minutes between the 3 join requests at SF12)
- 0.01% transmit duty cycle thereafter (~250 minutes between the 3 join requests at SF12)
- If you have the device set to rejoin every 7 days, it will reset after a week, and restart the back off procedure from 1%.
- So the average time between join requests over a 7 day rejoin period would be in the worst case as low as 2 hours.
- In the US915 and AS923 regions the default join spreading factor is SF10, so the time between requests is roughly 4x faster, but the average time spent on-air will be the same.
Consider this example:
Time | Event | Action | Comments | |
---|---|---|---|---|
0d00h00 | Heartbeat Period Expired, day 0 | Join Attempt 1 | 2.5 minutes between attempts since device has just turned on | |
0d00h03 | Join Attempt 2 | |||
0d00h06 | Join Attempt 3 | |||
0d04h00 | Trip start | Join Attempt 1 | 25 minutes between attempts, since more than 1 hour has elapsed | |
0d04h25 | Join Attempt 2 | |||
0d04h50 | Join Attempt 3 | |||
0d05h15 | Trip end | Join Attempt 1 | ||
0d05h40 | Join Attempt 2 | |||
0d06h05 | Join Attempt 3 | |||
1d06h05 | Heartbeat Period Expired, day 1 | Join Attempt 1 | 250 minutes between attempts, since more than 11 hours has elapsed | |
1d10h15 | Join Attempt 2 | |||
1d14h25 | Join Attempt 3 | |||
1d20h00 | Trip start | Join Attempt 1 | ||
2d00h10 | Join Attempt 2 | |||
2d04h20 | Join Attempt 3 | |||
2d08h30 | Trip end | Join Attempt 1 | ||
2d12h40 | Join Attempt 2 | |||
2d16h50 | Join Attempt 3 | |||
3d16h50 | Heartbeat Period Expired, day 3 | Join Attempt 1 | ||
3d21h00 | Join Attempt 2 | |||
4d01h10 | Join Attempt 3 |