An ideal application for mesh networking is off-grid communication; when there’s no cellular reception and WiFi won’t reach, wide-area technologies like LoRa can be used to create ad hoc wireless networks. Whether you’re enjoying the outdoors with friends or conducting a rescue operation, a cheap and small gadget that will allow you to create such a network and communicate over it would be a very welcome addition to your pack.
That’s exactly the goal of the Meshtastic project, which aims to take off-the-shelf ESP32 LoRa development boards and turn them into affordable mesh network communicators. All you need to do is buy one of the supported boards, install the firmware, and starting meshing. An Android application that will allow you to use the mesh network to send basic text messages is now available as an alpha release, and eventually you’ll be able to run Signal over the LoRa link.
Developer [Kevin Hester] tells us that these are still the very early days, and there’s plenty of work yet to be done. In fact, he’s actively looking to bring a few like-minded individuals onto the project. So if you have experience with the ESP32 or mobile application development, and conducting private communications over long-range wireless networks sounds like your kind of party, this might be your lucky day.
From a user’s perspective, this project is extremely approachable. You don’t need to put any custom hardware together, outside of perhaps 3D printing a case for your particular board. The first time around you’ll need to flash the firmware with esptool.py
, but after that, [Kevin] says future updates can be handled by the smartphone application.
Incidentally, the primary difference between the two boards is that the larger and more expensive one includes GPS. The mesh networking side of things will work with either board, but if everyone in your group has the GPS-equipped version, each user will be able to see the position of everyone else in the network.
This isn’t the first time we’ve seen LoRa used to establish off-grid communications, and it surely won’t be the last. The technology is perfect for getting devices talking where there isn’t any existing infrastructure, and we’re excited to see more examples of how it can be used in this capacity.
Thanks for the great write-up! Btw – the android app (as of yesterday) now has an early alpha out: https://github.com/geeksville/Meshtastic-Android/blob/master/README.md
It would be awesome if anyone else wants to work on this (fun) project with me and I’m happy to help if you have questions.
You should work with the disaster.radio people, your goals are very similar
ooh! I had found their site but it looked more aspirational. I’ll send them a note. thanks!
They are further along than the website might suggest, reach out to https://github.com/fitzdoingprojects to get the latest skinny.
cool beans will do! thanks!
Do yo know APRS?
Oh yes, I’ve used aprs on previous projects and liked it. Though I think this has a lot of advantages for many users:
* similar range
* much longer battery life
* no ham licence required
* encrypted (legally)
* _super_ cheap existing hardware: $30
* ‘just works’ simplicity for most users
* standardized OLED UX for things like seeing texts or navigating with GPS.
Hello Kevin, I’m working with Lora on remote farms without cellular or wifi coverage. I’m interested in developing a mesh or repeater-like feature for non-line of sight esp32 nodes. Are you working on this or a similar solution?
yes, this project is intended initially for the ‘hiker gps communicator’ use case. but it is also made as a generalized reusable widget for comms in any application. It will let you push in packets and (slowly) get the packets out on some other node with the “how did that happen in between” being ‘not your problem’ ;-).
Of course _some_ amount of line of sight is needed to get sizable range, but it could be through a series of nodes.
The idea would be to either put your code into the same ESP32 device with the existing network glue, or talk to the ESP32 from your device over bluetooth or serial. That’s actually how the current android app does its thing.
Dear sir. First of all thank you for giving me this opportunity to speak
Well I am Vishal Meshram. And had developed a weather monitoring system capable of transmitting the data from Approx 2 Km.
The size of my system is is just a size of match box.
Which can be carried out to remote places through drones or any carrier.
I would be honored if by any means my idea or my work could be of some help to you.
I am also looking to develop a system where multiple transmitters can transmit the data simultaneously and must be received at a single point .
Therefore I will be needing your help ….
So let’s work together…….
And give something better to the society.
God bless…..
Hi Vishal, thank you for your message. I think this project might eventually (3ish months – after the initial ‘hiker focused mesh communicator app’ deliverable is first finished) work well for that. Also you might find some of my other comments I just made in this thread helpful.
Going forward perhaps we can talk on the developer chat page: https://gitter.im/Meshtastic/community
To Mr. Kevin,
I hope this message finds you well. I am intrigued and interested in your project. During my bachelor’s project, I implemented a mesh network of Lora modules for long range irrigation system that do not have cellular coverage as well as a server host on the mother communication Lora esp32 board that is connected with a proxy to be accessed with a dual authentication system to check on the crops and send commands (sending and receiving).
I would love to work with you on any project related to mesh networking or/and Lora.
If you are interested, send me an email on abdullah17khaled@gmail.com
Hope you have a good day.
thank you
Hi Tom, I am using lora to control a water pump on my farming property but would like to explore mesh so I can add in other nodes ( weather station, cattle water storage etc ) but my excitement peaked when I thought this small form messaging node, potentially using Signal ( that we already use ) to communicate between our ambulance teams in case of call-outs during power outages that frequently take out our cell tower. I will be watching this project closely.
This is cool. I’ll contact you tomorrow after work to see if my skill set would be of any assistance. Used to work in electronics manufacturing as a prototyper and coder/debugger. Been really into overclocking again, and I’m honestly bored with it at this point… Sounds fun!
that would be awesome. either post on our devchat channel: https://gitter.im/Meshtastic/community
Or send me an email.
+1 on getting in touch with Disaster Radio. It would be great if these LoRa projects were interoperable.
Code
https://github.com/sudomesh/disaster-radio
Protocol
https://github.com/sudomesh/disaster-radio/wiki/Layered-Model
Devices
https://www.aliexpress.com/item/4000396836096.html
App
https://play.google.com/store/apps/details?id=tk.giesecke.disaster_radio
Twitter
https://twitter.com/disastrradio
Hackaday.io
https://hackaday.io/project/170069-disaster-radio-lora-mesh
Does LoRa have enough bandwidth for voice? I’ve been curious about a mesh voice solution that can be encrypted without needing a license(unlike business encrypted two way radio).
Alas no. At least not at the spreadfactors we need to use to achieve good distance. Lora is not a good fit for voice.
Serval Mesh network might be the solution you are looking for, runs on Batman protocol. It’s encrypyted, peer to peer, and free.
Could be an application for a super-low bitrate codec such as Codec2 at 700bps. You’d still need to tackle CPU time needed to encode/decode samples, and maybe make it not-quite-realtime so if radio’s bitrate drops below 700bps (due to channel congestion, interference, etc.), you’d buffer the clip and play it back once it all arrives.
Hi Kevin,
That’s a great thought and looks like it has a broader extension scope.
I can help I with making Prototypes and basic firmware. Let me know.
Regards,
Nethra
That would be awesome. How about we chat on our devchat? https://gitter.im/Meshtastic/community
Hi Kevin,
I’m looking for communicating over Lora with PGP encrypted strings when in range (and otherwise I fallback to the M2M Simcard), I already build an apk which is encrypting everything client side, but as you can imagine “hello world” is slightly longer encrypted by a 4K key. Do you think it will have limitations / any idea what will be a save string length maximum?
Kind regards, Patrick
Hi oh yes, sending a large PGP key over lora is very expensive. Which is why I went with preshared keys, then the only cost is about 3 bytes of IV (in addition to some bytes which I was already sending). There is more info here, perhaps it will be useful to you? https://meshtastic.discourse.group/t/encryption-review-requested/195
Well, it certainly is an interesting approach, I will dive into it later.
@Kevin, there’s a typo in the url to the md file, https://github.com/meshtastic/Meshtastic-device/blob/master/docs/software/crypto.md is written as cypto.md in your page.
I’d like to try this project, but I only have the esp32 lora, yet the instructions say ttgo or t-beam. Is there is there an esp32 specific section for this project ?
I am working on a system where LoRa module1 forwards packets. In this setup, when a user is connected to module2 (linked to an ESP32 board and serving as an access point), and they enter a URL like google.com on their smartphone, I intend for the request to travel from the user’s device to the ESP32, then to LoRa module2, further reaching LoRa module1. Module1 is connected to a Raspberry Pi, which is in turn connected to the internet. The Raspi should forward the request to the internet, retrieve the response, and send it back to LoRa module1. Finally, LoRa module1 should relay the response back to module2, which can then be accessed by the user on their smartphone. The primary goal is to enable the user to view basic HTML text-based websites through this LoRa network.
I’m also doing the same with LWIP, I tried capturing packets on all ports promiscuously but my ESP32 crashes many times because it gets some threads locked. It’s a hell of a project, I had many headaches and still no working prototype. Provably would implement just a proxy/VPN/ssh tunnel using only one port.