Meshtastic For The Greater Good

Last week, my city was hit by a tornado. That’s not surprising here in Oklahoma, and thankfully this event was an F0 or possibly even an EF0 — a really weak tornado. Only a couple roofs collapsed, though probably half the houses in town are going to need roof repairs, thanks to the combination of huge hail and high winds. While it wasn’t too bad, power did go down in a few places around town, and this led to an interesting series of events.

Chat messages were coming in like this: “That was a [power] flicker, yeah. Even took down my Internet.” Followed by “Whee, [fiber Internet] got knocked out and now Starlink has too many clouds in the way.” And after ten minutes of silence, we got a bit worried to see “Time to hide under a bed. … Is cell service back?” It is a bit spooky to think about trying to help neighbors and friends after a disaster, in the midst of the communication breakdown that often follows. If he had needed help, and had no working communications, how long would it have taken for us to go check on him?

How do you stay connected here?
avivi, CC BY-SA 2.0

I had already been exploring an open source project that might be able to help. A follower described a problem where communication could be cut off in the midst of a large protest in her home country, and she needed a way to stay connected in a crowd.

One of the possible solutions was Meshtastic, an encrypted wireless protocol that uses meshing to distribute messages and location data. It runs on a few different development boards, and some of the hardware is surprisingly affordable. For instance, the WisBlock Meshtastic starter kit is a mere $24.99. Use a USB-C cable to hang that off your phone, and you can connect to nearby metastatic channels, or create your own private channel.

The Magic

The Meshtastic radio magic comes from LoRa, a wireless protocol running on the sub-1 GHz bands. One of the winning features of that band is that no amateur license is required, up to a 1 W broadcast strength. If you have your Ham license, feel free to turn up the power — but with the caveat that amateurs can’t use encryption. And that’s one of Meshtastic’s features; it uses AES encryption to keep conversations private. More on the configuration in a bit.

I hear you radio geeks scoffing, “A measly watt?”  But people have managed 128 mile (206 km) LoRa contacts on quite a bit less than that full watt. Yes, that test did involve a weather balloon, but the second-place test was a still-respectable 103 mile (166 km) distance managed peak-to-peak across water. You may notice that both records required elevation. The 915 MHz band that Meshtastic targets is still pretty dependent on line-of-sight — no ionosphere skipping here. And with only a 1 watt output power, we’re not blasting though much earth.

So to make up for the less-than-stellar propagation of the frequency band, the Meshtastic protocol makes every node a potential repeater. If your radio can talk to your buddy’s radio up on the hill, that device works as a repeater, and rebroadcasts the packet, giving your message a much wider reach. By default, each packet is limited to three hops, and the protocol tries to be smart about not flooding the aether with useless echoes. But if you can get a couple of radios in elevated locations across your area, you can manage pretty good coverage.

Usefullness

OK, so what can you do with it? Keep in mind that LoRa isn’t winning any throughput contests. No streaming video or file-sharing here. Meshtastic works best when sending text messages, either directly to another radio, or to a shared channel. And if your radio knows where it’s at, it can send location data every few minutes to the primary shared channel. There are other modules, like sending telemetry data like temperature and humidity across the network, or a rather impressive experimental module that sends low bit-rate audio across the aether. The system was originally designed for friends going hiking, camping, or even hang gliding together.

Radio on the Hill

I have several use-cases where Meshtastic just might be the killer app. One is disaster recovery. If I can talk a few friends into stashing a radio, if tornado really comes and ruins our day, we’ll have a backup communication net to organize getting help where it’s needed. But on a day-to-day basis, I’m much more interested in giving one of the battery-powered radios with each of my kids, before letting them out the door. Suddenly don’t see the kid where expected? Ping the radio for a location update.

I have a 6 dBi antenna about 20 feet up in my back yard, trying to get all the range I can. I regularly get three and a half miles of coverage across town, with a few dead zones in valleys. Talking someone in the right spot into a repeater will make quite a difference on that front. And on the far end, I’ve established a pretty robust 10 mile link from the local mountain-top. Line-of-sight is king.

Getting Started

When I first discovered Meshtastic, the hook that really got me interested was that low price. A pair of WisBlock kits or Lilygo T-Beams gets you started, but the performance of the little PCB antenna isn’t amazing. And it’s nice to have a GPS module and battery for the radio. And of course you’ll want to 3d-print a case for it, because who wants to carry around a raw PCB and dangling antenna? There are some cases and even pre-assembled kits on Etsy and Tindie. And Rokland is one of the favored suppliers of the Meshtastic devs.

For a bit more power, there’s the Station G1 by B&Q Consulting that has an amplifier scaling output power all the way up to 3.5 W, if you want to turn off encryption and send your ham radio call-sign with each packet. To keep encryption on, you’ll need to limit the output to a single watt. Though my testing really indicates that the line of sight becomes a problem long before transmit power, and turning up the power doesn’t help that situation dramatically.

From there, you just need two or more radios with a shared channel. By default, Meshtastic radios use the LongFast channel, with a shared blank encryption key, as sort of a public channel. Something to be aware of is that if you broadcast location information, it goes out over the Primary channel. So you might want to set a private channel with a unique encryption key as your primary, and define the LongFast channel as a secondary, to participate in the public channel. To do that, in Lora settings, set the channel number to 20, and add a secondary channel named “LongFast” with the pre-shared key set to “AQ==”.

And with that, you’re set. You can track a vehicle or person, send text messages that don’t rely on the Internet or Cellular network, and even do a few extra tricks. One of those more interesting tricks is the Meshtastic support for sending packets on to a MQTT server. That’s a topic for another day.

If you’re looking for more information, there was a great FLOSS Weekly interview with a couple of the Meshtastic devs that I can recommend with some admitted bias. The official Meshtastic website and Github repository are good starting points, too. Beyond that, I’ve been peppering the Meshtastic Discord with questions, suggestions, and bug reports for over a month now, and it’s been a very welcoming community. If you have any questions, dive in. And look forward to more fun to be had with Meshtastic integrating with other projects.

60 thoughts on “Meshtastic For The Greater Good

    1. There’s actually support for the CardKB device which is pretty neat. One of the community members designed an all-in-one devices called the Meshenger which uses this. It’s pretty cool!

  1. I guess I’m just getting old and cranky, but being “cut off” from coms in a crowded protest or tracking your children when you let them out the door seems… I don’t have a great word. I can’t speak to risks of protesting in other countries but in US I’m already very over the “it has to be on social media or GTFO” mentality. And maybe elsewhere you could very validly be concerned about personal safety but in that case, speaking for myself, a tracker or something would not change my decision to go or not. If you already can’t send the kids out unsupervised this won’t fix that. I don’t know how old your kids are and I know there are real world issues this could help though.
    The project itself is cool though. I guess lots of merit to “nice to have” rather than “must have”

    1. That’s because he takes the problem on the wrong side. The gizmo on the kid is able to send a SOS and its position when required (a button is pressed). It’s not to track your kids, but, on the opposite, have them become a bit more confident. If they need help, they can “call”.

      A phone would do too, but, yeah, it’s not as magical as a DIY stuff.

        1. My kids regularly bolt from the car and run down any of 5 different trails before I even get my boots on. Having comms is great. A GPS is good too. The wife also wanders. She’s got a satellite beacon, but it’s pricey to ask her if she wants me to put all the potatoes in the coals. We’re trying to implement meshtastic, but the ergonomics of the current devices are a little weird, especially the T-beam. I should just spin up one of my own.

      1. “. Suddenly don’t see the kid where expected? Ping the radio for a location update.”
        How does that become ‘It’s not to track your kids, but, on the opposite”?

    2. Coms during a protest is a safety thing. It doesn’t have to be about blasting social media.

      LoRa would be horrible for social media anyway. Unless you are thinking about OG Twitter with a real 128 word limit, no pictures, no video, no emoji, no hyperlinks.

    3. It might get much more relevant when you get even older and possibly senile. We have many sad accidents every year with elderly people getting lost during winter, and following their every move or lockong them in in are bad alternatives.

      1. Cellphones in general don’t speak directly to each other (they can, but usually don’t) but via a long path with many cell towers, gateways and central servers in between. While generally robust, an event taking down cellular antennas (like a tornado) or swamping them (like a protest or festival) may disable tower-cellular communication, which disables the entire link.

        If I have two cell phones completely disconnected from the network and internet, I could set direct wifi or bluetooth links, but then still my chat(whatsapp), call and e-mail wouldn’t work without setting up special apps on the phone beforehand. You could share text files though, but usually only in distancea where yelling would also work (except in a protest).

        I don’t think there are many phones allowing a direct (or mesh) network using their cellular radio without a tower, which would be a great option except for the cellular operators, although I have seen phones with built in walkie-talkies.

        1. Even if not used, because AT&T can’t make profit from it, GSM standard support a mesh configuration. The cell tower can broadcast SMS to all entities that has authenticated with it. It used to broadcast emergency messages. The GSM specification requires the handset to authenticate to the network but does not require the network to authenticate to the handset. So any handset can also broadcast to any other handset in range provided it spoof a cell tower (not that hard to to with GSM).
          If you need longer range than the cell tower can provide, you’ll have to have a backbone and many (more and more in fact) tower use hi speed radio link to other towers which might have a fiber or sat connection to the internet. If you draw the shape of such network, it’s a mesh with some node with super power to reach other node, a bit like in LoRa for those in high altitude that can have longer line of sight to the other high gateway. In fact, as long as any average peer can have more than one connection, it’s a mesh network. Internet is the largest mesh network made by humanity. Even your phone is a mesh node when doing hotspot access point.

    1. Because cell networks are laid out in a star topology, not a mesh topology. They require a cell controller, functionally similar to what a router does in a WiFi network, to assign channels, initiate connections, etc. They have no capacity to communicate peer-to-peer. It’s sort of like asking why your laptop can’t serve Facebook to your neighbor.

      As far as why don’t they do that via WiFi, the answer is “there’s no money in it.” :(

      1. We have standard Wi-Fi mesh is called 802.11s https://en.wikipedia.org/wiki/IEEE_802.11s combine with standard Babel/B.A.T.M.A.N. routing which both have DDHCP implementation, which can replace level 3 internet provider by tomorrow but for some reason avoided, even by custom firmware.
        Why people keep adding 15-s standard instead of using existing standard is far beyond my comprehension.

  2. …does the project really not have a website? A chat channel is pretty much the least efficient method of finding out more about something. Might as well have a phone number to call.

  3. I like the concept in general but my intensive testing never showed the mesh functionality to work. You also won’t find anyone on YT demonstrating it working, all you ever see is people showing point-to-point connections. So absent proof, i consider it a honey pot, probably set up by some 3-letter agency. Also, the way you join additional nodes via the smartphone app looks a lot like someone is collecting all the encryption keys at the project’s central server.

    1. Did you already try version 2.1? Here’s live proof of a pretty big working mesh in Ukraine: https://mesh.in.ua/grafana/

      Also, the URL embedded in the QR is just used for sharing all the settings of the channels. You don’t need an internet connection to create it. “Someone is collecting all the encryption keys at the project’s central server” is just nonsense.

      1. ” i consider it a honey pot, probably set up by some 3-letter agency. ”
        ” Here’s live proof of a pretty big working mesh in Ukraine”
        = 2
        The math works out michimartin.

      2. I did try the 2.1 version of the firmware yesterday and am happy to report that it worked! I had the suspicion that the “store and forward” feature was the bit that was missing. This time it was quite easy to turn it on in the field via the android app. But in theory this should not be necessary. Also the traceroute feature was crucial to prove that messages did actually go through my dedicated repeater node as opposed to mere reflections from metallic surfaces (i did mount my repeater node on a steel observation tower.)

    2. Did you already try version 2.1? Here’s live proof of a pretty big working mesh in Ukraine: https://mesh.in.ua/grafana/

      Also, the URL embedded in the QR code is just used to store all the settings of the channel. You don’t need internet to create these URLs. “Someone collecting all the encryption keys on the project’s central server” is just nonsense.

    3. Check out S2 Underground channel on YouTube. He doesn’t have a video specifically about meshtastic, but he has several about comms and meshtastic is brought up in almost all of them.

  4. Meshtastic is great for what it is, but it’s hardly a disaster case communications network. I have several Meshtastic devices and love them for things like taking my family camping in unfamiliar wildernesses. Kids can roam freely and find their way back and/or I can find them if I need to. However, communication via those devices alone is difficult. You either have to connect some sort of hardware input or pair a cell phone. In a disaster where every milliamp counts, keeping a cell phone and a Meshtastic device going is a burden. (Which became apparent on our first week long camping trip using Meshtastic.) Meshtastic devices also only allow one device to pair at a time, meaning each person would need two devices.

    I want a decentralized platform where multiple people with phones can connect, read available messages and leave messages, both public and private. Perhaps some sort of push function when connected would be nice.

    I’ve been day dreaming about this since Hackaday did an article on Project Byzantium.

    https://hackaday.com/2015/04/28/meshing-pis-with-project-byzantium/

    PS: As a fellow Okie, I never pictured MP as the Hackaday HQ!

    1. Heya, fellow Okie! I’m actually down in Lawton, and we did a drive up Mount Scott to figure out what sort of range we could get, hence the map.

      Your thoughts on a decentralized platform makes sense. I’ve had something of a plan to do a very simple BBS over some radio technology for quite a while. There might be a place to build something like that using Meshtastic. They do have an experimental store-and-forward module that gets partway there.

      I agree that Meshtastic doesn’t hit every wishlist item for an disaster network. But it’s better than nothing, and growing into that role.

      1. Lawton?
        I attended Field Radio Electronic Equipment Repair Course at Fort Silly in 1975. Only made it to Lawton a couple times, once I stopped in at Ren’s Thrifty Auto Sales (for obvious reasons).

  5. I plan to experiment with the new T-Watch S3 that includes LoRa. I was thinking about using it for keeping track of your kids or grandma for safety during an emergency. The signal range is a little concerning but maybe a mixed-technology solution could work. I like the idea of using some sort of push notification to hand off cached messages. Now to find time to do it. 🙂

    https://www.cnx-software.com/2023/06/14/t-watch-s3-esp32-s3-smartwatch-supports-wifi-bluetooth-le-and-lora-connectivity/

  6. The problem with voluntary networks is that most people do not do things without rewards. Meshtastic will never be something pervasively global that can be relied on. I can’t even find a tool that shows meshtastic coverage. I know there is a high anti-crypto sentiment on Hackaday (for reasons that continue to elude me, I think it’s ignorance) but there is already a world wide network, that uses this exact hardware, and has implementation methodologies to do tracking, messaging, remote sensing, etc etc and yeah, emergency communications. But the important part is that those who create gateways to the internet to support the network get compensated for doing so. While the network is not fully global, the people who get better compensation are those who put nodes in previously uncovered places. Thee is still a lot of territory to cover.

    Meanwhile the helium map is clear and worldwide
    https://mappers.helium.com
    https://coveragemap.net/heatmap/

    1. We don’t need the Internet 2, though. LoRa literally stands for Low Range. Mesh networks are easy for small groups of individuals to deploy locally, and they have their own purposes so whatever pseudoeconomics you think is operating here does not apply at all. It’s like suggesting Helium as an alternative to walkie talkies.

      And people are skeptical of crypto because it is dumb and bad :)

      1. It’s actually “LOng RAnge” (in the context of sensor mesh networks, which often operate with single-hop ranges on the orders of tens of meters). And, if your needs can be met with a small number of few-byte messages per minute, some LORA configurations can reach orbit (with very low power requirements on both ends).

        I always find it useful to remind myself that the guy with a hyperdrive and the guy walking in the desert might not agree on the definition of “long range”…

        People might be skeptical of cryptoCURRENCY, but there are lots of cryptos… crytoZOOLOGY, for example 😛

    2. And yet we cover entire city and even country and cross-country communication with community Mesh network without any token or traffic barter: https://en.wikipedia.org/wiki/List_of_wireless_community_networks_by_region
      And while I agree that people who dismiss cryptocurrency/token ether really dumb (for example can’t even different between centralized scam which pretend to be cryptocurrency and properly distributed cryptocurrency with DAO as self-governments) or government beneficiaries/agents.
      I think crypto token/traffic barter just add unnecessary complexity in the only place were we can live without it.
      Centralized DNS/DHCP don’t get us very far, we need replace Internet with Meshnet.
      All we need to do is add to most popular OS(Custom firmware/BSD/Linux etc.): standard Wi-Fi Mesh with distributed DHCP, configured local traffic priority and add lightweight distributed consensus protocol against internal DDoS.
      Cheap local Wi-Fi network without traffic jams will convince people connect to the bigger networks especially if we made it as simple as one or couple tap/click or command away.

      1. Your post is full of dreams, but no reality. Please try again after building your own wifi based mesh network. tl;dr: wifi doesn’t work.

        Practical outdoor range with 2.4 GHz @ 150 Mbit/sec between nodes is limited to 300′. In Santa Clara, CA, a lot + road averages ~8000 sq ft. If everything was perfectly square (for easy math) that means each lot+road would be about 90×90 ft. That means 1 in 16 houses would need to host a node in order to get full coverage. However, distribution would be imperfect, so you’d likely need 1 in 7 houses, or 15% of residential zones, to host a node.

        This is merely one aspect about meshes that do not work.

  7. This article conflates lack of infrastructure (e.g. natural disaster) and overloaded infrastructure (e.g. concert, protest). These are two very different problems. In the former, long range comms can indeed be helpful, if there are enough participants. In the latter, the radio spectrum is overcrowded (i.e. noisy like a bar), resulting in zero throughput for all users. In this case more power is detrimental as you create more noise than signal.

    1. Line of sight is the magic. If you can get an antenna up above your rooftop, it helps a lot. From there look for hilltops and tall buildings, and try to talk people into letting you stash a radio. If you have true line of sight, you can do 5 km easily.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.