JakubandClaude Opus 5.5 2f2db6045c fix(l2): WiFi fails to start or join - big statics and task stacks to PSRAM
WiFi starts and joins on internal RAM: ~42 KB the first time, ~25 KB after,
more for WPA. Free internal RAM had shrunk to ~20 KB after opening the map
(the tile decoder's 12 KB stack, the 32 KB I-cache, the DMA draw buffers,
UI statics), so a scan failed at once (esp_wifi_init: no memory) and a join
during a tile download timed out (AUTH_EXPIRE).

- ESP-IDF: CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY, and the esp_timer
  task stack 8 -> 4 KB (it uses ~0.4 KB). Rebuild the framework libs:
  pio run -e Wio_Tracker_L2_idf_libs.
- PSRAM_BSS (EXT_RAM_BSS_ATTR) on the UI's big statics: QR codes, map
  state, charts, lists. .dram0.bss 115 -> 66 KB.
- The tile decoder's and fetcher's task stacks in PSRAM.

Free internal RAM, idle: 48 -> 105 KB; WiFi up: 57 KB, 29 KB at the
lowest while downloading tiles.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 17:23:29 +02:00
2026-04-28 21:39:34 +10:00
2026-05-23 23:52:04 +02:00
2025-01-13 14:07:48 +11:00
2025-06-05 20:35:40 +12:00
2026-03-23 14:26:56 +01:00
2025-01-20 10:20:42 +11:00
2025-01-25 23:09:09 +11:00
2026-03-31 00:51:15 +13:00
2026-06-05 21:25:25 +12:00

MeshCore Solo

MeshCore Solo Companion Firmware

A fork of the official MeshCore companion radio firmware with a full standalone on-device UI — messages, contacts, GPS navigation and tools without a phone.

Try it live in your browser: solo.marekzegarek.com

Buy Me a Coffee

Discussion: MeshCore Discord — Solo firmware thread


Supported devices

Device MCU Display Firmware file
Seeed Wio Tracker L1 (OLED) nRF52840 SSD1306 / SH1106 128 × 64 solo-<version>-WioTrackerL1.uf2
Seeed Wio Tracker L1 (E-ink) nRF52840 GxEPD2 250 × 122, 4.2" 400 × 300 or 4.26" 800 × 480 solo-<version>-WioTrackerL1Eink-landscape.uf2, -portrait.uf2, solo-<version>-WioTrackerL1Eink42.uf2 or solo-<version>-WioTrackerL1Eink426.uf2
Seeed Wio Tracker L2 ESP32-S3 320 × 240 touch LCD solo-<version>-Wio-Tracker-L2-merged.bin
GAT562 30S Mesh Kit nRF52840 SSD1306 128 × 64 solo-<version>-GAT562-30S-Mesh-Kit.uf2
GAT562 Mesh Watch13 (experimental) nRF52840 SSD1306 128 × 64 solo-<version>-GAT562-Mesh-Watch13.uf2
Heltec LoRa32 V3 (experimental) ESP32-S3 SSD1306 128 × 64 solo-<version>-Heltec-v3-merged.bin
Heltec LoRa32 V4 (experimental) ESP32-S3 SSD1306 128 × 64 solo-<version>-heltec-v4-merged.bin
M5Stack Cardputer ADV (experimental) ESP32-S3 ST7789 TFT 240 × 135 solo-<version>-M5Stack-Cardputer-ADV-merged.bin
LilyGO T-Echo Lite + KeyShield (experimental) nRF52840 GxEPD2 250 × 122 solo-<version>-LilyGo-T-Echo-Lite-keyshield.uf2
ProMicro (experimental) nRF52840 SSD1306 128 × 64 solo-<version>-ProMicro.uf2

Firmware files are on the releases page. Every binary serves the companion app over both BLE and USB serial.

Heltec V3/V4 need a keyboard or joystick wired up; ProMicro needs a CardKB; the T-Echo Lite needs the KeyShield. The rest work out of the box.


Flashing

Warning

Coming from official or other custom firmware: back up your data in the companion app, then Erase flash in the MeshCore Flasher before flashing. Updating from an earlier Solo release doesn't need this unless the release notes say so.

nRF52840 boards — press reset twice quickly; the device shows up as a USB drive. Copy the .uf2 onto it.

ESP32-S3 boards — flash the -merged.bin at offset 0x0 with the MeshCore Flasher or esptool.py --chip esp32s3 write_flash 0x0 <file>-merged.bin. The Wio Tracker L2 then updates itself over WiFi (Settings › System › Firmware update).

Important

BLE has priority over USB serial: while a BLE connection is active the USB protocol is suspended.


Documentation

Documentation — getting started, messages, navigation, tools, settings, hardware and developer guides.

USB tools — on the Solo site (Chrome or Edge, Web Serial): screenshots of the device's screen and the GPS trail as GPX over USB, plus a preview of any GPX file. The same as the local scripts in tools/.


Building

pio run -e <env> -t upload                                  # build and flash over USB
FIRMWARE_VERSION=v1.0.0 bash build.sh build-firmware <env>  # release artifacts into out/

Environments are the *_solo_dual (OLED / e-ink) and *_solo_lvgl (touch) entries in solo/<board>/platformio.ini. The Wio Tracker L2 needs pio run -e Wio_Tracker_L2_idf_libs once before its first build (it rebuilds the framework libs for its ESP-IDF options). Optional hardware (CardKB, joystick, GPIO, buzzer…) is enabled with build flags. Releasing: RELEASE.md.

This README is protected from upstream merges via .gitattributes; after cloning run once git config merge.ours.driver true.


Contributors

Big thanks to vanous, marczykm, tchellow and 3urobeat.

Built on upstream MeshCore and its community.

S
Description
Companion firmware fork — offline GPS navigation (waypoints, compass, GPX export) on top of LoRa mesh messaging.
Readme
23 MiB
Languages
C 53.9%
C++ 40.9%
Python 2.2%
HTML 2%
Shell 0.9%