This course is a deep dive into the LoRaWAN 1.0.4 specification, aimed at end device developers who want to understand the protocol in detail. The course can also be used to help you to understand and validate existing LoRaWAN reference implementations, such as LoRaMAC Node and LoRa Basics Modem, by teaching you what these libraries are doing. You can use the learnings from this course as a starting point to develop your own stack in your preferred programming language, or to understand how to use a LoRaWAN stack in your application. This course will also teach you the structure of the messages going between device and network server, which will help you to debug the network layer of your application.

As well as referencing the LoRaWAN specification found in TS001-1.0.4 LoRaWAN® L2 1.0.4 Specification, we also introduce you to best practices found in of TR007 Developing LoRaWAN® Devices V1.0.0 and Technical Recommendations for Preventing State Synchronization Issues around LoRaWAN® 1.0.x Join Procedure to ensure your application considers security, battery life and optimal network usage.

The course is presented from the perspective of the end device, and does not cover the network server side of the protocol. The content is presented in the order that things occur in real time, starting with the device joining the network, and then sending and receiving messages. We also cover adaptive data rate (ADR), and Class B and Class C at the end of the course.