Learn by Hamming



MESHTASTIC: A Ham Gateway Drug

This post draws heavily from a presentation Chris N9CVR gave at a Fox Cities Amateur Radio Club meeting in summer of 2025.

What is Meshtastic?

In order to answer this, we need to back up a bit…

The ISM bands

ISM stands for Instrument, Scientific, Medical. The ISM bands are 6.78, 13.56, 27.12, 40.68, 433.92 and 915MHz (this band will be important later in this post!) and 2.45, 5.8, 24.125, 61.25, 122.5 and 245 GHz.

Uses of the ISM bands range from wireless power transmission, to microwave ovens, to WiFi, NFC and electrodeless lamps.

The 915MHz band is only allowed in ITU Region 2 (the Americas, Greenland and some Pacific Islands.

The overarching theme of the ISM bands is “Do whatever you like, but expect to be interfered with. And keep it low power.” Low power is defined as less than 36dBm effective radiated power (ERP), or less than 4 watts ERP.

So, What is Meshtastic?

Hold your horses…we still need to back up a bit!

LoRa

LoRa stands for Long Range. LoRa is a type of RF modulation called ‘chirp spread spectrum’. The technology is similar to frequency shift keying (FSK), except it uses frequency sweeps instead of static frequencies. Different speed or different direction sweeps can then mean different things.

NOTE! LoRa and LoRaWAN are two different things! Meshtastic does not use LoRaWAN and it isn’t compatible with it. Meshtastic uses peer-to-peer LoRa.

YouTuber Richard Wenner made a fantastic video describing how LoRa chirp spread spectrum modulation works:

YouTube player

FINALLY. What IS Meshtastic?

Meshtastic® is a project that enables you to use inexpensive LoRa radios as a long range off-grid communication platform in areas without existing or reliable communications infrastructure. This project is 100% community driven and open source! (This description is lifted directly from Meshtastic’s documentation)

Meshtastic allows long range (331km/206 mi is the record at this writing), decentralized, encrypted, power-efficient communication. It is also very extensible with hardware modules. That is, you can send all sorts of data over a Meshtastic network.

Network Topologies

A slide showing three different network topologies: star (where all nodes communicate through a central server), trunk/drop (where nodes broadcast onto a common connection) and mesh (where each node can talk to any other node)
Three network topologies: Star (top left), mesh (right) and trunk/drop (bottom left)

To understand what makes a mesh network so great, we need to explore network topologies. Topology is just a technical term for describing how a network is laid out.

Star networks

You are probably familiar with a star network. The home network in your house uses a star topology. If you want to print a document from your laptop, your laptop will send the data through your WiFi router, to the printer, which will then print your page. If you want to buy a HamThing, your laptop will send data through your WiFi router, out to the Internet, to resolve https://www.hamthings.com. In both cases, your WiFi router acts as a central hub through which all traffic is passed. If you now look up HamRadioExperience on YouTube on your phone, the traffic still passes through your WiFi router.

Trunk/Drop networks

A trunk/drop topology is useful when fewer devices will connect to each other, and when speed is important. Each device connects to a common feed line called a bus. If one device wants to communicate with another, it broadcasts the information for all devices to hear. The other devices turn a deaf ear to any traffic but what is intended for themselves. Some industrial networks, ISP backbones and vehicle CAN networks use a trunk/drop topology.

Mesh networks

In a mesh network, any device can talk to any other device it can hear. The benefit to this type of network can be seen by looking at drawbacks of other network topologies: If I disable your home WiFi router, your entire house loses connectivity. Similarly, if I (improperly) remove ANY device from a trunk/drop network, the entire network will fail. Disabling one device won’t cause the mesh network to fail.

This robustness does come at a price: mesh networks can be very slow if many devices are sending traffic. This means that, if hundreds of people are using Meshtastic in an urban area, or if someone turns on MQTT (a way to pass mesh traffic over the Internet), the mesh network can become unusably slow.

An Example

An example mesh network. Liz, Juliet, Jim, Joe and Bill can all talk to each other. Romeo can only reach Jim and Joe.
An example mesh network. Note that Romeo and Juliet can’t directly reach each other.

You’ll understand the power of a mesh network with an easy example. Note in the small network above that Romeo and Juliet can’t directly communicate with each other – a tragedy which is Shakespearean in its proportions. But, never fear, the mesh network will help them!

Juliet, true to form, would like to know where Romeo is. So, she types “Wherefore art thou??”

Juliet’s message can get to Romeo via either Jim or Joe. So how will the mesh keep Romeo from getting spammed twice with Juliet’s message?

What wasn’t shared in the image above is that Jim’s node has a Client role and Joe’s node is a Router. This means that Jim’s node will wait a bit and see if a Router retransmits Juliet’s message before spamming the network with it again. Joe’s Router node, on the other hand, will retransmit it much sooner.

Another thing, though, is that it turns out Joe likes Juliet and therefore hates Romeo. Joe being able to read Juliet’s message to Romeo would not be optimal for anyone involved.

Again, Meshtastic saves the day because it is encrypted. This means that Romeo and Juliet have at one point shared an encryption key with each other, which allows them do decode each others’ messages.

So, Juliet sends “Wherefore art thou??”. Joe and Jim see “Juliet -> Romeo: wjcx89wljcuoiwelkcjghwekljcjed”. Joe immediately retransmits “Juliet -> Romeo: wjcx89wljcuoiwelkcjghwekljcjed”. Jim, hearing the retransmission, does not send a second time. Romeo receives the message hash and decodes it, reading:

Juliet: Wherefore art thou??

Meshtastic Hardware

To run Meshtastic, you will need a microcontroller with a LoRa radio. At this writing, most Meshtastic devices are built around an ESP32, RP2040 or NRF52 microcontroller. The Heltec V3 is a popular ESP32-based device. The Raspberry Pi Pico is RP2040-based and the RAK4631 is a very popular NRF52 device.

In addition to the microcontroller, you will need the following:

  • An antenna
  • A case
  • A battery
  • (optional) A power switch
  • (optional) Expansion modules
  • (optional) Solar power

My personal recommendation would be to start with the following:

Case Studies

Here are a few examples of Meshtastic nodes:

Solar Weather Node

Chris' Meshtastic solar node
A screen capture showing Chris' weather node displaying current conditions in the Meshtastic app

Chris N9CVR operates this solar weather node. It has expansion modules that monitor temperature, humidity, air quality and GPS location. It is set up in a SENSOR role. It retransmits messages on the mesh, but with a delay, and it does not receive messages from other stations. It is on the mesh to provide weather data, and to retransmit messages if no other nearby node will do it.

Mobile “Router”

Small Heltec v3 Meshtastic node on the dashboard of a car

This Heltec v3 is powered by USB via Chris’ cigarette lighter. It is configured as a ROUTER_LATE. Chris works in several places where there isn’t much mesh coverage, in buildings which attenuate RF a lot. This node can sit on Chris’ dashboard and act as a router. If another (probably better situated) router is present, though, this one will wait for the ‘real’ router to retransmit the traffic. If the Heltec doesn’t hear it get retransmitted, it’ll retransmit the packet.

Again, this node cannot accept messaged; it’s just there to retransmit packets if needed.

Portable client

Chris' portable Meshtastic node

This node fits in a pocket and is battery powered. It is configured as a CLIENT. It sends and receives messages, and retransmits traffic only if a ROUTER or ROUTER_LATE didn’t retransmit it.

Firmware

Once you get your hardware set up, you will need to install firmware on it. You can think of firmware as a sort of operating system for your Meshtastic node. However, because your node runs on such a basic microcontroller, the ‘operating system’ is extremely basic. It can’t even quite be considered software. It’s somewhere between hardware and software — it’s firmware.

Meshtastic make is really easy to install their firmware on microcontrollers using their online flasher. A couple of caveats, though: Only Chrome or Edge browsers work. In Linux, the Chromium browser also works, although you may run into some weird permissions issues connecting to your node over USB. This is especially true of Flatpak versions of Chromium.

Software

You will still need another device which will connect to your node via Bluetooth or USB. On this device, you will need to install the Meshtastic software. You can get this on Google Play, the Apple App Store, or you can just use a browser app (again, only Chrome-based browsers are supported.

Here are a few best practices for using the Meshtastic software:

  • SET YOUR REGION TO US! (You can’t use Meshtastic without doing this)
  • If unsure, leave the node’s mode as CLIENT!
  • DO NOT EXCEED 36dBm ERP unless you like meeting men in black suits at your door! For most LoRa radios, this means don’t exceed 6dB antenna gain unless you plan to turn down transmission power. If buying an antenna from Amazon, be aware that sellers often inflate their dB ratings though…
  • Don’t enable HAM mode unless you don’t want to use encrypted communications. HAM mode is not compatible with the ‘normal’ mesh, so you won’t be able to talk to most other nodes.
  • Don’t delete the default LongFast channel. This channel is how you talk to most other nodes!

If you have any questions about Meshtastic, this information should at least get you started. If anything’s unclear, please don’t hesitate to contact me!