-
Notifications
You must be signed in to change notification settings - Fork 512
LoRaWAN: versions and revisions
Tip
Read the included notes.md with the LoRaWAN examples for a quick starting guide: it includes the most useful details. This wiki answers questions for on average more experienced users.
RadioLib implements both LoRaWAN TS001 Specification 1.0.4 and 1.1. Confusingly, 1.0.4 is newer than 1.1, but 1.1 includes more security measures through additional encryption keys, and as such LoRaWAN 1.1 is preferred.
To activate a LoRaWAN 1.1 session, supply all the required keys:
node.beginOTAA(joinEUI, devEUI, nwkKey, appKey);
node.beginABP(devAddr, fNwkSIntKey, sNwkSIntKey, nwkSEncKey, appSKey);To activate a LoRaWAN 1.0.4 session, set the keys that are not available to NULL:
node.beginOTAA(joinEUI, devEUI, NULL, appKey);
node.beginABP(devAddr, NULL, NULL, nwkSEncKey, appSKey);Caution
Both 1.0.4 and 1.1 require the use of persistent values during the lifetime of a device. For OTAA devices, this includes a couple of nonces; for ABP, this includes all frame counters. This is typically done using NVM (non-volatile memory). Relevant examples for some popular platforms are available here. Please note that persistence is mandatory for any production device!
Regional Parameters (RPs) define all the LoRaWAN things that have to do with what is legal across the world. They are thoroughly crafted by the LoRa Alliance to perfectly adhere to all relevant local laws & regulations.
RPs are independent of the selected LoRaWAN version, although they are usually released at the same time. As we've seen for the LoRaWAN version, 1.0.4 is newer than 1.1. As the RPs are all about what is legal, it is best to use the most recent version here. As such, RadioLib implements RP002 Regional Parameters 1.0.4 as main RP. The main difference between 1.1 and 1.0.4 is the addition of LR-FHSS datarates in the latter: there is hardly any difference with respect to regulations.
The device doesn't need to know the Regional Parameters version, however you should enter the right value on the console.
Note
The CN470 band is implemented as specified in RP001 1.1 revision B, as the RP002 1.0.4 version is much too complex and neither The Things Stack nor Chirpstack support the 1.0.4 version at the time of writing (May 2025)._