Skip to main content

MeshCore Firmware Variants Explained

MeshCore Firmware Variants Explained

MeshCore is not a single firmware build. It is distributed as several distinct variants, each designed for a specific role in the mesh. Choosing the correct variant for each node is essential — running the wrong firmware type wastes resources, wastes spectrum, and can degrade network performance.

The Four Firmware Variants

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 along learned routes. Maintains a routing table of known paths through the mesh.
  • Resource profile: Minimal. No display driver, no BLE advertising for user connections (only for CLI access), no message store. Designed to run indefinitely on a small battery or solar.
  • 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.
  • Hardware support: All supported MeshCore boards (RAK4631, T-Beam v1.2+, T-Beam Supreme, Heltec V3, T114, Heltec HT-n62).
  • Firmware file example: rak4631_repeater.uf2, tbeam_repeater.bin

ROOM_CLIENT

The ROOM_CLIENT firmware is for user-facing nodes that send and receive messages, including connecting to room servers for group chat.

  • Primary function: Sends and receives direct messages and room-based (group) messages. Maintains a contact list. Connects via BLE to the MeshCore mobile app.
  • Resource profile: Moderate. Maintains a message store, contact table, and BLE advertising stack. More RAM-intensive than REPEATER.
  • When to use: Personal handheld nodes, base station nodes used for human communication, any node that a person will interact with via the MeshCore app.
  • Room server interaction: ROOM_CLIENT nodes can connect to a room server to join a group channel. They send a join request and subsequently receive/send room messages through the server node.
  • Hardware support: All supported MeshCore boards.
  • Firmware file example: rak4631_room_client.uf2

ROOM_SERVER

The ROOM_SERVER firmware turns a node into a group messaging hub. Other ROOM_CLIENT nodes connect to it to participate in a shared room (channel).

  • Primary function: Maintains a list of connected room members. Receives messages from clients and relays them to all other members in the room. Stores recent messages so late-joining clients can catch up.
  • Resource profile: Higher than ROOM_CLIENT. Maintaining per-client state, a message buffer, and handling potentially many simultaneous incoming messages requires more RAM and flash. This is why some lower-memory boards (e.g., Heltec V3) do not support ROOM_SERVER.
  • When to use: Fixed infrastructure nodes — a node deployed on a rooftop, hilltop, or central location that will serve as the hub for a community or team channel.
  • Why you should NOT run ROOM_SERVER on a repeater-only node: A node that also needs to relay packets for the broader mesh is doing two jobs. If the room server is busy processing a burst of incoming messages, it may delay packet forwarding, degrading routing performance for all nodes. Use dedicated hardware for room servers when possible, or accept the trade-off consciously.
  • Hardware support: RAK4631, T-Beam v1.2+, T-Beam Supreme, T114. NOT supported on Heltec WiFi LoRa 32 V3 or Heltec HT-n62.
  • Firmware file example: rak4631_room_server.uf2

SENSOR

The SENSOR firmware is for nodes equipped with environmental sensors (BME280 or BME680). It periodically reads sensor data and transmits it as a structured sensor packet over the mesh.

  • Primary function: Wake from deep sleep at a configured interval, read I2C sensor data (temperature, humidity, pressure, optionally VOC), transmit a sensor data packet, return to deep sleep.
  • Resource profile: Very minimal during operation. Spends most of its time in deep sleep. The nRF52840's ~3 µA deep sleep current makes months-long battery operation feasible.
  • Sensor support: BME280 (temperature, humidity, pressure) and BME680 (temperature, humidity, pressure, VOC gas resistance). RAK WisBlock RAK1906 module provides the BME680.
  • When to use: Remote weather stations, environmental monitoring in a building or field site, any deployment where periodic environmental data collection is needed.
  • Hardware support: nRF52840-based boards only (RAK4631, T114). The sensor firmware relies on nRF52840-specific deep sleep and I2C peripheral wake capabilities. ESP32-based boards (T-Beam, Heltec V3) do not currently have a SENSOR variant.
  • Firmware file example: rak4631_sensor.uf2

Hardware vs Firmware Variant Matrix

Board REPEATER ROOM_CLIENT ROOM_SERVER SENSOR
RAK4631YesYesYesYes
T-Beam v1.2+YesYesYesNo
T-Beam SupremeYesYesYesNo
Heltec WiFi LoRa 32 V3YesYesNoNo
T114YesYesYesYes
Heltec HT-n62YesYesNoNo

Version Numbering Scheme

MeshCore firmware versions follow a major.minor.patch scheme (e.g., 2.4.1):

  • Major version — significant protocol or architecture changes. Nodes on different major versions may have limited interoperability.
  • Minor version — new features, new board support, API changes. Generally backward-compatible within the same major version.
  • Patch version — bug fixes, performance improvements. Always safe to apply.

Release Cadence

MeshCore is an active project with releases driven by community needs and developer availability. As of 2026:

  • Minor releases typically appear every few weeks to months.
  • Patch releases may be more frequent, especially following reports of regressions.
  • Pre-release (beta) builds are sometimes made available in the community Discord for testing before an official release.
  • Release notes are published in the MeshCore GitHub repository under the Releases section.

Checking Which Version You Are Running

Connect to your node via BLE using the MeshCore CLI or app and run:

status

The output will include the firmware version, board variant, and current configuration summary.