All firmwares

MeshCore Solo

Fork

A fork of the reference MeshCore companion radio firmware with extended features and UI enhancements. Adds GPS navigation (waypoints, compass, trail recording with GPX export), battery power-saving (hardware RX duty-cycle + adaptive power control), favourite contacts dial, extended language support with native Unicode rendering, message delivery status, screen lock, auto-reply bot, repeater mode with diagnostics, and more — all optimized for joystick-only navigation on small displays.

Fork of MeshCore (Reference)

Maintainer
MarekZegare4 ↗
Status
Active
Maturity
Stable
Lifecycle
Active
Latest version
1.24
Released
2026-07-29
Runtime
Arduino · C++
Distribution
Community
Licensing
Open source
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 role

CompanionRepeaterStandalone UI

Features

  • Extended Unicode support with Lemon font and native input
  • GPS navigation suite (waypoints, compass, backtrack, trail recording)
  • GPX export via USB serial
  • Screenshot capture over USB
  • Favourites dial for pinned contacts
  • Message delivery status indicators
  • DM auto-resend and incoming deduplication
  • Screen lock with time and sensor display
  • Auto-reply bot with command responses
  • Auto-advert for location sharing
  • Battery power saving (RX duty-cycle + APC)
  • Companion repeater mode with diagnostics
  • Ping functionality in Nearby Nodes
  • SOS broadcast with configurable target
  • Quiet hours for sound suppression
  • Mark-all-read at type level
  • Lock-screen unread count
  • Channel scanner home page
  • Contact distance sorting
  • Signal stats screen
  • Display test pattern
  • Power profile presets
  • Solo Tools web app for screenshot capture and GPX export (https://marekzegare4.github.io/Solo-tools/)

Project signals

popularity 2026-08-05 verification 2026-08-05
GitHub stars
56
Forks
5
Watchers
3
Open issues
8
Contributors
178
Release downloads
924
Latest downloads
59
Source available
Yes
Releases available
Yes
CI builds
Yes

Releases

from GitHub · updated 2026-07-29
  1. v1.24 # Latest 7 days ago · 2026-07-29 20:58 UTC

    MeshCore Solo Companion Firmware v1.24

    What's new

    • Auto-Reply Bot is renamed to Remote Bot. It's grown beyond auto-replies into remote device control (Actions, below), so the Tools screen entry and docs now say "Remote Bot" — same screen, same settings, nothing to reconfigure.
    • Remote Bot gains Actions: !buzz, !gps, !advert. A new Actions toggle (per target — Direct/Channel/Room, nested under each target's existing Commands toggle) enables three commands that change the device's own behaviour instead of just reporting on it: !buzz [seconds] sounds the buzzer as a find-me signal (default 5s, capped at 30s, sounds even if the buzzer is muted), !gps on/!gps off toggles GPS, and !advert sends an immediate advert (0 hop). Off by default; combines with the existing query commands in one message the same way (!batt !gps on4.10V | GPS: on).
    • !gps fix [seconds] — single-shot GPS location, no need to leave GPS running. Turns GPS on (if it wasn't already), waits for a stabilised fix (HDOP ≤ 2.0 — falls back to ≥8 satellites on GPS hardware that doesn't report HDOP — then averages for 10s), sends the position, and restores GPS to whatever state it was in before — up to a 90s timeout by default (override with an optional argument, clamped to 15-300s, for a poor sky view where 90s isn't always enough), after which it reports a partial fix (if it got at least some samples) or failure. Replies in two parts: an immediate "acquiring fix..." ack, then the actual position as a follow-up message once ready. Only one fix request can be in flight at a time (a second one gets "fix already pending"); same Actions toggle as !buzz/!gps/!advert.
    • Bot Trigger fields accept multiple phrases. Pack several trigger words into one Trigger field, comma-separated (hi,hello there,yo) — matching any one of them fires the reply, same as before for a single phrase.
    • Remote Bot Actions gain !gpio1..!gpio4 (Wio Tracker L1 only — 4 otherwise-unused pins). Each pin is independently set to Off/Input/Output (GPIO1/GPIO2 also offer Analog) from a new Tools › GPIO screen; !gpio1 on/!gpio1 off drives an Output pin remotely, a bare !gpio1 reports the current mode and reading (including a millivolt value in Analog mode). Gated by the same per-target Actions toggle as !buzz/!gps/!advert.
    • GAT562 30S solo builds now use the same OLED font as the Wio Tracker L1. The misc-fixed 6x9 font (full Latin, Greek and Cyrillic) had only ever reached the SH1106 and e-ink drivers, so on this board every keyboard alphabet beyond ASCII, and every accented contact name, was still being transliterated (ŁódźLodz) or drawn as a filled block. Solo builds only — the font costs ~14 KB of flash and the repeater/companion builds have no keyboard to type those alphabets on; they keep the built-in font and are byte-for-byte unchanged.

    Work in progress territory

    • Optional CardKB support (Wio Tracker L1, Grove I2C) — full keyboard-only navigation. Plug an M5Stack CardKB into the Grove connector and it's auto-detected at boot — no setting to flip. Typing goes straight into the message/name field instead of navigating the on-screen keyboard grid, always as plain Latin text regardless of the Settings › Keyboard language/type — arrows and Esc work as expected everywhere else too (including inside the placeholder and accent popups). Enter acts like the physical centre button (advances the on-screen grid selection) rather than submitting, so Fn+Enter sends the message/confirms the field from anywhere, and Fn+<letter> opens that letter's accent popup directly (no arrow-hunting needed — handy for Polish/Czech/etc. diacritics — and works no matter what language/keyboard type is configured, since CardKB always types Latin either way). Tab is the Hold-Enter equivalent everywhere, including message reply/navigate and the Bot/Admin/Repeater menus — same single shortcut whether or …
  2. v1.23.1 # 12 days ago · 2026-07-24 19:41 UTC

    MeshCore Solo Companion Firmware v1.23.1

    Fixes

    • Tools › Admin login could get stuck on "Logging in..." forever if the remote node never sent back a reply — most commonly after its admin/room password was changed, since the on-device UI auto-retries the old saved password with no timeout to fall back on. It now gives up after the same estimated-timeout window the rest of Admin's commands use, forgets the stale saved password, and returns you to the picker to try again with the new one.
    • Changing a remote's admin password from Tools › Admin › System didn't update this device's own saved copy — the very next login attempt to that node retried the password you'd just replaced, hitting the "stuck on Logging in…" case above. The confirmation the remote echoes back is now saved as the new on-device password to match.
    • A slow-to-arrive Admin login reply, after you'd already given up on it (Cancel or the new timeout above), could get delivered to whatever screen you'd since moved to and silently overwrite your saved password for that node with unrelated data. Giving up on a login now also stops tracking it mesh-side, so a late reply is simply dropped instead of misrouted.
    • Opening Admin on a second, password-less node while an earlier room/repeater login elsewhere was still in flight could wrongly show you as logged in as admin on the new node — a reply meant for the earlier login was accepted as this node's own since both merely looked like "a login is pending," without checking it actually named this node. Now checked.
  3. v1.23 # 19 days ago · 2026-07-17 20:17 UTC

    MeshCore Solo Companion Firmware v1.23

    What's new

    • Nodes is now the single node hub. "Nearby Nodes" is renamed Nodes and gains on-device contact management — no phone app needed: Hold Enter on a row opens Add contact (for a scanned-but-unknown node), Favourite/Unfavourite (pins to the first free Favourites Dial slot, shown as a star in the list), and Delete contact (confirm first, defaults to Cancel). The filter strip (LEFT/RIGHT) is now a visible, wraparound tab carousel instead of a hidden mode. The old read-only Recent adverts home page is retired — its passively-heard nodes now simply show up in the Nodes list (All filter) — so there's one list instead of two.
    • On-device channel management. Messages › Channels gets a "+ Add channel" row and per-channel Edit/Delete — no phone app required. Adding a channel now starts with a type picker, matching the phone app: Public (re-adds the well-known default channel, no typing needed), Hashtag (type just a topic name, e.g. test — the channel name and secret are both derived from it, same convention as the app's #topic channels), or Private (manual Name + Secret, typing either a passphrase hashed to the channel secret, or the exact 32-hex-character key from a channel QR code).
    • Tools › Admin — administer a remote repeater/room from the device. Log into a node you have admin rights on (same self-healing saved-password handshake as room logins) and browse its settings in category tabs — System (name, owner info), Radio (Frequency/Bandwidth/Spreading factor/Coding rate/TX power), Routing (Repeat/Advert interval/Flood advert interval/Max hops), Actions (reboot, send advert, sync clock, …) — plus a free-text Custom command… escape hatch (with {}-key command-name completion) for anything not covered. Radio and Routing fields use a type-appropriate editor instead of raw text — a digit-cursor for Frequency (the same widget Settings' own Radio screen uses locally), discrete-set stepping for Bandwidth/Spreading factor/Coding rate, plain number steppers for the rest, and an ON/OFF toggle for Repeat — adjusting a value costs no mesh traffic until you actually confirm it with Enter (Cancel sends nothing). Reachable either from Tools › Admin (opens the same Nodes list to pick a target) or directly via a repeater/room's own Hold Enter › Admin action.
    • Auto-Reply Bot gains a third target: room servers, alongside DM and Channel, with its own trigger/reply/commands — the screen is redesigned as a circular tab carousel (Direct/Channel/Room/Other, LEFT/RIGHT to switch, UP/DOWN within a tab) instead of one long list. Each target's Enable and Commands toggle is now fully independent (they used to secretly share the DM tab's setting for Channel/Room too). New {name}/{hops} reply placeholders, a DM allow-list (all chat contacts or favourites only), and a dedicated stepper for Quiet Hours.
    • Keyboard: accent popup, selectable main script, better editing. Holding Enter on a Latin letter with accented variants (a c d e i l n o r s t u y z) now opens a one-row popup of that letter's accents — e.g. holding a offers á à â ã ä å ą — covering every European Latin-diacritic letter (Polish, Czech, Slovak, German, French, Spanish, Portuguese, Nordic, …) from one popup instead of a separate page per language. Settings › Keyboard splits Alphabet into Main and Additional: Main picks which script (Latin/Cyrillic/Greek) the keyboard opens on by default, Additional picks the second one reached via the #@/abc cycle key — so a Cyrillic or Greek typist can make their own script the default instead of always landing on Latin first. Shift is now one-shot by default (capitalises just the next letter; Hold Enter on Shift toggles the old sticky caps-lock back on), Hold Enter on Backspace clears the whole field, and UP from th …
Show all 20 releases →

Device compatibility (4)

✓ 4 Supported
DeviceMCURadioStatusNotes
Wio Tracker L1nrf52840Semtech SX1262✓ SupportedOLED variant (SSD1306/SH1106 128x64)
Wio Tracker L1 Pronrf52840Semtech SX1262✓ SupportedOLED variant — same firmware target as wio-tracker-l1
Wio Tracker L1 E-inknrf52840Semtech SX1262✓ SupportedE-ink variant (GxEPD2 250x122)
GAT-IoT GAT562 30snrf52Semtech SX1262✓ SupportedGAT562 30S Mesh Kit