Log
LoRa mesh radio: Meshtastic, MeshCore and Reticulum
Draft This entry is not published yet. It is unfinished, hidden from search engines and left out of the feed. It will be replaced or removed once the real version is out.
A LoRa radio on a small board can send a few dozen bytes several kilometres on almost no power, with no phone network and no internet. One radio only reaches so far, so the interesting part is what happens next: how a message gets from radio to radio. Meshtastic, MeshCore and Reticulum are three open answers to that question, and they are built differently enough that the choice matters.
The descriptions below come from the projects' own documentation and from reports by people who run them. My own node runs MeshCore: it has its own page, and an entry about building it will follow.
Three layers that get mixed up
- LoRa is the radio modulation: long range, low power, and slow. In the EU band, The Things Network lists bit rates from 250 bit/s to 11 kbit/s for the LoRa settings it defines. That is why this is a text medium, not a photo one.
- LoRaWAN is a different system on the same radio: end devices talk to gateways, which connect them to the internet. It is not a mesh, and none of the three projects below use it.
- The mesh layer is what the three projects provide: who relays a packet, how a route is found, how nodes are identified, how messages are encrypted. Reticulum is the odd one out here, because it runs over LoRa as one medium among many.
The rules in Germany
All of this is shared spectrum, not a free-for-all. The common setup uses the 869.4 to 869.65 MHz sub-band, where the EU short-range-device rules allow up to 500 mW effective radiated power (e.r.p.) at a 10% duty cycle. Meshtastic's EU profile is built around that, with its default channel at 869.525 MHz.
Three things people get wrong, according to an engineering write-up from a hardware retailer:
- MeshCore's documented default duty-cycle limit is 50%, so a repeater left on defaults does not fit the 10% route. It has to be set deliberately.
- The limit is on radiated power, so antenna gain counts. A board that can do 1 W with a 6 dBi antenna can exceed 500 mW e.r.p.
- A software "EU" profile is a guardrail, not proof that the whole station complies, and a ham callsign does not turn this band into amateur radio.
That source is guidance, not law, and I have not read the Bundesnetzagentur's general authorisation itself. Check it before putting a transmitter on a roof.
Meshtastic
The large, general-purpose one: many boards, many apps, the biggest community.
- Routing is managed flooding. A node that hears a packet rebroadcasts it, unless it hears another node do so first. How long it waits depends on the signal quality, so nodes far from the sender go first and the ones close by stay quiet. The hop limit is a 3-bit field, so 7 at most; community comparisons give 3 as the default.
- Everyone relays by default. The default role, client, rebroadcasts. Router roles rebroadcast even when they hear someone else do it.
- Direct messages got smarter in 2.6. The first message floods, later ones follow the next-hop relay it learned, and the last retry falls back to flooding. Channel broadcasts still flood.
- It is chatty by default. Nodes announce themselves every three hours, and the firmware stretches position and telemetry intervals once more than 40 nodes are online.
- Node numbers are derived from the node's public key, and direct messages have used public-key encryption since 2.5.
MeshCore
A younger project with a different idea: only deliberately placed infrastructure relays.
- Fixed roles, one firmware each. A companion is the node on your phone and never relays anyone else's traffic. A repeater is infrastructure and only forwards. A room server is a store-and-forward bulletin board that holds messages, up to 32 per user, for people who were offline.
- Routing learns paths. The first message to a contact floods; the acknowledgement carries the route back, and later messages go through those repeaters only. If a path breaks, it retries three times, resets the path and floods again. Group channels always flood, since there is no single destination. Community comparisons put the hop ceiling at 64.
- Identity is a public key. Nodes become known to each other through adverts that carry name, optional location and key, and repeaters send a flood advert every 12 hours by default. In routes, a repeater is identified by a short hash of its key, by default the first byte, so two nearby repeaters sharing that byte confuse analysis tools. Longer path hashes exist for larger networks.
- Regions limit the flooding. A repeater forwards only packets whose scope it knows. German communities name regions after the ISO codes of the federal states, such as
de-bw, per the German MeshCore wiki. - The trade-off. Fewer nodes repeat, so there is less airtime used and fewer collisions, at the cost of reach where no repeater stands. Wikipedia notes fragmented documentation and a steep learning curve.
MeshCore was designed by Scott Powell in late 2024 and went public in early 2025, with the phone and web apps by Liam Cottle. The core firmware is MIT-licensed. In spring 2026 the project split: a former team member's company filed UK and EU trademark applications for the name, which the core team opposes. LWN covered the dispute in June 2026, and the core team's side is in its own blog. The other side's position is only reported secondhand in the sources used here, so this entry takes no side. A name dispute does not change what the firmware on existing nodes does.
Reticulum
Not a LoRa firmware at all. Reticulum is a complete networking stack with its own addressing, routing and encryption, written in Python and run on a computer such as a Raspberry Pi.
- LoRa is one interface among many. An open board design called RNode turns a common LoRa board into a radio for a host running Reticulum. The same stack also runs over packet radio, serial lines, WiFi, Ethernet, I2P, TCP and UDP, and it bridges between them. The requirement is a channel of at least 5 bit/s and a 500-byte MTU.
- Addresses come from keys. Nobody assigns them, and packets carry no source address. Encryption is the basis of everything: X25519 and Ed25519, with forward secrecy available.
- A different goal. It aims at community-owned networks of any size, not at messaging between hikers. The cost is that a node is a host plus a modem, not a self-contained board.
- The protocol is defined by the Python reference implementation and its manual, maintained by Mark Qvist. The protocol was dedicated to the public domain in 2016; the reference implementation has its own licence.
Side by side
| Meshtastic | MeshCore | Reticulum | |
|---|---|---|---|
| What it is | Firmware and app ecosystem | Firmware and protocol with fixed roles | Networking stack, LoRa via RNode |
| Who relays | Normally every client | Only repeaters | Hosts running the stack |
| Routing | Managed flooding, next-hop for direct messages | Learned paths, floods to discover | Self-configuring, key-based |
| Identity | Node number from the public key | Public key, short hash in routes | Hash of the public key |
| Hardware | Many LoRa boards plus phone | LoRa boards plus phone, web or standalone | A computer plus a LoRa modem |
| Talks to the others | Not directly | Not directly | Not directly |
Which one fits
This part is my reading, not something the sources say. If you want to message friends on a trip, with phones and nodes that move around, Meshtastic is the easy start. If you want a regional network built from a few well-placed repeaters, MeshCore is designed for exactly that. If you want a general, encrypted network layer that can bridge radio and IP and you are fine running a host computer, that is Reticulum.
The lines are blurring a little: Meshtastic's next-hop messages borrow the idea of remembering a route. Meshtastic and MeshCore cannot exchange messages with each other, so choosing one also means choosing the neighbours you can talk to.
Sources
- Meshtastic: Mesh Broadcast Algorithm
- Reticulum manual: What is Reticulum?
- MeshCore on GitHub and Wikipedia: MeshCore
- NodakMesh: How MeshCore Works (2 Apr 2026)
- German MeshCore wiki: Basis-Regions
- RF.Guru: Meshtastic and MeshCore in Europe, the legal RF framework (25 Aug 2026)
- The Things Network: EU863-870 MHz band
- Meshtastic vs MeshCore, a community comparison (hop limits)
- LWN.net Weekly Edition, 4 June 2026 and Help Us Save MeshCore (the trademark dispute)