Skip to content

chirpstack/lorawan-device-profiles

Repository files navigation

LoRaWAN(R) device-profiles

This repository contains device-profiles for LoRaWAN devices grouped by vendor. A device-profile contains important information about the capabilities of the device. For example which LoRaWAN mac-version has been implemented, which regions are supported, if the device supports Class-B or Class-C, etc... The aim is to build a complete list of LoRaWAN device-profiles that then can be imported by ChirpStack or potentially any other LNS.

Why not use the TTN lorawan-devices repository?

Unfortuantely the https://github.com/thethingsnetwork/lorawan-devices repository can no longer be used as a whole. The open-source license has been removed and users are not allowed to extract and/or reuse the Device Repositoryas as a whole or a substantial part of its content. This prevents ChirpStack users (and other LNS providers) from importing this repository into their database.

The goal of this repository is to provide an open-source database of LoRaWAN device-profiles that can be freely imported.

Adding a new device-profile

Fork and clone

  • Create a fork of this repository (if not done already).
  • Clone your local fork to your computer.

Starting the web-interface

  • Please make sure that you have Docker Compose installed.
  • In the root of this repository, execute docker compose up.
  • Once Starting server, bind: 0.0.0.0:8090 appears, open the web-interface in your browser by navigating to http://localhost:8090.

Add Vendor(s)

  • In the left menu, click the Add vendor button.
  • Fill in the form and click Submit.

Add profile(s)

  • Select a vendor in the left menu (if no vendor is selected).
  • Click Profiles in the left menu.
  • Click the Add profile menu entry.
  • Fill in the form and click Submit.

Add codec(s)

  • Select a vendor in the left menu (if no vendor is selected).
  • Click Codecs in the left menu.
  • Click the Add codec menu entry.
  • Fill in the form, before clicking Submit it is a good idea to click Run codec tests.

Add device(s)

  • Select a vendor in the left menu (if no vendor is selected).
  • Click Devices in the left menu.
  • Click the Add device menu entry.
  • Fill in the form and add at least one firmware version by clicking the Add firmware version button.
    • For each firmware version you can select one or multiple profiles and optionally a codec.

Update vendor

  • Select a vendor in the left menu (if no vendor is selected).
  • Click Update vendor in the left menu.
  • Update the vendor by selecting the devices that you added in the previous step.
  • Click Submit.

Create pull-request

Once you have added the vendor(s), profile(s), codec(s) and device(s) you wish to add to this repository you must commit the changes using git, push these to your fork of this repository and create a pull-request in GitHub.

Structure

Example structure for an example-vendor with an example device:

vendors/
└── example-vendor
    ├── codecs
    │   ├── example.js
    │   ├── test_decode_example.json
    │   └── test_encode_example.json
    ├── devices
    │   └── example.toml
    ├── profiles
    │   └── example-EU868.toml
    └── vendor.toml

Please take a look at the vendors/example-vendor example documented configuration files.

vendors/example-vendor

This is the root of the example vendor. It must contain a vendor.toml file. This vendor.toml.

vendors/example-vendor/codecs

This directory contains the payload codecs. Codecs can be used by one or multiple devices. E.g. some vendors have a generic payload codec.

Each codec is expected to have tests for encoding and decoding. If the codec filename is example.js, then you should create two test-files called test_decode_example.json (thus + test_decode_ prefix and .json extension) and test_encode_example.json.

vendors/example-vendor/devices

This directory contains the devices. Each device will have its own .toml configuration.

vendors/example-vendor/profiles

This directory contains the profiles. These profiles can be used by one or multiple devices. The profile also defines the region.

License

This repository is distributed under the MIT license. See also LICENSE.