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

AspectMeshtasticMeshCore
Partition tableCustom (app + littlefs)Different layout
ConfigurationYAML profiles via CLIWeb config tool
Channel formatPSK + channel indexRoom/password model
EncryptionAES-256-CTR + X25519 PKCAES-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

ActionTimeCommand
Erase flash~5sjust flash-erase /dev/ttyUSB0
Flash + configure Meshtastic~45sjust provision station-g2 /dev/ttyUSB0
Flash MeshCore~30sWeb flasher or just flash-meshcore
Total switch time~60sErase + flash + configure

LA-Mesh - Community LoRa mesh network for Southern Maine

GitHub