Sharing my LoRa mesh tool

I built a mesh tool for IPv4 networking over LoRa (long range radio chip). It’s early stages but I’m happy to report I am successfully communicating with a Raspberry Shake set up in an outdoor enclosure on my rooftop. It supports LoStik and I’ll may write more support for the HATs in near future.

Release binaries:

The plan is to forward Shake UDP packets over the LoRa mesh to a single gateway. We’re planning a citizen seismic network on a volcano here in Canada but comms are a big challenge - hence the inspiration to write this tool.

So far I’ve tested it on a very small network using a Raspberry Shake and a general x86_64 Linux machine so beware, but you can assume reliable communication between devices that are in close-range and have direct line of sight. I’ve got more LoStik devices coming in the mail so I’ll be able to expand my testing capabilities and also hope to get it working on OSX.

This was my first project written in Rust so I’m curious if any other programmers have feedback on my code style in general, I fought rust’s borrow checker quite a bit!

I’m open to suggestions and contributions. MQTT, basic chat clients…seems to be a lot of potential.


This is really cool. Out of curiosity, why did you choose the rooftop?

Good question! I have a line-of-sight to nearby mountains from our rooftop and the next step in my development plan is deploying a prototype on a nearby peak. That will entail a properly buried vault and solar energy to sustain it. The enclosure on the roof will be replaced with a Pi 4 that will act as a gateway and weather station.

In the meantime it’s there to test out the comms and is the farthest opposite location of the house via my workstation.


I have done something similar over 433 mhz using new packet radio. I clean the udp data first and then transmit it about a mile and a half away. Zero packet loss - redundant data backup - and I also zero balance the EHZ data for compression which brought data usage from 30gb a month which caused overage charges on a GSM modem down to free 500kbps stream.

I wrote the software in Python to transmit the cleaned up udp data. It works really great and also reports status of the shake every 15 seconds to make sure good connectivity. I’ll look more into the LORA software later on as I think there are some things I wrote which can help compress lossless


First time I’ve heard of new packet radio and I will add it to my list of ham “things to try”. I’ve tested the LoRa link and I can achieve 50kbps in close range and 15kbps up to 10km range. Any chance the software you wrote is open on github? It looks like ultimately I’ll need to store the waveform locally on a large hard drive drive and retrieve it periodically.

Instead to accommodate the link limits I’ll need to develop a metric or two that can describe the data and fit in a 200 byte message that can be sent every few seconds. Any suggestions you have there are welcome of course - you may have solved a problem or two that I’m doing right now.