MeshCore Firmware Variants Explained
MeshCore is distributed as several distinct firmware variants, each designed for a specific role in the mesh. Choosing the correct variant is essential - running the wrong firmware type wastes resources and can degrade network performance.
This page covers node roles. There is a second choice to make: which distribution you flash. Stock MeshCore is one option, and several independent projects (EasySkyMesh, Keymind Cascade, MCLite, WADAMESH, ZephCore) build their own MeshCore firmware with different priorities. See MeshCore Firmware Distributions (Forks and Ports). Pick a distribution first, then a role within it.
The Firmware Variants
Companion (COMPANION)
The Companion firmware is for user-facing nodes. It is the firmware that end-users run on their personal devices to send and receive messages via the MeshCore mobile app.
- Primary function: Sends and receives direct messages and channel (group) messages. Maintains a contact list. Connects to the MeshCore mobile app over BLE or USB serial (and, on Wi-Fi-capable boards, over a Wi-Fi/TCP connection).
- Sub-variants: There are two companion firmware builds - BLE Companion and USB Serial Companion. Wi-Fi is an additional connection mode available on capable boards (e.g. a Heltec V3), not a separate companion firmware build.
- When to use: Personal handheld nodes, base station nodes used for human communication, any node that a person interacts with via the MeshCore app.
- Firmware file example:
Heltec_v3_companion_radio_ble-v1.7.1-165fb33.bin(or the corresponding..._companion_radio_usb-...build; RAK4631 nRF52840 boards ship a.uf2companion build)
Repeater (REPEATER)
The Repeater firmware turns a node into a dedicated packet relay. It has no user interface and no messaging capability of its own.
- Primary function: Receives MeshCore packets and re-transmits them. Forwards packets to extend network reach.
- Resource profile: Minimal. No display driver, no BLE advertising for user connections (only for CLI access), no message store. Designed for long-running operation on battery or solar when power is sized for worst-case conditions.
- When to use: Any node whose sole purpose is extending mesh coverage - hilltop repeaters, building relay nodes, infrastructure backbone nodes.
- When NOT to use: Do not flash Repeater on a node you plan to use as a personal communicator. It has no user-facing messaging.
- Firmware file example:
Heltec_v3_repeater-v1.7.1-165fb33.bin(RAK4631 nRF52840 boards ship a.uf2repeater build)
Room Server (ROOM_SERVER)
The Room Server firmware creates a store-and-forward message hub. Room servers act as persistent group chat rooms accessible via LoRa.
- Primary function: Stores incoming messages and delivers them to nodes that connect later (offline delivery). Acts as a central hub for group communication.
- When to use: Fixed infrastructure nodes serving as community message hubs - in a building, on a hilltop tower, or at an event site where persistent message history is needed.
- Firmware file example:
Heltec_v3_room_server-v1.7.1-165fb33.bin(RAK4631 nRF52840 boards ship a.uf2room_server build)
GUI builds
For boards with a screen (and, in the SD-card variants, storage), the official flasher also builds GUI firmware. These are companion nodes with an on-device interface rather than a separate network role.
KISS Radio
A KISS TNC build that turns the node into a dumb modem for a host computer, rather than a participant in the mesh in its own right. See MeshCore KISS Modem Protocol.
Sensor: read this carefully
Sensor firmware is the most misunderstood item in this list, so be precise about what exists.
- The upstream MeshCore repository contains a
simple_sensorexample application. The source exists. - The official MeshCore flasher does not build it. The official flasher offers Companion, Repeater, Room Server, GUI and KISS builds. There is no Sensor entry. You cannot flash a stock Sensor binary from flasher.meshcore.io.
- If you want a prebuilt Sensor binary, you either build it yourself or get it from a fork. Keymind Cascade ships Sensor builds for around 17 boards.
- Sensor readings are not broadcast in adverts. A MeshCore advert announces a node's presence, not its telemetry. Sensor data moves over MeshCore's request/response protocol. See MeshCore Sensor Nodes for how this actually works.
Summary Table
| Firmware | User Messaging | Packet Relay | Message Store | Built by official flasher |
|---|---|---|---|---|
| Companion (BLE / USB) | Yes | No | Local only | Yes |
| Repeater | No | Yes | No | Yes |
| Room Server | No | Optional | Yes (network-wide) | Yes |
| GUI | Yes (on device) | No | Local only | Yes, on screen-equipped boards |
| KISS Radio | No (host-driven) | No | No | Yes |
| Sensor | No | No | No | No (source exists upstream; binaries come from forks or your own build) |
Source: the official MeshCore flasher catalog (flasher.meshcore.io) and the MeshCore firmware repository at github.com/meshcore-dev/MeshCore.