Meshtastic | Heltec LoRa 32 V4 manuell flashen

Meshtastic - easy zu flashen, richtig?

Ja, vielleicht unter Windows, vielleicht unter einem bleeding-edge Linux System. Mit einem stable Linux klappt das aber eventuell, wie bei mir, nicht unbedingt direkt.


Fehler

Bei mir wurde ich beim Versuch, den Weg über das Script zu nehmen, mit folgendem Fehler erfreut:

 1Serial port /dev/ttyACM0
 2Connecting...
 3Detecting chip type... ESP32-S3
 4Chip is ESP32-S3 (QFN56) (revision v0.2)
 5Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3)
 6Crystal is 40MHz
 7MAC: de:ad:be:ef:ff:ff
 8Traceback (most recent call last):
 9  File "<frozen runpy>", line 198, in _run_module_as_main
10  File "<frozen runpy>", line 88, in _run_code
11  File "/usr/lib/python3/dist-packages/esptool/__main__.py", line 9, in <module>
12    esptool._main()
13  File "/usr/lib/python3/dist-packages/esptool/__init__.py", line 1139, in _main
14    main()
15  File "/usr/lib/python3/dist-packages/esptool/__init__.py", line 751, in main
16    esp = esp.run_stub()
17          ^^^^^^^^^^^^^^
18  File "/usr/lib/python3/dist-packages/esptool/loader.py", line 996, in run_stub
19    stub = StubFlasher(get_stub_json_path(self.CHIP_NAME))
20           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
21  File "/usr/lib/python3/dist-packages/esptool/loader.py", line 159, in __init__
22    with open(json_path) as json_file:
23         ^^^^^^^^^^^^^^^
24FileNotFoundError: [Errno 2] No such file or directory: '/usr/lib/python3/dist-packages/esptool/targets/stub_flasher/stub_flasher_32s3.json'

Offenbar fehlt die Definitionsdatei für den ESP32-S3, vermutlich weil die esptool Version, welche über apt verfügbar ist, zu alt ist.

Alternativ wird "empfohlen", esptool über den Paketmanager zu deinstallieren und stattdessen diesen direkt über pip install zu installieren.

 1pip3 install --upgrade esptool
 2error: externally-managed-environment
 3
 4× This environment is externally managed
 5╰─> To install Python packages system-wide, try apt install
 6    python3-xyz, where xyz is the package you are trying to
 7    install.
 8    
 9    If you wish to install a non-Debian-packaged Python package,
10    create a virtual environment using python3 -m venv path/to/venv.
11    Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
12    sure you have python3-full installed.
13    
14    If you wish to install a non-Debian packaged Python application,
15    it may be easiest to use pipx install xyz, which will manage a
16    virtual environment for you. Make sure you have pipx installed.
17    
18    See /usr/share/doc/python3.12/README.venv for more information.
19
20note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
21hint: See PEP 668 for the detailed specification.

Hm, ja, gut, danke für nichts.


esptool

Das Script ist letztlich nur ein Wrapper für esptool, welches in der aktuellsten Version in GitHub heruntergeladen werden kann.

Dateien zusammenführen

Das esptool und die aktuellste Firmware (in diesem Fall firmware-esp32s3-2.7.15.567b8ea.zip) müssen beide in den gleichen Ordner entpackt werden.

Manuell flashen

Nun kann über esptool direkt auf das Board geflashed werden. Unter anderem via dmesg lässt sich herausfinden, wie das Board angesprochen werden kann. In diesem Fall ist es /dev/ttyACM0:

1./esptool -p /dev/ttyACM0 erase-flash
2./esptool -p /dev/ttyACM0 --chip esp32s3 --baud 921680 write-flash 0x0 "firmware-heltec-v4-2.7.15.567b8ea.bin"
3./esptool -p /dev/ttyACM0 --chip esp32s3 --baud 921680 write-flash 0x650000 "bleota-s3.bin"
4./esptool -p /dev/ttyACM0 --chip esp32s3 --baud 921680 write-flash 0xc90000 "littlefs-heltec-v4-2.7.15.567b8ea.bin"

Kurzfassung: Zuerst wird der Flash geleert, anschließend werden die einzelnen Bestandteile an die korrekten Adressen im Flash geschrieben. Diese können im Script der Firmware abgelesen werden, je nach Modell müssen unterschiedliche Bestandteile und Adressen verwendet werden. Bei Bedarf kann gleich noch der richtige Chip und eine (schnellere) Baudrate für die Übertragung angegeben werden.

- Dom