FieldMesh
ForkA 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
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
- 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-21v5.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
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()andCMD_APP_STARTasync pushes could fill all 12 send_queue slots, causing the app to time out. Fixed via_app_initializedflag andisWriteBusy()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.iniunaffected
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
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 support —
ui-orignow 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
!SOSmessages 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 includeis_favoriteparameter — compatible with V5AbstractUITaskinterfacerefreshDisplay()andisOnRecentOrTrackingPage()added as explicit no-op overrides — required forMyMeshcompatibility
Button mapping (headless devices — single button)
Press Action 1× Wake display / acknowledge SOS alarm 2× Send advert 3× Buzzer mute on/off 4× GPS on/off 5× 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_quietflag 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
- Headless device support —
Device compatibility (5)
| Device | MCU | Radio | Status | Notes |
|---|---|---|---|---|
| Elecrow ThinkNode M1 | nrf52840 | Semtech SX1262 | ✓ Supported | E-Ink display, single button; primary development target |
| Seeed Studio Wio Tracker L1 | nrf52840 | Semtech SX1262 | ✓ Supported | OLED display (SSD1306/SH1106 128x64), joystick; text input and send supported |
| Seeed Studio Wio Tracker L1 E-ink | nrf52840 | Semtech SX1262 | ✓ Supported | E-ink variant (GxEPD2 250x122) |
| Seeed Studio SenseCAP T1000-E | nrf52840 | Semtech LR1110 | ✓ Supported | Headless device (no display, single button); primary headless reference |
| RAK WisMesh Tag | nrf52840 | Semtech SX1262 | ✓ Supported | Headless device; contributions welcome |