MeshCore Ninja
← All firmwares

FieldMesh

Fork

A MeshCore firmware fork optimized for outdoor use — festivals, hiking, off-grid events. Adds automatic GPS advertising, dedicated tracking page with distance calculation, Off-Grid mode with legal frequency defaults and one-press toggle, SOS system with buzzer alarms, message history with RAM ring buffer, and text input/send on joystick-equipped devices. Designed to be field-ready: put it in your backpack and trust it's doing its job.

Fork of MeshCore (Official)

Maintainer
TogeriX-hub ↗
Status
active
Maturity
stable
Lifecycle
active
Latest version
5.3
Released
2026-04-28
Runtime
Arduino · C++
Distribution
community
License
MIT

Capabilities

Transports

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

Operations

  • Web flasher
  • OTA updates
  • BLE DFU
  • Config backup

Networking

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

Hardware

  • GPS
  • Display
  • Sensors
  • Low-power RX

Protocol

  • MeshCore compatible
  • Raw packet send
  • Raw packet observe

Node roles

companionrepeaterstandalone-ui

Features

  • Automatic GPS advertising (zero-hop, every 5 minutes)
  • Dedicated tracking page with Haversine distance calculation
  • Off-Grid mode with Client Repeat on separate legal frequencies
  • One-press Off-Grid toggle (menu or 5x button press on headless devices)
  • SOS system with two-step confirmation and buzzer alarm
  • Message history (RAM ring buffer, up to 32 entries)
  • Text input and send via joystick (Wio Tracker L1)
  • Online node counter on home screen
  • Mode indicators (GPS-SHARE, OFF-GRID)
  • Headless device support (T1000-E, RAK WiseMesh TAG)
  • Forced buzzer feedback for all actions on headless devices
  • Splash screen with version info and FieldMesh branding
  • Backlight fixes for various displays

Project signals

popularity 2026-06-21 verification 2026-06-21
GitHub stars
25
Forks
0
Watchers
1
Open issues
3
Contributors
151
Release downloads
0
Latest downloads
0
Source available
Yes
Releases available
Yes
CI builds
Yes

Releases

from GitHub · updated 2026-06-21
  1. v5.3 # Latest 2 months ago · 2026-04-28 07:00 UTC

    [5.3] — MeshCore Upstream Sync

    Changes

    • MeshCore upstream alignment — codebase updated to track MeshCore v1.15.0; no FieldMesh-specific feature changes in this release

    Download latest build

    EU Offgrid frequency

    ThinkNode_M1_companion_radio_ble_FieldMeshv5.3.zip WioTrackerL1_companion_radio_ble_FieldMeshv5.3.zip t1000e_companion_radio_ble_FieldMeshv5.3.zip

    US Offgrid frequency

    ThinkNode_M1_companion_radio_ble_USFieldMeshv5.3.zip WioTrackerL1_companion_radio_ble_USFieldMeshv5.3.zip t1000e_companion_radio_ble_USFieldMeshv5.3.zip

  2. v5.2 # 2 months ago · 2026-04-09 14:29 UTC

    [5.2] — HomeScreen Redesign & Online Node Counter

    New features

    • Online node counter — HomeScreen now shows how many nodes have been heard in the last 30 minutes, combining advert senders and message senders in a single deduplicated count (16-entry LRU cache)
    • Node counter icon — the online count is displayed with a filled circle icon (●) instead of plain [X] text
    • Real channel name in title bar — message history and favorite preview now show the actual channel name (e.g. "Public") instead of the hardcoded "[CH]" tag
    • Mode indicator — GPS-SHARE and OFF-GRID modes are now shown on the HomeScreen FIRST page

    Changes

    • M1 HomeScreen layout — node counter fixed at y=22 regardless of connection state; MSG:X replaces < Connected > when disconnected; nodes_icon y-offset corrected (+3px) to align with text baseline
    • Channel message title bar — sender name omitted from title bar for channel messages (already visible inside the message text)
    • Favorite indicator — clears correctly after all messages are deleted (deleteEntry / clearAll); no longer persists stale data after app sync
    • MSG:X counter — hidden on HomeScreen while phone app is connected
    • RECENT/TRACKING pages — row limits now display-height-adaptive via max_y variable instead of hardcoded values

    Bug fixes

    • BLE init: send_queue flood — between onSecured() and CMD_APP_START async pushes could fill all 12 send_queue slots, causing the app to time out. Fixed via _app_initialized flag and isWriteBusy() guard
    • Double-counting in node counter — nodes heard via both advert and message were counted twice. Fixed via countOnlineNodesExcluding()
    • adv_fresh buffer — was reusing the 4-entry RECENT display array, capping the advert-based node count at 4. Now uses a dedicated ADVERT_PATH_TABLE_SIZE (16) buffer
    • formatRelTime undefined behavior — replaced signed int cast with safe uint32_t arithmetic

    Technical notes

    • Changes confined to UITask.cpp, UITask.h, MyMesh.cpp, MyMesh.h, icons.h
    • DataStore, AbstractUITask, platformio.ini unaffected

    Download latest build

    EU Offgrid frequency

    ThinkNode_M1_companion_radio_ble_FieldMeshv5.2.zip WioTrackerL1_companion_radio_ble_FieldMeshv5.2.zip t1000e_companion_radio_ble_FieldMeshv5.2.zip

    US Offgrid frequency

    ThinkNode_M1_companion_radio_ble_USFieldMeshv5.2.zip WioTrackerL1_companion_radio_ble_USFieldMeshv5.2.zip t1000e_companion_radio_ble_USFieldMeshv5.2.zip

  3. v5.1 # 3 months ago · 2026-04-04 08:18 UTC

    [5.1] — Headless Device Support (T1000-E, RAK WiseMesh TAG)

    New features

    • Headless device supportui-orig now fully integrated into FieldMesh; devices with no display and a single button (Seeed T1000-E, RAK WiseMesh TAG) are supported as first-class citizens
    • Off-Grid toggle via 5× click — 5 presses on the single button toggles Off-Grid mode on/off; buzzer feedback is forced regardless of mute state (ascending tone = on, descending = off)
    • SOS alarm via buzzer — incoming !SOS messages trigger a continuous buzzer siren that overrides quiet mode and loops until acknowledged with a short press

    Changes

    • All button actions (advert, GPS toggle, buzzer toggle, Off-Grid toggle) now produce forced buzzer feedback regardless of quiet mode — essential for display-less operation
    • Ascending tone (c,e) = feature enabled; descending tone (e,c) = feature disabled — consistent across all actions
    • newMsg() signature updated to include is_favorite parameter — compatible with V5 AbstractUITask interface
    • refreshDisplay() and isOnRecentOrTrackingPage() added as explicit no-op overrides — required for MyMesh compatibility

    Button mapping (headless devices — single button)

    Press Action
    Wake display / acknowledge SOS alarm
    Send advert
    Buzzer mute on/off
    GPS on/off
    Off-Grid mode on/off
    Long press (first 8 s) CLI Rescue Mode
    Long press Shutdown

    Technical notes

    • Changes confined to ui-orig/Button.h, ui-orig/Button.cpp, ui-orig/UITask.h, ui-orig/UITask.cpp
    • ui-new (ThinkNode M1, Wio Tracker L1) is completely unaffected
    • _buzzer_restore_quiet flag ensures non-blocking buzzer playback before quiet state is restored

    Download latest build

    EU Offgrid frequency

    ThinkNode_M1_companion_radio_ble_FieldMeshv5.1.zip WioTrackerL1_companion_radio_ble_FieldMeshv5.1.zip t1000e_companion_radio_ble_FieldMeshv5.1.zip

    US Offgrid frequency

    ThinkNode_M1_companion_radio_ble_USFieldMeshv5.1.zip WioTrackerL1_companion_radio_ble_USFieldMeshv5.1.zip t1000e_companion_radio_ble_USFieldMeshv5.1.zip

Show all 6 releases →

Device compatibility (5)

✓ 5 Supported
DeviceMCURadioStatusNotes
Elecrow ThinkNode M1nrf52840Semtech SX1262✓ SupportedE-Ink display, single button; primary development target
Seeed Studio Wio Tracker L1nrf52840Semtech SX1262✓ SupportedOLED display (SSD1306/SH1106 128x64), joystick; text input and send supported
Seeed Studio Wio Tracker L1 E-inknrf52840Semtech SX1262✓ SupportedE-ink variant (GxEPD2 250x122)
Seeed Studio SenseCAP T1000-Enrf52840Semtech LR1110✓ SupportedHeadless device (no display, single button); primary headless reference
RAK WisMesh Tagnrf52840Semtech SX1262✓ SupportedHeadless device; contributions welcome