To join the LoRaWAN network, the end-device must go through the activation procedure (End-Device Activation). The specification provides for two options for activating devices:
The device must contain the following values after activation:
The join procedure is always initiated by the end-device and consists of two messages exchanged between the end-device and the network server: join request (device → server) and join accept (server → device).
The join request message contains AppEUI, DevEUI, and a random DevNonce:
Join Request | |||||
---|---|---|---|---|---|
3 bytes | 3 bytes | 4 bytes | 1 byte | 1 byte | 16 bytes |
AppNonce | NetID | DevAddr | DLSettings | RxDelay | CFList |
For each end-device, the network server remembers the DevNonce values that were used before and ignores requests containing duplicate DevNonce values. In response to a join request, the server sends a join accept message.
Join Accept | |||||
---|---|---|---|---|---|
3 bytes | 3 bytes | 4 bytes | 1 byte | 1 byte | 16 bytes |
AppNonce | NetID | DevAddr | DLSettings | RxDelay | CFList |
where:
The DLSettings field [8 bits] has the following format:
DLSettings | ||
---|---|---|
7th byte | 6…4 bytes | 3…0 bytes |
RFU | RX1DRoffset | RX2 Data rate |
where:
Random numbers DevNonce and AppNonce are used to calculate session keys NwkSKey and AppSKey.
“Activation by Personalization” means that the DevAddr, NwkSKey and AppSKey values are directly written to the device (the device is personalized). According to the specification, each device must contain unique NwkSKey and AppSKey session key values so that the compromise of these values contained in one device does not lead to the compromise of other network devices.
With this activation method, the end-device does not need to go through the network join procedure, the device is ready for data transfer immediately after switching on.