Alternative LoRaWAN network-server:


I’m working on a stand-alone LoRaWAN network-server. Currently it provides unconfirmed data up, ABP, OTAA and a basic web-interface to manage applications and nodes (using a JSON-RPC api). More features will be implemented soon (confirmed data up, data down, handling of mac commands).

This project might be interesting when you’re planning to setup a private LoRaWAN network without the need of distributed routing. The project has two components:

A service which abstracts the communication with the gateways (Semtech UDP protocol) and uses MQTT to communicate with the LoRa Server.

The LoRaWAN network-server which at one end communicates with the lora-semtech-bridge (MQTT) and at the other end communicates with the application (MQTT). The latter communication is (currently) serialised in JSON format (data is in base64, more fields will be added like signal strength etc…). Example:


Feedback is welcome!

Over-the-air-activation OTAA with LMIC

How does this fit/relate in the TTN developments? Wouldn't it be possible to just configure the TTN software to serve as a private server?


This is not directly related to TTN development itself, but it is related in the sense that both backends (will) implement LoRaWAN. Of course it would be possible to configure the TTN software for a private network. However, a distributed network adds quite some complexity to the code (e.g. for service discovery and routing), which is not needed when all software runs on a private (trusted) network.


Sounds good. We are working on creating a private lora network with a raspberry Lora gateway and your software would fit right into it. We will check it out and let you know. What are you using it for?

(Daniel Wich) #5

Nice! This is the missing link for me, I'll check it out soon. :smile:


Please let me know how it works for you, feedback is more than welcome! Currently I'm using this project to play with LoRaWAN and learn some new things :smile: (btw. I just tagged a new version with restructured json-rpc api + api documentation)


Very promising. All my encouragement. Thank you!

(Murat Jumashev) #8

Super! Exactly what I was looking for.

(Jan van lit) #9

I have a problem. when i start the semtechbridge with mosquitto i see the packages come in, however when i start anything else with it, no packages show up at the bridge.
any idea anyone?
This seems to be a problem in docker, it runs fine the first time after reboot :frowning:


For the moment I only test with one node. The first trial is positive. Good job!
Your initiative of an open lora server is awersome!


Glad you solved the issue :smile:

(kaz) #12

Hi @brocaar, nice job.

We have a KerLink LoRa gateway at work.

I will try to redirect this to an instance of your server.

Just one question, since I'm quite new to docker. Do your DockerFiles for loraserver and lorabridge expose all the necessary ports to work between each other?


I think I should add the missing EXPOSE to the Dockerfile files, however, I had no problems which linking these containers and setting up a working environment.


I @brocaar, thanks for all your work. One question. I have setup the semtech-bridge and want to subscribe to node messages using a Ruby script. But if I'm correct the payload is gob encoded. Do you know of a way to decode the payload using Ruby?


I'm planning to replace the gob encoding by json encoding soon, but please note that the semtech-bridge only provides you the raw data received by the gateway(s). To get the payload data, you need to subscribe to the messages sent by the loraserver (which are in json) (so you get: gateway -[udp]-> semtech-bridge -[mqtt]> loraserver -[mqtt]-> your application). See also


Thanks for the info. The thing is I bought a hand sensor and I don't know the DevEUI so I can't create the node using the loraserver. Or I'm missing something :smile:

(Jan van lit) #17

Since i don't (want to) learn Go it is where i get stuck.
gateway data = { "topic": "gateway/fffeb827eb25c14a/stats", "payload": { "type": "Buffer", "data": [ 255, 137, 255, 129, 3, 1, 1,
payload is gob data as far as i can see in the code.
Hopefully this weekend i get a chance to get the node side working for me.
btw my application will most likely be a Python program.


If I use the TTN backend I got the following node_eui: 18A62D92
But how does this relate to the DevEUI?


Hi brocaar, good job, do you think it's possible to run your loraserver on a RPI?
Thanks for your initiative!


That should not be a problem at all I think :smile: