MeshCore Firmware Distributions
Accurate as of 13 July 2026. Firmware moves fast. Check versions and device counts against the configurator before relying on them.
Two different choices get confused with each other.
Which distribution? That is this page. Stock MeshCore, or one of five community builds that each do something different: save power, add a touchscreen, make messages more likely to arrive.
Which role? Companion, Repeater, Room Server. That is MeshCore Firmware Variants Explained. Pick a distribution first, then a role inside it.
These six are the ones you can flash from the Mesh America Device Configurator.
You can always change your mind
Flashing is reversible. You are not going to brick your radio, and you can always go back to stock.
What you can lose is your node identity and contact list. A clean install usually gives the node a new identity, so your contacts will see you as a new person and have to add you again. Write down your radio settings (frequency, bandwidth, spreading factor, coding rate) before you start.
See Flashing MeshCore Firmware, or Flashing OTA for a node you cannot reach.
Do they all work together?
They are all meant to, and each project says it does. Nobody has published a test proving it, and we have not run one, so treat it as very likely rather than certain.
One case does break: Keymind Cascade sends bigger "path hashes" by default, and nodes running firmware 1.13.0 or older will silently drop those packets. If your local mesh still has old nodes on it, check before you deploy.
The six at a glance
| Distribution | What it is | Pick it when |
|---|---|---|
| MeshCore Official MeshCore core team |
The standard firmware. Roles: Companion, Repeater, Room Server, GUI, KISS |
Almost always. This is the right answer for most nodes. |
| EasySkyMesh PowerSaving IoTThinks |
Tuned to use less power. Roles: Companion (BLE), Repeater, Room Server |
Solar or battery repeaters, where battery life is your limit. |
| Keymind Cascade mikecarper |
Makes messages more likely to actually arrive. Experimental. Roles: Companion (BLE, USB, Wi-Fi), Repeater, Room Server, Terminal Chat, Sensor |
Your messages keep failing to send. That is what it fixes, and nothing else here does. |
| MCLite laserir |
Turns a T-Deck or T-Watch into a standalone messenger. Early days. Roles: Companion only |
You want to use the radio on its own, without a phone. |
| WADAMESH ALLFATHER BV |
A touchscreen interface with a map. Beta. Roles: Companion only |
You have a touchscreen device and want chat and a map on it. |
| ZephCore liquidraver |
A rebuild of MeshCore on different underlying software. Roles: Companion (BLE, USB, TCP), Repeater, Room Server, Observer |
Battery life matters, or your board only works with ZephCore. |
MeshCore Official
The standard firmware, from the MeshCore team. MIT licensed. This is what flasher.meshcore.io gives you. Everything else on this page is built on top of it.
Start here. It is what the phone apps are built against and what everyone assumes you are running. 59 devices, 12 manufacturers.
Two things it does not give you. There is no Sensor build and no Wi-Fi Companion build in the official flasher. The code for both exists upstream, but you have to compile it yourself or get a ready-made copy from a fork. Keymind Cascade prebuilds both.
EasySkyMesh PowerSaving
A version of MeshCore tuned to draw less power, from IoTThinks. Same features, longer battery life. Roles: Companion (BLE), Repeater, Room Server. 42 devices.
About the "15 mA" headline. Its own test table is more varied than the headline suggests: Heltec v3 at 19.6 mA, Heltec v4.3 at 24.9 mA, Xiao S3 at 16.3 mA. Only the Xiao C3 actually hits 15 mA. Real savings, but plan your solar around the number for your board, not the headline. These are the project's own measurements and nobody else has checked them.
More: EasySkyMesh. Not available in the official flasher.
Keymind Cascade
This one is worth understanding, because it fixes a problem you have probably had.
The problem
You send a message. Your app says it went. It never arrives.
Here is why. When your message travels through several repeaters to reach someone, each repeater sends it onward exactly once and then forgets about it. If the next repeater misses it (a moment of interference, two radios talking at once), the message is gone. Nobody notices. Nobody tries again, except your own phone, much later, after a long timeout.
This is not rare. One user measured it: roughly 45% of direct messages failed once the path was two or more hops. There is a related bug where your message actually did arrive but the receipt got lost on the way back, so your app says it failed and you sit there re-sending.
The fix
Cascade makes each repeater listen to check its message got picked up.
When a repeater passes your message along, it then listens for the next repeater to pass it on too. Hearing that is proof it worked. If it hears nothing, it assumes the message was dropped and sends it again.
Think of it as handing something down a line of people and watching to make sure the next person actually takes it, instead of dropping it on the floor and walking away.
The neat part: when everything is working, this costs nothing. No extra messages get sent. The radio only speaks up again when a message genuinely got lost. It does the same for delivery receipts, which is what fixes the "it says failed but they got it" problem.
It also fixes one-way paths, where your message gets there but the reply cannot find its way home. Cascade can send the reply by two different routes at once, betting that both will not fail.
Before you flash it, try this instead
A good chunk of Cascade is not new code at all. It is ordinary MeshCore settings that stock ships turned off. You can switch them on yourself, on official firmware, right now:
set multi.acks 1 send delivery receipts more than once
set rxdelay 2 let the strongest repeater go first
set loop.detect minimal drop messages stuck going in circles
set agc.reset.interval 8 stop the radio going deaf over time
That costs nothing, needs no fork, and gets you part of the way. Only the listen-and-retry behaviour actually requires Cascade.
The catch
Retries use airtime, and airtime is shared. Your retries are everyone else's interference. Cascade ships three settings profiles:
| Profile | Retries | Use it when |
|---|---|---|
infra |
Few | You are in a busy area with lots of nodes. Other routes exist, so do not shout. |
rooftop (default) |
Many | A fixed node with a weak-ish link into a mesh that mostly works. |
mobile |
Most | You are out at the edge with no other way through, and getting the message out beats being polite. |
The rule: the busier your area, the fewer retries you should use. A rooftop repeater in a well-covered city should probably be on infra, not rooftop, whatever the name suggests. Putting mobile on a busy repeater will make things worse for everyone around you.
Does it work? Honestly, partly
- The idea is proven. Someone building the same feature separately tested it on real hardware over weak links and went from 81 of 100 messages arriving to 96 of 100.
- Cascade's own settings are disputed. The one head-to-head test says Cascade retries so hard that its own retries collide with each other, delivering less than a gentler version. The author's own testing showed only a 2% improvement.
His defence is relevant to us: "I'm in the PNW and the mesh here is huge. I need more than 3 tries to get out there; sometimes a lot more." That is the mesh we operate in.
Also worth knowing: it is experimental firmware (every release is marked as a development build), and MeshCore has not adopted any of this yet, not because they rejected it but because two people built competing versions and nobody has picked one.
The rest
Widest hardware support of the six (84 devices, 23 manufacturers). Builds Sensor, Terminal Chat and Wi-Fi Companion, which the official flasher does not. Comes in a standard and a Logging build, though the Logging one has no Bluetooth companion option in the configurator.
MCLite
Turns a LilyGo T-Deck Plus or T-Watch Ultra into a messenger that works entirely on its own. No phone, no pairing, no account. Turn it on and text people. MIT licensed, still pre-1.0, and its author calls it experimental.
- Setup is a file on an SD card. You build a
config.jsonwith an offline tool and drop it on the card. One person can set up a whole group and hand out cards. - Extras stock does not have: an SOS broadcast, low-battery alerts to your contacts, offline maps, quick replies, a night-vision theme.
- It does not auto-add contacts. Nodes it overhears go in a "Heard Adverts" list and you choose who to keep. An empty contact list on a new device is normal, not a fault.
The one real catch: messages you type on the device do not show up in the phone app. They send fine over the mesh, they just never appear in the app's history. This is a limit of MeshCore itself and MCLite cannot fix it. If you want a complete history in the app, type in the app.
WADAMESH
A full touchscreen interface: chat, contacts, and a real pannable map with offline tiles, all on the device. Works with the phone app at the same time. GPL licensed, from ALLFATHER BV in Belgium.
- Hardware: Heltec V4 with the touch kit, or a LilyGo T-Deck. (Its own flasher supports a few more boards on a beta channel.)
- Everything is beta. There is no 1.0 release yet.
- Prefer the T-Deck. The Heltec V4 has less memory and no SD card slot, so several features are cut back on it.
ZephCore
MeshCore rebuilt on different underlying software (the Zephyr operating system), which lets the radio sleep properly between messages instead of idling. MIT licensed. Aims to be fully compatible with normal MeshCore and the phone apps.
- Big battery savings, but you have to switch them on. Its power-saving receive mode cuts idle current from roughly 10 to 15 mA down to 3 to 5 mA, but it is off by default. Turn it on with
set rxduty on. If you picked ZephCore for battery life, this is the switch you came for and it is not flipped for you. (Not available on LR1110 or SX127x radios.) - Smarter timing. It measures how crowded the airwaves are locally and waits accordingly, instead of using one fixed delay everywhere.
- 31 devices in the configurator, including some boards nothing else supports.
- Worth knowing: the author states openly that the project is almost entirely AI-written. That is his own disclosure, not our judgement. Treat it like any firmware: test before you deploy.
How to choose
- Just use MeshCore Official. If nothing below applies, flash the official build and stop reading.
- Messages keep failing? First try the four stock settings in the Keymind section. They are free. If it is still bad, flash Keymind Cascade and pick the profile that matches how busy your area really is.
- Solar or battery repeater? EasySkyMesh PowerSaving or ZephCore. With ZephCore, remember to turn on
rxduty. - T-Deck, T-Watch or a touchscreen? MCLite to use it without a phone. WADAMESH if you want the map.
- Board not in the official flasher? Try the Keymind Cascade or ZephCore catalogs.
One last thing. None of this matters if your radio settings are wrong. Your node has to be on the same frequency, bandwidth, spreading factor and coding rate as everyone else in your area. That is the most common reason a new node hears nothing at all. Get those four numbers from your local mesh group before you go blaming the firmware.
A word of caution
Four of these are small community projects and several are openly experimental. That is not a reason to avoid them, but it is a reason to keep a stock build handy, know how to reflash a node you cannot reach, and think twice before putting experimental firmware on a repeater at the top of a tower.
Sources: the Mesh America Device Configurator catalogs; the official MeshCore flasher catalog; and the repositories, release notes, issues and pull requests of each project. The deliverability section draws on the keymindCascade branch documentation, MeshCore discussion #1625, pull requests #2367, #2501, #2586 and #2670, and issues #1342, #1775 and #1834.
Where a number comes from a project's own testing and nobody has independently checked it, this page says so.