Offband Mesh
ForkA 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
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-21v1.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 onkeeps a USB/mains-powered observer's screen lit;display normalrestores 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 flipover the_syschannel; persists, applies immediately. Verified on the OLED observers (Heltec V3, V4 OLED). Displays without a verified rotation driver (the V4 TFT) reportrotation not supported on this displayrather 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 0x0after 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
*.binwill not boot if flashed at0x0— use*-merged.binfor 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
- epic(#126): MeshCore 1.16.0 base-update (integration) by @Strycher in https://github.com/OffbandMesh/meshcore-firmware/pull/134
Full Changelog: https://github.com/OffbandMesh/meshcore-firmware/compare/offband-v0.18.1...offband-v1.0.0
v0.19.0-rc1 # Pre-release 5 days ago · 2026-06-16 04:06 UTC
Display
_sysenhancements (RC1 — for testing)Two new observer/companion display controls over the
_syschannel:- Display always-on (#141) —
display always onkeeps the screen lit;display normalrestores the 15 s blank. (Verified: V3/V4 OLED + V4 TFT.) - Display rotation 0/180 (#148) —
display rotate 0/display rotate 180/display flipflip 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 180uses 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 0should return to normal;display flipshould 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 0x0after 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
*.binwill not boot if flashed at0x0— use*-merged.binfor 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
- Display always-on (#141) —
v0.18.1 # 6 days ago · 2026-06-15 03:08 UTC
Fixed
- WiFi password confirmation wording —
set wifi.pwdnow replieswifi.pwd set (N chars entered)instead ofwifi.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 0x0after 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
*.binwill not boot if flashed at0x0— use*-merged.binfor 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
- fix(observer): wifi.pwd confirmation wording (0.18.1) by @Strycher in https://github.com/OffbandMesh/meshcore-firmware/pull/139
Full Changelog: https://github.com/OffbandMesh/meshcore-firmware/compare/offband-v0.18.0...offband-v0.18.1
- WiFi password confirmation wording —
Device compatibility (3)
| Device | MCU | Radio | Status | Notes |
|---|---|---|---|---|
| Heltec V4 | esp32-s3 | Semtech SX1262 | ✓ Supported | |
| Heltec V3 | esp32-s3 | Semtech SX1262 | ✓ Supported | |
| Seeed Studio Xiao S3 WIO | esp32-s3 | Semtech SX1262 | ✓ Supported |