MeshCore Ninja
← MeshCore Solo

MeshCore Solo · Releases

from GitHub · updated 2026-06-21

20 releases

  1. v1.19 # 5 days ago · 2026-06-16 08:11 UTC

    MeshCore Solo Companion Firmware v1.19

    What's new

    • Message delivery status — outgoing messages now show an end-to-end delivery marker, auto-scaled to the font (legible on landscape e-ink), in both the history list and the fullscreen view:
      • Direct messages (and room servers): pending → delivered (✓) → failed (✗), driven by the real end-to-end ACK. While pending, a row of dots shows one per send so auto-resend progress is visible.
      • Auto-resend — a pending DM whose ACK times out is re-sent automatically (reusing the original timestamp) until resends run out. Configurable count under Settings › Messages › Resend (0–5, default 2). Runs in the background, independent of which screen is open; incoming duplicates from retries are dropped.
      • Channels — ✓ appears only once a repeater echo confirms the message was relayed into the mesh. No echo is normal (flood has no recipient ACK), so no pending/fail is shown.
    • Auto-reply bot overhaul — the trigger/reply bot grows into a small auto-responder:
      • Query commands — a DM or monitored-channel message is scanned for ! tokens (!ping !batt !loc !time !temp !hops !status !help) and answered in one combined reply.
      • Away / reply-to-all — a lone * trigger replies to every message.
      • Separate DM and channel triggers, each with its own reply text.
      • Quiet hours — silence push replies during a chosen window (wraps midnight).
      • Throttling & anti-loop — per-contact DM throttle so one sender can't starve others; channel echo guard so the bot never answers itself; reply counter shown in the bot screen header.
    • Keyboard overhaul — one shared keyboard across all screens (reclaims duplicate RAM), icon keys (⇧ caps, ⎵ space, ⌫ delete, ✓ OK), and a second symbols page toggled with #@/abc.
    • UI refresh
      • Proportional scrollbar with up/down triangle caps replaces the old ^/v arrows, scaling with the font (1× OLED, 2× landscape e-ink); used by every scrollable list and the fullscreen message view. The redundant > selection marker is gone and rows shifted left to reclaim space.
      • Status-bar single-letter indicators (M/B/A/G) replaced with scalable mini-icons (mute, bluetooth, advert, trail).
    • Nearby Nodes reorganized — one list over two sources (stored contacts + live discover scan) with a unified detail/action menu. Type filter and sort are independent axes and persist across re-entry; the active filter is shown in the title and in empty-list messages.
    • Tools › Trail reorganized — a short two-level action menu (Hold Enter) replaces the flat ~12-item list; view-aware settings; a fitted square map grid; and the waypoint manager split out into its own component. No change to trail recording itself.
    • OTA updates — each solo release now ships a DFU .zip (solo-<ver>-<device>-ota.zip) for over-the-air / BLE-DFU updates, alongside the .uf2 for USB flashing.

    Fixes

    • GPS battery drain on shutdown — GPS is powered off before SYSTEMOFF, and uses the correct active-level (!PIN_GPS_EN_ACTIVE) instead of a hardcoded level.
    • Buzzer octave 8 — the RTTTL parser now fully accepts octave 8 instead of clamping it away (which could leak a digit into the next note's duration).
    • Trail file robustnessWaypoint/trail readers check every header read, so a truncated file is rejected instead of using a garbage count.

    Under the hood

    • OTA DFU zip is named and attached to releases by the _solo_dual build workflow; the per-build Actions artifact already carried it.
    • Large UI consolidation: shared drawList / header / key-decode helpers, deduplicated status-bar indicators, reusable scalable mini-icon facility (icons.h), and an audit-pass cleanup premoving dead code and redundant scroll-clamp logic.
  2. v1.18 # 7 days ago · 2026-06-14 08:22 UTC

    MeshCore Solo Companion Firmware v1.18

    New device support

    • GAT562 30S Mesh Kit — the firmware now supports the GAT562 30S alongside the Wio Tracker L1 family. Pre-built .uf2 files for all supported devices are published with each release — see the Supported Devices table.

    What's new

    • GAT562 30S Mesh Kit support — see above.
    • Battery saving (radio) — two new independent toggles under Settings › Radio:
      • Pwr save — hardware duty-cycle receive (SX126x SetRxDutyCycle): the radio cycles RX↔sleep autonomously and wakes on a preamble, cutting average RX current with only a small increase in receive latency
      • Auto pwr — Adaptive Power Control: trims TX power on strong links (based on ACK SNR) and ramps back up on weak or lost links; the home screen shows the live transmit power
    • BLE disconnect icon fix — the BLE status icon now updates immediately when the connection drops (e.g. out of range, supervision timeout). Previously it could stay active until the next UI polling cycle.
    • Bot trigger preserves case — the auto-reply trigger phrase is now stored exactly as typed. Matching remains case-insensitive, so Ping, ping and PING all trigger the bot, but the trigger no longer gets silently lowercased when saved.
    • Screenshot support in all solo buildsENABLE_SCREENSHOT is now enabled in every solo firmware build. No need to use a separate _dev environment. Use the Solo Tools web app to capture screenshots directly from the browser.

    Under the hood

    • CI matrix for solo firmware builds is now fully dynamic — new devices are picked up automatically from platformio.ini based on the _solo_dual env suffix, no workflow changes required.
    • AbstractUITask::onBLEDisconnected() virtual hook added — called by setHasConnection() on transition to disconnected; UITask overrides it to set _next_refresh = 0.
    • build.sh gains build-solo-firmwares command, backed by build_all_firmwares_by_suffix "_solo_dual".
  3. v1.17 # 12 days ago · 2026-06-09 15:33 UTC

    Wio Tracker L1 — Solo Firmware v1.17

    What's new

    • Nearby Nodes — navigate & save waypoints from the list — the context menu now exposes Navigate and Save waypoint directly from the Nearby list and detail view, so you no longer have to open the separate Tools → Waypoints screen. Long-press Options in the detail view also opens a Ping submenu.
    • Nearby Nodes — TIME sort filter — a new [TIME] filter sorts contacts by last-seen time (most recent first) instead of distance, useful when GPS is unavailable.
    • Battery indicator calibrated — the 100 % ceiling of the LiPo discharge curve was corrected from 4200 mV to 4170 mV, matching what the board's charger actually delivers.
    • Advert sound scope control — a new Sound → Advert setting lets you choose whether advert notifications play for all nodes or only direct (zero-hop) neighbours, cutting noise on busy meshes.
    • Sound slot "None" option — DM, channel and advert melody slots can now be set to None to silence that notification category entirely without muting everything.
    • Mark-as-read feedback — marking messages read (per-contact or per-channel) now shows a brief "N marked read" confirmation on screen.
    • [Web tool] GPX Downloader — a standalone web page for downloading saved GPX trails from the device over the browser's Web Serial API, no desktop app required.

    Under the hood

    • SoundNotifier extracted from UITask::notify() — all buzzer/melody logic lives in one place, reducing future merge conflict surface with upstream.
    • KeyboardWidget is now a single shared instance across screens (saves ~1.5 KB heap).
    • onDiscoveredAdvert extracted as a separate virtual so upstream onDiscoveredContact keeps its original 4-parameter signature.
  4. v1.16 # 15 days ago · 2026-06-06 16:35 UTC

    Wio Tracker L1 — Solo Firmware v1.16

    Rebases the Solo fork onto upstream MeshCore v1.16.0 (254 commits)

    What's new (from upstream)

    • NRF52 power-saving — the companion now puts the MCU to sleep whenever there's no pending work, instead of looping continuously between events.
    • Better reception of longer messages at low spreading factors — the LoRa preamble is now 32 (was 16) for SF below 9, which makes longer frames more reliable on weak links.
    • More robust sensors — the I²C sensor subsystem was rewritten to probe the bus before touching any device, so an absent or misbehaving sensor can no longer hang or crash the node.
    • Charging-aware shutdown — the device no longer auto-shuts-down on low battery while it's on external power, and shows a shutdown warning on OLED.
    • New companion command for sending raw packets, plus assorted CLI additions (flood.max.advert, flood.max.unscoped, region hierarchy) and bounds-checking fixes that the phone app and repeaters benefit from.
    • Battery-voltage reading fix carried in from upstream.
  5. v1.15.1 # 16 days ago · 2026-06-05 11:31 UTC

    Wio Tracker L1 — Solo Firmware v1.15.1

    Hotfix for Bluetooth pairing and buzzer regressions in v1.15 (introduced by the Advert-sound change). No schema change — upgrade in place from v1.15.

    Fixes

    • Bluetooth pairing PIN is shown again — on the published OLED + e-ink (dual BLE+USB) builds the pairing PIN was never drawn, so the phone asked for a code that wasn't displayed and pairing failed. The PIN now appears on the Bluetooth home page while BLE is on and not yet bonded.
    • Auto buzzer mute works again — in v1.15 "Auto" was effectively always muted on dual builds (the connection state was hardcoded true). It now mutes only when a companion app is actually connected — BLE bonded or a host holding the USB serial port open — and stays audible on charge-only / no host. (Plain serial monitors that assert DTR count as connected.)
    • Bluetooth status indicator — the top-bar BT dot again reflects a real BLE connection instead of showing connected permanently.
    • New-message display wake — the screen wakes for an incoming message again when no app is connected.

    Background

    v1.15's advert-sound feature broadened the internal "connected" flag from BLE-bonded to any transport, but the dual interface always reports its send-fallback as connected — so everything keyed off "connected" (PIN prompt, Auto mute, BT indicator, message-wake) misbehaved. This release splits the two notions: BLE-specific UI uses the BLE bond state, while Auto mute / message-wake use a new "app connected over BLE or USB" check (USB detected via the CDC DTR line).

  6. v1.15 # 17 days ago · 2026-06-04 15:35 UTC

    Wio Tracker L1 — Solo Firmware v1.15

    Adds a full GPS navigation suite on top of Solo v1.14 — the L1 becomes a standalone off-grid navigator, no phone required.

    Highlights

    • Waypoints — mark your current spot or type coordinates, give it a short label, then get live bearing + distance back to it. Ideal for car / camp / water / a meeting point.
    • GPS compassTools › Compass: a heads-up heading tape derived from GPS course-over-ground. No magnetometer needed.
    • Navigate to anything — a saved waypoint, the start of your trail (backtrack), a node from Nearby Nodes, or a location someone texts you.
    • Share & save locations over the mesh — send a waypoint in a message; on the other end, navigate to or save any shared location with one menu.
    • Global Units setting — one Metric / Imperial switch (Settings › System) drives every distance and speed in the UI.
    • Advert sound — an optional audible "in range" heartbeat: the device chirps when it receives an advert from another node — pair it with Auto-Advert to keep tabs on a buddy hands-free.

    Changes

    Navigation (new)

    • WaypointsTools › Trail › Hold Enter: Mark here drops one at the current GPS fix; Waypoints opens the list, which carries a synthetic Trail start backtrack row, a usage counter (WAYPOINTS 3/16), and a + Add by coords row to enter a point by lat/lon/label with no fix required (hemisphere chosen with LEFT/RIGHT since the keyboard has no minus key). Per-waypoint Rename / Delete / Send, plus Clear waypoints. Stored in their own /waypoints file (16 max) — independent of the trail and not cleared by Reset trail.
    • Navigate-to-point view — distance plus two absolute bearings, To: (target) and Hdg: (your course over ground), compared by eye. Reused by waypoints, trail backtrack, Nearby-node navigation and message-shared locations.
    • GPS compassTools › Compass: a scrolling N..E..S..W heading tape under a fixed travel-direction pointer, with a large degrees + cardinal readout. Works whether or not a trail is recording.
    • Navigate to a node — Nearby Nodes detail → Hold Enter now opens an Options menu (Navigate / Ping); Navigate opens the bearing/distance view targeting the node's last-known position.
    • Trail map as a live view — the Map draws your current position and all waypoints continuously, even with no trail recording. While a trail exists it frames the recorded route and clamps far-off waypoints to the nearest edge (a distant mark can't blow up the scale); with no trail it auto-fits to your waypoints and position. Markers show the first two label characters, placed edge-aware so labels stay on-map.
    • Navigate / save a shared location — any message carrying a lat,lon (what {loc} inserts) or a [WAY]lat,lon label share offers Navigate and Save waypoint from its Hold Enter menu — on the history row or in fullscreen, for DMs and channels. Send on a waypoint shares it to a contact or channel, pre-filling the message to confirm.
    • Waypoints in GPX — the GPX export now includes saved waypoints as <wpt> elements (label → <name>, plus <time>) alongside the track, so they import as pins in OsmAnd / Garmin / GPX Studio.

    Units

    • Global Metric / Imperial (Settings › System) drives every distance and speed: Nearby Nodes, Trail (Summary, List deltas, waypoint distances), the navigate-to-point view, the trail min-distance gate (5/10/25/100 m ↔ 15/30/75/300 ft) and the map scale bar.
    • Trail readout — the action menu's old four-way km/h·mph·min/km·min/mi cycle is now a Speed / Pace toggle; the unit follows the global setting.

    Notifications

    • Advert sound — Settings › Sound gains an AD sound entry (built-in / Melody 1 / Melody 2). The device plays it whenever it receives an advert from any node; combined with Auto-Advert on both ends it acts as a hands-free "still i …
  7. v1.14 # 23 days ago · 2026-05-29 10:59 UTC

    Wio Tracker L1 — Solo Firmware v1.14

    Based on MeshCore upstream v1.15.

    Highlights

    • Renamed Plus → Solo — to better reflect that this firmware is designed for off-grid, standalone use without needing a companion app on the phone; release artefacts are now solo-v1.14-oled.uf2 and solo-v1.14-eink.uf2
    • E-ink screenshot supporttools/screenshot.py now works with both OLED and the e-ink panel; auto-detects rotation 0–3 and uses GxEPD2's visible dimensions; build with -D ENABLE_SCREENSHOT
    • Battery percentage field — new Batt % option for the Clock page dashboard, now sharing the same LiPo discharge curve and low_batt_mv cutoff as the top-bar indicator (so both readings agree)
    • Channel favourites — mark individual channels as favourites from the channel context menu; new Settings › Contacts filter to hide non-favourite channels
    • Context menu cycling unified — LEFT/RIGHT now cycles values everywhere (Notif, Melody, Fav, Duration, BPM) without closing the popup; ENTER reserved for one-shot actions
    • Popup menus expand to fit the screen — on portrait e-ink up to 16 items fit without scrolling; on OLED items are now hard-capped to what physically fits

    Changes

    New features

    • E-ink screenshotWioTrackerL1Eink_companion_dual_dev env enables capture; protocol header widened to 11 bytes (display type, rotation, uint16 width/height/chunk fields) so it scales to any GxEPD2 panel and rotation
    • Dashboard Batt % field — new Clock-page option computed from the same piecewise LiPo curve used by the top-bar battery indicator
    • Channel favouritesch_fav_bitmask in prefs; toggle from Channel context menu; Settings › Contacts › Channels filter (all / favourites only)
    • GPS trail — scale grid on map — toggle from the Trail action menu (Grid row); cycles with LEFT/RIGHT now (previously ENTER only)
    • Ringtone editor migrated to PopupMenu — Duration and BPM now cycle in-place with LEFT/RIGHT; separate BPM+/BPM- rows removed

    Fixes

    • OLED joystick rotation — enforce reset moved after prefs load, so stale e-ink rotation values no longer reverse joystick mapping on OLED builds (FEAT_JOYSTICK_ROTATION_SETTING=0)
    • First melody note duration — preview-only side effect that shortened the first note in playMelody() no longer corrupts the stored sequence
    • Home pages migration — pages added in this release (Favourites, Trail) are appended to stored page_order instead of being hidden; SHUTDOWN is evicted from a full order to make room for required pages
    • Pin picker fallback — pressing + on an empty Favourites tile with no starred contacts and no recent DMs now lists all chat contacts instead of showing "No fav contacts"
    • Popup menus on OLED — height-clamped to what fits on screen (max 4 items at 64 px), so long context menus no longer draw outside the panel
    • Trail action menu — Grid toggle now also works with LEFT/RIGHT (not just ENTER); Export labels shortened to Export (live) / Export (saved) to fit
    • E-ink default font — unknown-character fallback rectangle aligned with the text cell baseline instead of one pixel below
    • Build — added DisplayDriver::getBuffer/getBufferSize virtuals so MyMesh no longer needs to know about concrete display types
  8. v1.13 # 26 days ago · 2026-05-26 14:00 UTC

    Wio Tracker L1 — Plus Firmware v1.13

    Based on MeshCore upstream v1.15.

    Highlights

    • Favourites dial — new home page with a 2×3 grid of pinned contacts; Enter opens the DM directly, pin/unpin from the contact context menu in the DM list
    • GPS trail — Tools › Trail records your route in a RAM ring (512 points); three views cycle with LEFT/RIGHT: Summary (distance, time, avg speed/pace), Map (auto-fit with segment markers), List (per-point timestamps and deltas); Hold Enter for Start/Stop, Save/Load to flash, GPX export over USB Serial, and settings (min-distance gate, speed units)
    • Mark-all-read — Hold Enter on the DM / Channels / Rooms mode-select screen to mark everything in that category read at once
    • Unicode messages on both displays — Cyrillic, Greek, Polish, Czech, Baltic and other Latin Extended scripts now render correctly in messages, keyboard preview and reply prefix on both OLED and e-ink when the Lemon font is enabled
    • E-ink full-refresh interval — Settings › Display › Full rfsh lets you pick how many partial refreshes happen before a cleansing full refresh (off / 5 / 10 / 20 / 30); reduces visible ghosting on long sessions (e-ink only)
    • Faster long-message rendering — fullscreen message view now wraps text in O(n) instead of O(n²); noticeably snappier on long messages, especially with the Lemon font on e-ink

    Changes

    New features

    • Favourites dial home page — 2×3 grid of pinned contacts; Enter on a filled tile opens the DM, Enter on an empty tile opens an in-place picker (upstream-favourited contacts first, then recent DMs); LEFT/RIGHT reorders in the Home Pages settings
    • GPS trail — background sampling with configurable min-distance gate (5 / 10 / 25 / 100 m); segments tracked across start/stop cycles; single flash slot /trail (binary, magic-versioned header); GPX 1.1 export streams live ring or saved file straight to USB Serial; G indicator in status bar blinks while active
    • Mark-all-read — Hold Enter on the message-type screen clears unread counters for the highlighted mode (DM / Channels / Rooms)
    • Settings sections collapsible — all sections start collapsed; Enter on a section header expands/collapses it, making long lists (Home Pages, Messages) much faster to navigate
    • E-ink: Full rfsh setting in Settings › Display — controls how many partial refreshes occur before a cleansing full panel refresh
    • Schema versioning of saved preferences — /new_prefs now carries a tail sentinel so older saves are detected and treated safely on load; file self-heals on next save

    Fixes

    • Sensors home page: Enter no longer accidentally toggles GPS on/off while viewing sensor readings
    • Upgrade from v1.11 with trail settings in flash: trail_units_idx was silently read from the old sentinel byte (giving "min/mi" instead of km/h default) — schema bumped to 0xC0DE0004, corrupted value reset to 0 on mismatch
    • Lemon font now correctly decodes multi-byte UTF-8 on the e-ink display (Cyrillic, Greek, Polish accents, etc.); previously rendered as garbage glyphs
    • Keyboard preview translates UTF-8 through the active font path, so non-ASCII input shows correctly while typing
    • Reply path: the @[nick] prefix is now preserved verbatim — a nickname containing {loc} / {time} is no longer substituted as a placeholder
    • Home page order: validity flag prevents a junk byte in flash from being interpreted as a "custom order" state
    • E-ink: unknown-character fallback rectangle now aligns to the top of the text cell instead of sitting one pixel below the line
    • E-ink: Lemon glyphs at text size 2/3 (splash version, clock) no longer render at size 1 scale
  9. v1.12 # 28 days ago · 2026-05-24 18:55 UTC

    Wio Tracker L1 — Plus Firmware v1.12

    Based on MeshCore upstream v1.15.

    Highlights

    • Unicode messages on both displays — Cyrillic, Greek, Polish, Czech, Baltic and other Latin Extended scripts now render correctly in messages, keyboard preview and reply prefix on both OLED and e-ink when the Lemon font is enabled
    • E-ink full-refresh interval — Settings › Display › Full rfsh lets you pick how many partial refreshes happen before a cleansing full refresh (off / 5 / 10 / 20 / 30); reduces visible ghosting on long sessions (e-ink only)
    • Faster long-message rendering — fullscreen message view now wraps text in O(n) instead of O(n²); noticeably snappier on long messages, especially with the Lemon font on e-ink

    Changes

    New features

    • E-ink: Full rfsh setting in Settings › Display — controls how many partial refreshes occur before a cleansing full panel refresh
    • Schema versioning of saved preferences — /new_prefs now carries a tail sentinel so older saves are detected and treated safely on load; file self-heals on next save

    Fixes

    • Lemon font now correctly decodes multi-byte UTF-8 on the e-ink display (Cyrillic, Greek, Polish accents, etc.); previously rendered as garbage glyphs
    • Keyboard preview translates UTF-8 through the active font path, so non-ASCII input shows correctly while typing
    • Reply path: the @[nick] prefix is now preserved verbatim — a nickname containing {loc} / {time} is no longer substituted as a placeholder
    • Home page order: validity flag prevents a junk byte in flash from being interpreted as a "custom order" state
    • E-ink: unknown-character fallback rectangle now aligns to the top of the text cell instead of sitting one pixel below the line
    • E-ink: Lemon glyphs at text size 2/3 (splash version, clock) no longer render at size 1 scale

    Upgrade notes

    • Settings and message history are preserved across upgrades from v1.11
    • First boot after upgrade may log prefs schema sentinel mismatch over serial — expected, file is rewritten with the new sentinel on the next setting change
  10. v1.11 # 29 days ago · 2026-05-23 22:53 UTC

    Wio Tracker L1 — Plus Firmware v1.11

    Based on MeshCore upstream v1.15.

    Highlights

    • Joystick rotation — joystick input mapping can now be rotated independently of the display, useful in custom enclosures (e-ink only)
    • Home screen page ordering — all home pages including Clock can now be reordered and toggled in Settings › Home Pages; position indicators are shown immediately on first render
    • Unified firmware branch — OLED and e-ink builds are now maintained in a single branch; firmware files renamed to WioTrackerL1_companion_dual and WioTrackerL1Eink_companion_dual

    Changes

    New features

    • E-ink: runtime joystick rotation setting in Settings › Display — rotates directional input 0° / 90° / 180° / 270° independently of display rotation
    • Settings › Home Pages: LEFT/RIGHT reorders any page in the navigation sequence; ENTER toggles pages ON/OFF (Settings and Messages are always visible and cannot be disabled)

    Fixes

    • Home Pages: several visibility and ordering bugs fixed
    • Display: unknown-character block rendering unified across OLED and e-ink builds

    Build / CI

    • Firmware environments renamed: WioTrackerL1_companion_radio_dual_settingsWioTrackerL1_companion_dual, WioTrackerL1Eink_companion_radio_dualWioTrackerL1Eink_companion_dual
    • Workflow now triggers on plus_* tags and correctly injects firmware version into both build jobs
  11. v1.15-plus.1.10 # 1 month ago · 2026-05-22 22:07 UTC

    Wio Tracker L1 — Plus Firmware v1.15-plus.1.10

    Based on MeshCore upstream v1.15.

    Highlights

    • E-ink display support — the Wio Tracker L1 now has a dedicated e-ink firmware variant; all screens have been adapted for the 250 × 122 / 122 × 250 panel with full portrait and landscape support
    • Home screen page ordering — all home pages can now be reordered directly in Settings; Settings and Messages are always present and cannot be disabled
    • Runtime font switcher — choose between the default Adafruit font and the Lemon Unicode font in Settings › Display
    • Single dual-serial firmware — one build supports both BLE and USB serial; separate BLE/USB variants are retired
    • Unified firmware — the previously separate font-switcher build has been merged into the main firmware; there is now a single OLED build and a single e-ink build

    Changes

    New features

    • E-ink firmware: new build target WioTrackerL1Eink_companion_radio_dual for Wio Tracker L1 with e-ink display
    • E-ink: all home screen pages (Clock, Recent, Radio, Bluetooth, Advert, Tools, Settings, Messages, Shutdown) adapted for the e-ink panel
    • E-ink: adaptive layout engine — all screens reflow correctly in both portrait (122 × 250) and landscape (250 × 122) orientations
    • E-ink: runtime display rotation setting in Settings › Display — applied immediately and persisted across reboots
    • E-ink: clock seconds suppressed by default to reduce panel refresh wear
    • E-ink: Lemon font support with pixel-accurate glyph scaling
    • Settings › Home Pages: LEFT/RIGHT reorders any page in the navigation sequence; ENTER toggles pages ON/OFF (except Settings and Messages, which are always visible)
    • Settings › Display: runtime font selection — Default (Adafruit) or Lemon (Unicode, pixel-accurate wrap)
    • Settings › Display: 12 h / 24 h clock format toggle (default 24 h)

    Fixes

    • MeshCore logo on splash screen is centre-cropped rather than overflowing in portrait mode
    • Lemon font glyphs now scale correctly with setTextSize on the lock screen clock
    • use_lemon_font preference is now persisted to flash and survives reboots
    • Strip @[nick] reply prefix from channel and DM history card previews

    Build / CI

    • Font-switcher firmware variant merged into the main OLED build — no separate download needed
  12. v1.15-plus.1.9 # 1 month ago · 2026-05-21 07:37 UTC

    Wio Tracker L1 — Plus Firmware v1.15-plus.1.9

    Based on MeshCore upstream v1.15.

    Highlights

    • Active node discovery — the Nearby screen now sends a live discovery ping and displays responding nodes (repeaters, sensors, rooms) with RSSI, SNR and remote SNR. Tap Enter on a node for a full-screen detail view including the public key.

    Changes

    New features

    • Nearby screen: active node discovery via NODE_DISCOVER_REQ replaces the old passive advert scan; nodes respond with name, type, RSSI and SNR data
    • Nearby screen: each discovered node is shown as a 2-line boxed card with RSSI, SNR and remote SNR
    • Nearby screen: navigate discovered nodes with UP/DOWN; press Enter to open a full-screen detail view showing name, public key (base64), RSSI, SNR, remote SNR and known/new status
  13. v1.15-plus.1.8 # 1 month ago · 2026-05-20 08:40 UTC

    Wio Tracker L1 — Plus Firmware v1.15-plus.1.8

    Based on MeshCore upstream v1.15.

    Highlights

    • Message age in history — channel and DM history lists now show how old each message is ("3m", "2h", ">1d") next to the sender name.
    • Runtime font switcher — the font-switcher build now lets you toggle between the default font and the Lemon font directly in Settings › Display, without flashing a separate firmware. Lemon covers PL, DE, CZ/SK, FR, NO, HU, HR, TR, LT, RU, GR character sets.

    Changes

    New features

    • Message age indicator in DM and channel history lists: messages show a compact age string ("3s", "5m", "2h", ">1d") derived from the RTC timestamp
    • Font switcher: font-switcher firmware build includes both the default Adafruit font and the Lemon bitmap font; toggle in Settings › Display › Font (saved to flash, takes effect immediately)

    Bug fixes

    • Missing space after "Type:" and "Seen:" labels in NearbyScreen detail view

    Internal

    • CI: lemon-font firmware build replaced by font-switcher build (from the font-switcher branch)
  14. v1.15-plus.1.7 # 1 month ago · 2026-05-19 14:00 UTC

    Wio Tracker L1 — Plus Firmware v1.15-plus.1.7

    Based on MeshCore upstream v1.15.

    Highlights

    • Reply to messages — long-press Enter on any message in DM or channel history to reply. A "Reply" popup appears; confirming pre-fills the keyboard or quick message with @[nick] so the recipient is clearly addressed.
    • Reply context in fullscreen view — when opening a reply message fullscreen, a "To: nick" bar is shown under the sender name and the message body is displayed without the address prefix.
    • New font build - firmware with lemon-font name supports extended alphabet range: PL, DE, C/S, FR, NO, HU, HR, TR, LT, RU, GR

    Changes

    New features

    • Reply action: long-press Enter on a selected message in DM or channel history to open the Reply popup; works from both the list view and the fullscreen view
    • Replying opens the standard message picker — compose via keyboard (pre-filled with @[nick]) or choose a quick message (prefix is prepended automatically)
    • Fullscreen message view: reply messages show a "To: nick" header below the sender; non-ASCII characters in nicks are correctly transliterated for the OLED font
    • In Tools menu Char Test lets you preview all supported letters.

    Bug fixes

    • AutoLock setting was not persisted across reboots
    • Channel bot was responding even when the bot was disabled via bot_enabled flag
    • Quick-message template expansion buffer was 80 bytes — increased to 140 to match the maximum message length
    • Scroll arrows in fullscreen view no longer overlap the last character of wrapped text lines

    Performance

    • Lock screen sensor dashboard fields now share a single querySensors() I2C call per render
  15. v1.15-plus.1.6 # 1 month ago · 2026-05-17 16:44 UTC

    Wio Tracker L1 — Plus Firmware v1.15-plus.1.6

    Based on MeshCore upstream v1.15.

    Highlights

    • Screen lock — hold Back + 3× Enter to lock/unlock the device. Locked screen ignores incoming messages, shows clock on button press, and can auto-lock when the display turns off.
    • Extended diacritic support — UTF-8 transliteration now covers Czech, Slovak, Scandinavian, Hungarian, Romanian, Croatian, Turkish, Baltic, and Icelandic characters in addition to existing Polish/Latin coverage.

    Changes

    New features

    • Screen lock: hold Back and press Enter 3 times to lock/unlock; hint popup guides the user through the sequence
    • Lock screen displays clock, date, and two configurable sensor values (reuses Dashboard Config fields)
    • Settings: new AutoLock toggle — automatically locks when display turns off
    • Auto-advert: added 30-second minimum interval option

    Performance

    • Lock screen: sensor fields now share a single querySensors() I2C call per render instead of one call per field

    Transliteration additions

    • Czech/Slovak: č š ž ř ě ů ď ť ň ľ ĺ ŕ
    • Scandinavian: å ø æ
    • Hungarian: ő ű
    • Romanian: ă ș ț (plus legacy cedilla variant ţ)
    • Croatian: đ
    • Turkish: ğ ş ı
    • Baltic (Lithuanian/Latvian): ā ē ī ū ģ ķ ļ ņ ŗ ų ė į
    • Icelandic: ð þ
  16. v1.15-plus.1.5 # 1 month ago · 2026-05-16 22:21 UTC

    Wio Tracker L1 — Plus Firmware v1.15-plus.1.5

    Based on MeshCore upstream v1.15.

    Highlights

    • Polish and Latin diacritic support — characters like ą, ć, ę, ł, ń, ó, ś, ź, ż (and French, German, Spanish equivalents) are now transliterated to their base ASCII letters instead of rendering as garbage on the display.
    • Bug fixes — several correctness issues from v1.4 addressed.

    Changes

    New features

    • Bot: separate 10-second cooldown for DM replies and channel replies independently
    • UTF-8 transliteration in all text display paths (message list, fullscreen view, contact names, channel names)

    Bug fixes

    • Bot no longer triggers on the sender's nickname — trigger is matched against the message body only
    • "Low Battery / Shutting Down" text was rendered at size 2, overflowing the screen — fixed to size 1
    • Display brightness setting was not applied during the boot loading screen
    • Fullscreen message view: scroll arrows ^/v no longer overlap the last characters of wrapped lines
    • FS_LINE_H corrected from 9 to 8 px to match the Adafruit font cell height (was cutting off the last line)
    • with_sender buffer in bot channel reply enlarged from 160 to 240 bytes to prevent overflow

    Performance

    • Static screens (Settings, Nearby, Tools, Bot, etc.) reduced render polling from 300 ms to 2000 ms, lowering unnecessary SPI and CPU activity during idle
  17. v1.15-plus.1.4 # 1 month ago · 2026-05-15 22:40 UTC

    Wio Tracker L1 — Plus Firmware v1.15-plus.1.4

    Based on MeshCore upstream v1.15.

    Highlights

    • Dual ringtone slots — compose and store two independent melodies on the device, assign them as notification sounds per message type or override individually per channel and per contact.
    • Working buzzer volume — volume control now works correctly on nRF52; a preview tone plays on each change so you hear the result immediately.
    • Visual consistency — buzzer volume bar now matches the display brightness bar in appearance.

    Changes

    New features

    • Ringtone Editor: second melody slot (M2), switchable from within the editor
    • Settings: DM Melody and Channel Melody — choose built-in, M1, or M2 as notification sound
    • Per-channel melody override in channel context menu (long press) — global / M1 / M2
    • Per-contact melody override in DM context menu — global / M1 / M2
    • Settings: buzzer volume control (1–5) with live preview tone on each change
    • Quick reply templates renamed from M1–M10 to Q1–Q10 to avoid confusion with melody slot identifiers

    Upstream

    • fix(mesh): widen TRACE offset to uint16 to avoid narrowing conversion
  18. v1.15-plus.1.3 # 1 month ago · 2026-05-14 18:39 UTC

    Wio Tracker L1 — Plus Firmware v1.15-plus.1.3

    Based on MeshCore upstream v1.15.

    Highlights

    • Auto-Advert — new tool that periodically broadcasts a 0-hop advert with your GPS position.
    • Nearby Nodes overhaul — Favourites filter, cardinal bearing display (N/NE/E…), last-heard time in detail view, periodic detail refresh. Paired with auto-advert gives you possibility to easily locate your friends.
    • Status bar polish — node name is now ellipsized to fit, blinking A indicator appears left of the BT indicator when Auto-Advert is running.
    • Clock dashboard — 3 data fields give you ability to display the data you need
    • Sensor placeholders — keyboard picker and message placeholders now support all available sensor data.

    Changes

    New features

    • Auto-Advert tool in Tools screen — periodic 0-hop advert with GPS coordinates
    • NearbyScreen: Favourites as default filter, ALL / Companion / Repeater / Room / Sensor filters
    • NearbyScreen: bearing shown as degrees + cardinal direction (e.g. 142d (SE))
    • NearbyScreen: last-heard time (Seen: 3m ago) in contact detail view
    • NearbyScreen: detail view auto-refreshes every 10 s; returns to list if contact disappears
    • Status bar: blinking A indicator
    • Status bar: node name ellipsized (longni...) when status icons would overlap
    • Clock dashboard: new "Messages" field (total unread DM + channel + room count)
    • DM fullscreen view: navigate between messages with left/right (left = newer, right = older)

    Fixes

    • When connected to the app, message counter is cleared.
    • Status bar icons (BT, mute) aligned to correct vertical position; battery icon height corrected
    • Channel message view: removed # prefix from channel name in title bar
    • Various internal refactors: reusable PopupMenu, FullscreenMsgView, KeyboardWidget modules
  19. v1.15-plus.1.2 # 1 month ago · 2026-05-13 20:57 UTC

    Wio Tracker L1 — Plus Firmware v1.15-plus.1.2

    Based on MeshCore upstream v1.15.

    Highlights

    • bug fixes and improvements of current features
  20. v1.15-plus.1 # 1 month ago · 2026-05-12 19:25 UTC

    Wio Tracker L1 — Plus Firmware v1.15-plus.1

    Based on MeshCore upstream v1.15.

    Highlights

    Messages

    • Full channel and DM messaging with on-screen keyboard
    • Quick reply templates (10 slots) with {time} and {loc} placeholders
    • Room Servers support alongside DMs and Channels
    • Per-channel notification settings via long-press context menu
    • Unread badges per category (DM / channel / room)
    • Fullscreen message preview with left/right navigation between messages

    Settings

    • Brightness, auto-off, battery display mode, clock seconds toggle
    • Buzzer: On / Off / Auto (auto-mutes when connected via Bluetooth)
    • Buzzer volume (5 levels)
    • Home page visibility toggles
    • TX power, timezone, low battery threshold, GPS interval
    • Contact filters (favourites / all) for DMs and Room Servers

    Clock Screen

    • Dedicated home page with date/time synced from GPS or Bluetooth
    • Configurable timezone offset

    Tools Screen

    • Ringtone editor — step sequencer, up to 32 notes, BPM and duration control
    • Auto-Reply Bot — responds to all incoming DMs; optionally monitors a selected channel with a separate reply text; shared trigger word; placeholder support

    Other

    • LiPo discharge curve for accurate battery percentage
    • RTC time persistence across reboots
    • Hardware watchdog
    • Energy optimizations
    • Sensors page with full LPP type support