MeshCore Solo · Releases
from GitHub · updated 2026-06-2120 releases
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.
- Query commands — a DM or monitored-channel message is scanned for
- 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
^/varrows, 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).
- Proportional scrollbar with up/down triangle caps replaces the old
- 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.uf2for 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 robustness —
Waypoint/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_dualbuild 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.
- 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:
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
.uf2files 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
- Pwr save — hardware duty-cycle receive (SX126x
- 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,pingandPINGall trigger the bot, but the trigger no longer gets silently lowercased when saved. - Screenshot support in all solo builds —
ENABLE_SCREENSHOTis now enabled in every solo firmware build. No need to use a separate_devenvironment. 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.inibased on the_solo_dualenv suffix, no workflow changes required. AbstractUITask::onBLEDisconnected()virtual hook added — called bysetHasConnection()on transition to disconnected;UITaskoverrides it to set_next_refresh = 0.build.shgainsbuild-solo-firmwarescommand, backed bybuild_all_firmwares_by_suffix "_solo_dual".
- GAT562 30S Mesh Kit — the firmware now supports the GAT562 30S alongside the Wio Tracker L1 family. Pre-built
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
SoundNotifierextracted fromUITask::notify()— all buzzer/melody logic lives in one place, reducing future merge conflict surface with upstream.KeyboardWidgetis now a single shared instance across screens (saves ~1.5 KB heap).onDiscoveredAdvertextracted as a separate virtual so upstreamonDiscoveredContactkeeps its original 4-parameter signature.
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.
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).
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 compass — Tools › 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)
- Waypoints — Tools › 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/waypointsfile (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 compass — Tools › 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 labelshare 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 …
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.uf2andsolo-v1.14-eink.uf2 - E-ink screenshot support —
tools/screenshot.pynow 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 andlow_batt_mvcutoff 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 screenshot —
WioTrackerL1Eink_companion_dual_devenv 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 favourites —
ch_fav_bitmaskin 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_orderinstead 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/getBufferSizevirtuals so MyMesh no longer needs to know about concrete display types
- 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
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;Gindicator 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 rfshsetting in Settings › Display — controls how many partial refreshes occur before a cleansing full panel refresh - Schema versioning of saved preferences —
/new_prefsnow 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_idxwas silently read from the old sentinel byte (giving "min/mi" instead of km/h default) — schema bumped to0xC0DE0004, 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
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 rfshsetting in Settings › Display — controls how many partial refreshes occur before a cleansing full panel refresh - Schema versioning of saved preferences —
/new_prefsnow 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 mismatchover serial — expected, file is rewritten with the new sentinel on the next setting change
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_dualandWioTrackerL1Eink_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_settings→WioTrackerL1_companion_dual,WioTrackerL1Eink_companion_radio_dual→WioTrackerL1Eink_companion_dual - Workflow now triggers on
plus_*tags and correctly injects firmware version into both build jobs
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_dualfor 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
setTextSizeon the lock screen clock use_lemon_fontpreference 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
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_REQreplaces 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
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-switcherbuild 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-switcherfirmware 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-fontfirmware build replaced byfont-switcherbuild (from thefont-switcherbranch)
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-fontname 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_enabledflag - 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
- 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
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: ð þ
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
^/vno longer overlap the last characters of wrapped lines FS_LINE_Hcorrected from 9 to 8 px to match the Adafruit font cell height (was cutting off the last line)with_senderbuffer 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
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 touint16to avoid narrowing conversion
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,KeyboardWidgetmodules
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
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