Firmware Switching: Meshtastic <-> MeshCore
Switch between Meshtastic and MeshCore firmware on ESP32-S3 devices. Use a dedicated evaluation device -- never your primary LA-Mesh node.
No dual-boot capability.
MeshCore and Meshtastic use incompatible partition tables, NVS schemas, and radio configurations. Switching requires a full flash erase (~60 seconds total).
Incompatibility Summary
| Aspect | Meshtastic | MeshCore |
|---|---|---|
| Partition table | Custom (app + littlefs) | Different layout |
| Configuration | YAML profiles via CLI | Web config tool |
| Channel format | PSK + channel index | Room/password model |
| Encryption | AES-256-CTR + X25519 PKC | AES-128-ECB |
Before Switching: Back Up
# Export current Meshtastic config meshtastic --export-config > backup-meshtastic-$(date +%Y%m%d).yaml # Record firmware version meshtastic --info | grep Firmware
Flash erase destroys all state. Configuration, message history, node list, and Bluetooth pairings are lost.
Switch to MeshCore (Evaluation)
# 1. Erase flash (hold BOOT, press RESET, release BOOT first) just flash-erase /dev/ttyUSB0 # 2. Flash MeshCore via web flasher (recommended) # Open https://flasher.meshcore.co.uk in Chrome/Edge # Or via CLI: just flash-meshcore meshcore-firmware.bin /dev/ttyUSB0 # 3. Configure via https://config.meshcore.co.uk
Switch Back to Meshtastic
# 1. Erase flash just flash-erase /dev/ttyUSB0 # 2. One-command provisioning (fetch + verify + flash + configure) just provision station-g2 /dev/ttyUSB0 # Or restore from backup: meshtastic --configure backup-meshtastic-YYYYMMDD.yaml
Automated Switch Script
just switch-firmware /dev/ttyUSB0
Interactive script that backs up, erases, flashes, and configures in one flow.
Quick Reference
| Action | Time | Command |
|---|---|---|
| Erase flash | ~5s | just flash-erase /dev/ttyUSB0 |
| Flash + configure Meshtastic | ~45s | just provision station-g2 /dev/ttyUSB0 |
| Flash MeshCore | ~30s | Web flasher or just flash-meshcore |
| Total switch time | ~60s | Erase + flash + configure |