On an 800x480 panel the doubled 6x9 font and the status bar's icons are tiny. Two opt-in build flags, each also a setting under Settings > Display: - EINK_FONT_SCALE=<n>: the landscape font's pixel multiplier (stock 2). Settings > Display > Text size (1x-5x) overrides it at run time (DisplayDriver::setUiScale -> EinkGfxDisplay re-lays out). - STATUS_ICON_SCALE=<n>: Home's status icons, battery and page-icon row drawn at n x their pixel grid, the bar growing to fit. 0 = Auto, 1.5x the text's pixel scale. Settings > Display > Icon size (Auto, 1x-8x). Both live in their own /ui_scale file, so NodePrefs is untouched. Icon size appears only where STATUS_ICON_SCALE is set; Text size appears on every e-ink build with the full-refresh setting, and builds that set neither flag draw as before until it is changed. The GDEQ0426T82 env defaults to 4x text with Auto icons. Tested in the native sim at 800x480. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KxAZVAbhhYr18Dd4guTQM1
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
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, or 4.2" 400 × 300 | solo-<version>-WioTrackerL1Eink-landscape.uf2, -portrait.uf2 or solo-<version>-WioTrackerL1Eink42.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.
