Installation & Setup

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.

No installation required
Automatic device detection
Always latest firmware
⌨️

Python CLI

Command-line tool for advanced users and automation of firmware updates.

Scriptable and automatable
More control over process
! Python knowledge required
🛠️

Manual firmware

For experts and developers who want to compile custom builds or need specific configurations.

Full control
Custom builds possible
! Technical expertise required

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.

1

Open the web flasher

Go to the official MeshCore web flasher in your Chrome or Edge browser:

2

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.

3

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.

4

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.

5

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.