Skip to content
Experimental sample implementation of LoRaWAN components to connect LoRaWAN antenna gateway running IoT Edge directly with Azure IoT.
C# C++ Other
Branch: master
Clone or download
Latest commit 7f73bc8 Jul 8, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/ISSUE_TEMPLATE Update issue templates (#130) Feb 15, 2019
Arduino Adaptive Data Rate (#142) Mar 6, 2019
Docs Update (#202) Jul 8, 2019
LoRaEngine Update (#202) Jul 8, 2019
Samples Add multi gw integration tests - No FullCi yet (#180) Apr 18, 2019
Template Enable Spi speed and Spi dev on arm template (#201) Jul 8, 2019
Tools/Cli-LoRa-Device-Provisioning CLI Device Provisioning Tool: bulkverify and new twin options: RXDela… Apr 5, 2019
.dockerignore Add stylecop to core projects (#93) Jan 24, 2019
.gitignore Improvements to simulated device load tests (#168) Apr 2, 2019
.gitmodules Adding doc for RAK833 USB Packet Forwarder Module (#45) Nov 29, 2018 Update Aug 17, 2018
LICENSE Migrated repositories Aug 22, 2018 fix status badge (#188) May 6, 2019
azure-pipeline-integration-test-steps-template.yaml Add multi gw integration tests - No FullCi yet (#180) Apr 18, 2019
azure-pipelines-buildpushiotedge-templates.yaml Add multi gw integration tests - No FullCi yet (#180) Apr 18, 2019
azure-pipelines.yaml Implement Dev Address cache in Redis (#185) Jun 27, 2019
stylecop.json Add stylecop to core projects (#93) Jan 24, 2019
stylecop.props Add stylecop to the LoRa lib (#95) Jan 25, 2019
stylecop.ruleset Add stylecop to the LoRa lib (#95) Jan 25, 2019

Build Status Build Status

Azure IoT Edge LoRaWAN Starter Kit

The LoRaWAN starter kit is an experimental cross platform private network implementation of the LoRaWAN specification built for connectivity to Azure IoT Hub. It enables users to setup their own LoRaWAN network that can connect to LoRa based nodes (sensors) and send decoded message packets to Azure IoT Hub for cloud based processing, analytics and other workloads. Alternatively, it allows sending commands from the cloud to the end nodes. The goal of the the project is to provide guidance and a reference for Azure IoT Edge users to experiment with LoRaWAN technology.



  • LoRaWAN 1.0.2 implementation (see LoRaWAN Specification Support for more details)
  • Device and Gateway management done completely through Azure IoT Hub.
  • Bi-directional communication between LoRa end devices and Azure cloud.
  • Custom packet decoding framework.
  • Identity Translation for LoRa devices with caching support.
  • Partial Offline and Casually connected Gateways scenarios.*
  • Easy deployment and setup using Azure ARM templates.
  • Small to Midsize Scalability Tests.
  • Simulator for development and testing without the need to own a Gateway.

LoRaWAN Specification Support

We plan to support the following key features of LoRaWAN 1.0.2 specification, however please note that not all of them are available as of today. Please refer to our release notes for more details on what is available.

  • Current supported Specification: 1.0.2.
  • Support of Class A and C devices.
  • Support of EU868 and US915 channel frequencies.
  • Activation through ABP and OTAA.
  • Confirmed and unconfirmed upstream messages.
  • Confirmed and unconfirmed downstream messages.
  • Multi-gateways.
  • Message de-duplication.
  • Support of MAC commands.
  • ADR Support.


The following should be completed before proceeding with the LoRaWAN starter kit development or deployment in your environment.

  • You must have an Azure subscription. Get an Azure Free account to get started.
  • We are based on Azure IoT Edge so it is important that you understand the concepts and deployment model for Azure IoT Edge. Refer to Azure IoT Edge documentation to see how it works.
  • Understand how LoRa and LoRaWAN works. A great primer is available at the LoRa Alliance website.
  • To test the solution on a device, you need to have a LoRaWAN Device Kit Gateway and a LoRa end node. We have some recommendations in the Tested Gateways section below.

Getting Started

We have a variety of ways you can get started with the kit, chose the appropriate documentation based on your persona and applicability.

  • Setup a LoRaWAN Gateway: We provide an easy to use Azure ARM template and deployment guidance to get you quickly started with the LoRaWAN starter kit. Use the Quick Start to setup a LoRaWAN Gateway and connect to LoRA end nodes.
  • Upgrade an existing installation: Refer to the upgrade guide for instructions and tips for a clean upgrade.
  • Develop and debug the LoRaWAN starter kit: If you are a developer and want to contribute or customize the LoRaWAN starter kit, refer to our Developer Guidance for more details on how to build, test and deploy the kit in your dev environment. We also support a simulator that allows for developing without the need of an actual device gateway.
  • Enable a gateway or device to be compatible with the starter kit: We have developed the LoRaWAN starter kit agnostic of a device manufacturer implementation and focussed on the specifics on underlying architectures (arm, x86). However, we understand that device manufacturers can have specific requirements; these could be specific to a gateway and the packet forwarders they use or to the LoRa nodes and the decoders the device may use. We have provided specific instructions on making these specialized hardware compatible with our kit. You can follow these instructions depending on your scenarios and also have your device gateway highlighted on our repo.

Known Issues and Limitations

Refer to Known Issues for known issues, gotchas and limitations.

Tested Gateways


The LoRaWAN starter kit is an open source solution, it is NOT a Microsoft supported solution or product. For bugs and issues with the codebase please log an issue in this repo.


If you would like to contribute to the IoT Edge LoRaWAN Starter Kit source code, please base your own branch and pull request (PR) off our dev branch. Refer to the Dev Guide for development and debugging instructions.

You can’t perform that action at this time.