MeshCore firmware flashing
Complete guide for installing MeshCore firmware on your LoRa device using web flasher, Python CLI or manual methods
What is firmware flashing?
Firmware flashing is the process of installing or updating the base software of your MeshCore device. It's similar to installing an operating system on a computer, but for your LoRa mesh network node.
The MeshCore firmware enables your ESP32 or nRF52 microcontroller to communicate via the LoRa mesh network. It contains all functionality for sending messages, routing, encryption, GPS tracking and more.
There are several ways to install the firmware: via a web-based flasher (easiest for beginners), the Python command-line tool (for advanced users), or manually via tools like esptool or nrfutil (for experts and developers).
Three ways to flash
Choose the method that best fits your technical level and situation
Web flasher (recommended)
The easiest way to get started. Works directly in your browser without installing software.
Python CLI
Command-line tool for advanced users and automation of firmware updates.
Manual firmware
For experts and developers who want to compile custom builds or need specific configurations.
Using the MeshCore web flasher
The web flasher was developed by the MeshCore community and makes flashing incredibly easy. You only need a USB cable and a Chrome or Edge browser.
Open the web flasher
Go to the official MeshCore web flasher in your Chrome or Edge browser:
Connect your device
Connect your ESP32 or nRF52 device via USB to your computer. Most devices are recognized automatically. For some devices you need to hold the BOOT button while connecting.
Select your device type
Select from the list the exact model you have (e.g. "Heltec V3", "T-Deck Plus", "RAK WisBlock"). Pay attention to the correct frequency: choose 868 MHz for Europe.
Select firmware version
Choose between stable (recommended for production), beta (latest features but possible bugs) or alpha (cutting-edge development versions). For beginners, stable is the best choice.
Start the flash process
Click "Flash" and wait 1-3 minutes. You'll see a progress bar. After flashing, your device automatically restarts with the new firmware. You're now ready to configure!
⚠️ Important: 868 MHz for Europe
Make sure you choose 868 MHz firmware for use in Europe. The 915 MHz version is only legal in North America. Using incorrect frequencies can interfere with other radio services and is not legally permitted.
Flashing via Python CLI
For users who want more control or need to automate firmware installation, the Python CLI tool offers powerful capabilities.
Installation and usage
Install meshtastic Python package
Make sure you have Python 3.7 or higher installed. Open a terminal and install the meshtastic package:
pip3 install --upgrade meshtastic
Download firmware
Download the correct firmware (.bin file) for your device from the official GitHub releases:
https://github.com/meshtastic/firmware/releases
Flash the device
Connect your device via USB and use this command to flash the firmware:
meshtastic --flash firmware-version.bin
Verify the installation
Check if the firmware was installed correctly with:
meshtastic --info
Supported devices
LilyGo boards
Popular all-in-one solutions with display
- ▸ LilyGo T-Deck Plus
- ▸ LilyGo T-Echo
- ▸ LilyGo T-Beam
Heltec boards
Affordable ESP32 boards with display
- ▸ Heltec V3
- ▸ Heltec V4
- ▸ Heltec Wireless Stick
RAK Wireless
Modular IoT platforms
- ▸ RAK WisBlock
- ▸ Station G1
- ▸ Station G2
Outdoor repeaters
Solar-powered network extenders
- ▸ SenseCAP P1
- ▸ SenseCAP P1 Pro
nRF52 chips
Energy-efficient Nordic processors
- ▸ nRF52840
- ▸ nRF52833
DIY and custom
Self-build configurations
- ▸ ESP32 Dev Board
- ▸ Custom builds
Solving common problems
Device not recognized
The web flasher or Python tool cannot find your device via USB.
Solution:
Install the correct USB driver for your chip (CP210x for most ESP32, CH340 for cheaper boards). Windows users often need to manually install drivers. Also try a different USB port or cable (some cables are charge-only).
Flash process fails midway
The firmware upload starts but stops with an error message.
Solution:
Hold the BOOT button on your board while connecting the USB cable. For some boards you need to press BOOT + RST together. Try restarting the flash process. If it continues to fail, test a different USB port (preferably directly on your computer, not via a hub).
Device does not start after flashing
After successful flashing, the screen stays black or the LED does not blink.
Solution:
Press the RST (reset) button to manually restart your device. If that doesn't help, flash again but first erase the complete flash memory (erase flash option in web flasher). Also check if you used the correct firmware for your board model.
Wrong firmware installed
You accidentally flashed firmware for a different device type.
Solution:
Don't panic, this is recoverable. Simply flash the correct firmware for your device. The web flasher has a "Full Erase" option that clears the memory first. Use that option and then flash the correct firmware. Your device will come back to life.
Frequently asked questions about flashing
Can I "brick" my device by flashing incorrectly?
No, ESP32 and nRF52 chips are virtually impossible to brick. They have a built-in bootloader that always remains active. In the worst case you need to reflash the firmware with the "erase flash" option, but the device always remains recoverable.
How often should I update my firmware?
For stable use: only update for important security patches or features you really need. The MeshCore firmware is fairly stable. For repeaters or production nodes: stick with stable releases and test updates first. For experiments: you can try beta/alpha versions.
Will I lose my settings during a firmware update?
Usually not. The configuration is stored in a separate memory section (NVS storage) that is preserved. During major version updates some settings may reset. To be safe, make a backup of your configuration via the app.
What is the difference between stable, beta and alpha firmware?
Stable: Fully tested, recommended for production. Beta: Newer features but thoroughly tested, minor bugs possible. Alpha: Cutting-edge development versions, expect bugs and instability. For beginners and repeaters always choose stable.
Can I downgrade to an older firmware version?
Yes, that's possible without problems using the same flash methods. Simply select an older version in the web flasher or download an older release from GitHub. Note that when downgrading some newer configuration options may no longer work.
Does the web flasher work on Mac and Linux?
Yes, the web flasher works on all operating systems that support Chrome or Edge browser. That means Windows, macOS, Linux and even ChromeOS. For the Python CLI you need Python 3.7+ on all platforms.
Ready to get started?
With this guide you can now flash MeshCore firmware on your devices yourself. Start with the web flasher for the easiest experience, or use the Python CLI for more control.