MeshCore Ninja
← All firmwares

Offband Mesh

Fork

A MeshCore fork for cross-role firmware enhancements and optimization. Active roles include companion/observer with WiFi+MQTT observation publishing, NimBLE migration, web UI, and repeater with MQTT-to-Mosquitto bridging, burst-WiFi telemetry, heap and power tuning.

Fork of MeshCore (Official)

Maintainer
OffbandMesh ↗
Status
active
Maturity
beta
Lifecycle
active
Latest version
1.0.0
Released
2026-06-18
Runtime
Arduino · C++
Distribution
community
License
MIT

Capabilities

Transports

  • BLE
  • USB serial
  • Native TCP
  • Wi-Fi AP

Operations

  • Web flasher
  • OTA updates

Networking

  • Repeater
  • Room server
  • Observer
  • MQTT
  • KISS modem

Hardware

  • GPS
  • Display
  • Sensors
  • Low-power RX

Protocol

  • MeshCore compatible

Node roles

companionrepeaterobserver

Features

  • Companion/observer with WiFi+MQTT observation publishing
  • NimBLE migration (off Bluedroid)
  • CrashLog / boot-survival diagnostics
  • MQTT-to-Mosquitto bridging (repeater)
  • Burst-WiFi telemetry
  • Heap and power optimization for ESP32-S3
  • Web UI

Releases

from GitHub · updated 2026-06-21
  1. v1.0.0 # Latest 3 days ago · 2026-06-18 00:46 UTC

    First production-stable Offband release — companion, observer, and repeater roles all working and hardware-verified. Built on the MeshCore 1.16.0 base.

    Base

    • MeshCore 1.16.0 base-update (#126) — the fork is rebased onto upstream MeshCore 1.16.0, smoke-verified across all three active roles (Companion, Observer, Repeater) on Heltec V3/V4 + RAK3401.

    Added

    • RAK3401 (WisMesh 1W) GPS (#104) — the RAK12500 (u-blox ZOE-M8Q) I²C GPS now works in Slot D. Companion and repeater acquire a position fix. (Position only; the I²C path does not sync the clock.)
    • Display always-on toggle (#141) — display always on keeps a USB/mains-powered observer's screen lit; display normal restores the 15 s timeout. Persists across reboots, applies immediately. Heltec V3, V4 OLED, V4 TFT observers.
    • Display rotation (0/180) (#148) — display rotate 0/180 / display flip over the _sys channel; persists, applies immediately. Verified on the OLED observers (Heltec V3, V4 OLED). Displays without a verified rotation driver (the V4 TFT) report rotation not supported on this display rather than silently no-op'ing; TFT rotation is tracked separately.

    Known issues

    • Heltec V4 observer GPS position unverified (#149) — an attached UART GPS doesn't yet surface a position on the V4 observer (reads 0,0). Observer time (NTP/SNTP) and all other function are unaffected; GPS only adds the device's own map-position dot.

    Which file do I download?

    File What it is When to use it
    *-merged.bin (ESP32 — Heltec V3/V4, XIAO) Full image — bootloader + partition table + app in one, flashed at 0x0 after a chip erase. Self-contained, works on a blank chip. First install / clean setup. In a web flasher this is the "Full Firmware" option.
    *.bin (ESP32) App only — flashed at the app offset (0x10000); the bootloader must already be on the chip. Updating an existing node — OTA / "Update Only." Keeps the device identity + WiFi/MQTT config.
    *.uf2 (nRF52 — RAK, T-Echo, XIAO nRF52) Complete self-contained image. First install and updates — double-tap reset, then drag-drop onto the USB drive. (nRF52 has no merged/app split.)

    ⚠️ ESP32: the app-only *.bin will not boot if flashed at 0x0 — use *-merged.bin for a fresh install. A full erase / "Full Firmware" wipes the device's identity + saved config, so use it only for a first install or recovery, never a routine update.

    What's Changed

    Full Changelog: https://github.com/OffbandMesh/meshcore-firmware/compare/offband-v0.18.1...offband-v1.0.0

  2. v0.19.0-rc1 # Pre-release 5 days ago · 2026-06-16 04:06 UTC

    Display _sys enhancements (RC1 — for testing)

    Two new observer/companion display controls over the _sys channel:

    • Display always-on (#141) — display always on keeps the screen lit; display normal restores the 15 s blank. (Verified: V3/V4 OLED + V4 TFT.)
    • Display rotation 0/180 (#148) — display rotate 0 / display rotate 180 / display flip flip the screen for upside-down mounting. (Verified: V3/V4 OLED.)

    ⚠️ TFT 180° rotation is UNVERIFIED — this is the thing to test. On the Heltec V4 TFT (heltec_v4_tft_companion_observer_wifi), display rotate 180 uses a best-guess MADCTL combo (flipScreenVertically). Please confirm it gives a clean 180° flip (upside-down but readable), not a mirror or garbled image. display rotate 0 should return to normal; display flip should toggle. Report back — it's a one-line fix if the combo is wrong.

    TFT flash: heltec_v4_tft_companion_observer_wifi-v0.19.0-rc1-14bc32d-merged.bin (full image — web-flasher "Full Firmware" for a fresh install), or the .bin (app-only) to update an existing node and keep its identity/config.


    Which file do I download?

    File What it is When to use it
    *-merged.bin (ESP32 — Heltec V3/V4, XIAO) Full image — bootloader + partition table + app in one, flashed at 0x0 after a chip erase. Self-contained, works on a blank chip. First install / clean setup. In a web flasher this is the "Full Firmware" option.
    *.bin (ESP32) App only — flashed at the app offset (0x10000); the bootloader must already be on the chip. Updating an existing node — OTA / "Update Only." Keeps the device identity + WiFi/MQTT config.
    *.uf2 (nRF52 — RAK, T-Echo, XIAO nRF52) Complete self-contained image. First install and updates — double-tap reset, then drag-drop onto the USB drive. (nRF52 has no merged/app split.)

    ⚠️ ESP32: the app-only *.bin will not boot if flashed at 0x0 — use *-merged.bin for a fresh install. A full erase / "Full Firmware" wipes the device's identity + saved config, so use it only for a first install or recovery, never a routine update.

    Full Changelog: https://github.com/OffbandMesh/meshcore-firmware/compare/offband-v0.18.1...offband-v0.19.0-rc1

  3. v0.18.1 # 6 days ago · 2026-06-15 03:08 UTC

    Fixed

    • WiFi password confirmation wordingset wifi.pwd now replies wifi.pwd set (N chars entered) instead of wifi.pwd set (length=N), which was being misread as a 17-character maximum. The reply reports the length of what was entered (never the secret PSK); it is not a cap. WiFi passwords accept the full WPA2 range (8–63 chars).

    Which file do I download?

    File What it is When to use it
    *-merged.bin (ESP32 — Heltec V3/V4, XIAO) Full image — bootloader + partition table + app in one, flashed at 0x0 after a chip erase. Self-contained, works on a blank chip. First install / clean setup. In a web flasher this is the "Full Firmware" option.
    *.bin (ESP32) App only — flashed at the app offset (0x10000); the bootloader must already be on the chip. Updating an existing node — OTA / "Update Only." Keeps the device identity + WiFi/MQTT config.
    *.uf2 (nRF52 — RAK, T-Echo, XIAO nRF52) Complete self-contained image. First install and updates — double-tap reset, then drag-drop onto the USB drive. (nRF52 has no merged/app split.)

    ⚠️ ESP32: the app-only *.bin will not boot if flashed at 0x0 — use *-merged.bin for a fresh install. A full erase / "Full Firmware" wipes the device's identity + saved config, so use it only for a first install or recovery, never a routine update.

    What's Changed

    Full Changelog: https://github.com/OffbandMesh/meshcore-firmware/compare/offband-v0.18.0...offband-v0.18.1

Show all 10 releases →

Device compatibility (3)

✓ 3 Supported
DeviceMCURadioStatusNotes
Heltec V4esp32-s3Semtech SX1262✓ Supported
Heltec V3esp32-s3Semtech SX1262✓ Supported
Seeed Studio Xiao S3 WIOesp32-s3Semtech SX1262✓ Supported