Translate

Sunday, February 8, 2026

My Meshstastic - Wifi Heltec LoRa 32 V3 ESP32

This is the second module I'm playing for my Meshstatisc experiments


Let see in more details this module and what to do with it.

Updating the firmware

The module arrives with a generic LORA app, so the first thing to do is to able to update it with newer code for Meshstastic.

In order to do that, this article assumes to have a :

  • Wifi Heltec LoRa 32 V3 ESP32
  • a Linux based machine - I'm using a Linux Mint
The simplest way to load a new firmware is supposedly using a normal Browser (I use Brave, a chrome based browser).

Let's try first the simplest way, i.e. using the Meshstastic website : flasher.meshtastic.org


  • Start to prepare for the update - Go on the flasher.meshtastic.org
    • search and select the Heltec v3
    • select then the firmware to burn (in my case I choose the latest stable - 2.7.15.567b8ea beta)


  • When everything is ready to go :
    • press the Reset button and hold it
    • press the PROG button, then release both buttons
  • Click on the Flash box
  • Select the port connected to the module
  • Accept some terms (follow the menu)
  • Select to erase the flash !
    Initially I did not selected to erase the Flash memory and the upload seemed go OK, however after the reset nothing happened - screen dead - enabling to erase the flash did the trick !
    CAUTION !  It is suggested to backup the keys before to erase the flash, but since the module was never connected I choose to ignore that !
    We'll see this later
  • Click on the update button on the page
Unfortunately it never worked.
It ended up with different errors, like "already open port" or "device error"

I did try to reset the board, press buttons during the starting load and many other things, suggested in many forum but unfortunately it never worked.

Looking around for causes and possible solutions, I found suggestions to use directly the esptool code, a Python code.
I did so install the esptool on my machine in order to try to program the module via CLI.

To use this system is necessary to have installed on the machine (in my case the Linux one) :
  • the utility esptool (Python)
  • the firmware to be installed

Install esptool

To install esp tool is enough to use : pip install esptool
but in my case I did use pipx since I have different python environments : pipx install esptool

Find the firmware

Start from the Meshstastic github and go to the section fimrware/tags.
From there select the version to be installed, in my case I did pick up the v2.7.21.1370b23.
From there scroll down until the "Assets" page :

This is the tricky part.
The Heltec board is based on an esp32s3 so it is important to locate and download the correct zip file, that in our case is :


Download it and the extract the content in a directory.

The zip file contains different versions of the code and also scripts to help the installation.
From a terminal go in the extracted directory.
We are looking for the file : 

firmware-heltec-v3-2.7.21.1370b23.factory.bin

At this point we can install the code on the module using the script device-install.sh
$ ./device-install.sh -f firmware-heltec-v3-2.7.21.1370b23.factory.bin
Firmware metadata: firmware-heltec-v3-2.7.21.1370b23.mt.json
{
  "version": "2.7.21.1370b23",
  "build_epoch": 1775347200,
  "platformioTarget": "heltec-v3",
  "mcu": "esp32s3",
  "repo": "meshtastic/firmware",
  "files": [
    {
      "name": "firmware-heltec-v3-2.7.21.1370b23.elf",
      "md5": "965fb9a0c3db6fcc3aca5ac0d7e093b7",
      "bytes": 22178212
    },
    {
      "name": "firmware-heltec-v3-2.7.21.1370b23.bin",
      "md5": "12dc68641356c691bce778e939b3a7d3",
      "bytes": 2095424,
      "part_name": "app0"
    },
    {
      "name": "firmware-heltec-v3-2.7.21.1370b23.factory.bin",
      "md5": "763d427781293a80ccb8253f64cedf0d",
      "bytes": 2160960
    },
    {
      "name": "littlefs-heltec-v3-2.7.21.1370b23.bin",
      "md5": "9d55fea9235c680995e740a2b14cad14",
      "bytes": 1572864,
      "part_name": "spiffs"
    },
    {
      "name": "mt-esp32s3-ota.bin",
      "md5": "497d3108c038f8a6b5f4e234a1156c8a",
      "bytes": 636544,
      "part_name": "app1"
    }
  ],
  "has_mui": false,
  "has_inkhud": false,
  "part": [
    {
      "name": "nvs",
      "type": "data",
      "subtype": "nvs",
      "offset": "0x9000",
      "size": "0x5000",
      "flags": ""
    },
    {
      "name": "otadata",
      "type": "data",
      "subtype": "ota",
      "offset": "0xe000",
      "size": "0x2000",
      "flags": ""
    },
    {
      "name": "app0",
      "type": "app",
      "subtype": "ota_0",
      "offset": "0x10000",
      "size": "0x330000",
      "flags": ""
    },
    {
      "name": "app1",
      "type": "app",
      "subtype": "ota_1",
      "offset": "0x340000",
      "size": "0x330000",
      "flags": ""
    },
    {
      "name": "spiffs",
      "type": "data",
      "subtype": "spiffs",
      "offset": "0x670000",
      "size": "0x180000",
      "flags": ""
    },
    {
      "name": "coredump",
      "type": "data",
      "subtype": "coredump",
      "offset": "0x7F0000",
      "size": "0x10000",
      "flags": ""
    }
  ],
  "hwModel": 43,
  "hwModelSlug": "HELTEC_V3",
  "architecture": "esp32-s3",
  "activelySupported": true,
  "displayName": "Heltec V3",
  "supportLevel": 1,
  "images": [
    "heltec-v3.svg",
    "heltec-v3-case.svg"
  ],
  "tags": [
    "Heltec"
  ],
  "partitionScheme": "8MB"
}
Trying to flash firmware-heltec-v3-2.7.21.1370b23.factory.bin, but first erasing and writing system information
esptool v5.2.0
Connected to ESP32-S3 on /dev/ttyUSB3:
Chip type:          ESP32-S3 (QFN56) (revision v0.2)
Features:           Wi-Fi, BT 5 (LE), Dual Core + LP Core, 240MHz, Embedded Flash 8MB (GD)
Crystal frequency:  40MHz
MAC:                3c:0f:02:ec:b1:34

Stub flasher running.

Flash memory erased successfully in 2.7 seconds.

Hard resetting via RTS pin...
esptool v5.2.0
Connected to ESP32-S3 on /dev/ttyUSB3:
Chip type:          ESP32-S3 (QFN56) (revision v0.2)
Features:           Wi-Fi, BT 5 (LE), Dual Core + LP Core, 240MHz, Embedded Flash 8MB (GD)
Crystal frequency:  40MHz
MAC:                3c:0f:02:ec:b1:34

Stub flasher running.

Configuring flash size...
Flash will be erased from 0x00000000 to 0x0020ffff...
Wrote 2160960 bytes (1342845 compressed) at 0x00000000 in 122.2 seconds (141.5 kbit/s).
Hash of data verified.

Hard resetting via RTS pin...
Trying to flash mt-esp32s3-ota.bin at offset 0x340000
esptool v5.2.0
Connected to ESP32-S3 on /dev/ttyUSB3:
Chip type:          ESP32-S3 (QFN56) (revision v0.2)
Features:           Wi-Fi, BT 5 (LE), Dual Core + LP Core, 240MHz, Embedded Flash 8MB (GD)
Crystal frequency:  40MHz
MAC:                3c:0f:02:ec:b1:34

Stub flasher running.

Configuring flash size...
Flash will be erased from 0x00340000 to 0x003dbfff...
Wrote 636544 bytes (443988 compressed) at 0x00340000 in 40.4 seconds (126.0 kbit/s).
Hash of data verified.

Hard resetting via RTS pin...
Trying to flash littlefs-heltec-v3-2.7.21.1370b23.bin, at offset 0x300000
esptool v5.2.0
Connected to ESP32-S3 on /dev/ttyUSB3:
Chip type:          ESP32-S3 (QFN56) (revision v0.2)
Features:           Wi-Fi, BT 5 (LE), Dual Core + LP Core, 240MHz, Embedded Flash 8MB (GD)
Crystal frequency:  40MHz
MAC:                3c:0f:02:ec:b1:34

Stub flasher running.

Configuring flash size...
Flash will be erased from 0x00300000 to 0x0047ffff...
Wrote 1572864 bytes (1875 compressed) at 0x00300000 in 4.7 seconds (2688.7 kbit/s).
Hash of data verified.

Hard resetting via RTS pi

Configuration

The first thing to do is to configure the module now !
The configuration is done via the Settings on the website or the application, depending if the module is connected via USB (PC) or via BlueTooth (Meshstatsic app) or via WiFi.

I did use the Android app Meshstastic from my phone, connected via Bluetooth to the Heltec module.



 

No comments:

Post a Comment