MeshCore Firmware flashen: Heltec V3/V4, T1000-E, Xiao nRF52, T-Beam (mit Fehlerbehebung)

Die meisten Flash-Probleme sind immer dieselben: falscher Browser, falsches Kabel, falsche Variante. Hier steht, was du pro Board tun musst und was hilft, wenn es hängt.

Diese Anleitung deckt das Flashen selbst ab. Was danach kommt (App verbinden, Preset, Kanäle), steht unter Erste Schritte. Für die komplette Einrichtung eines Heltec V3 gibt es eine eigene Anleitung. Welche Boards überhaupt in Frage kommen, steht unter Geräte.

Vorbereitung: Browser, Kabel, Rechte

Der Webflasher unter flasher.meshcore.io funktioniert nur mit Chrome oder Chromium. Firefox kann nicht auf die serielle Schnittstelle zugreifen, das Board taucht dort schlicht nicht auf.

Nimm ein USB-A-zu-C-Kabel. Mit C-zu-C-Kabeln scheitert das Flashen regelmäßig, der Wio Tracker L1 lädt damit nicht einmal. Viele billige Kabel übertragen nur Strom und keine Daten. Wenn das Board nicht erkannt wird, ist das Kabel der erste Verdächtige.

Unter Linux brauchst du Zugriff auf den seriellen Port:

sudo usermod -a -G dialout $USER

Danach neu anmelden. Wenn das Gerät trotzdem stumm bleibt, blockiert oft der Dienst brltty den Port, den kannst du deaktivieren. Chromium aus Snap braucht zusätzlich snap connect chromium:raw-usb. Für ESP32-Boards geht alternativ esptool.py auf der Kommandozeile.

Unter Windows wechselt der COM-Port gern nach einem Neustart. Ein Timeout im Repeater-Setup ist meistens genau das: falscher Port ausgewählt.

Und bevor du irgendetwas löschst: Private Key sichern und beim Companion ein Backup aus der App ziehen. Beim Erase sind Kontakte und Konfiguration weg.

Download-Modus je Board

ESP32-Boards brauchen eine gedrückte Taste beim Anstecken. nRF52-Boards melden sich nach doppeltem Reset als USB-Laufwerk, auf das du eine UF2-Datei kopierst.

BoardChipIn den Flash-Modus
Heltec V3 / V4ESP32PRG (Boot) halten, dabei USB anstecken. Alternativ PRG halten und RST kurz drücken.
T-BeamESP32Boot halten beim Anstecken. Nur an 5-V-USB-A-Netzteil oder Rechner, kein PD-Ladegerät.
Xiao nRF52840nRF52Reset zweimal kurz drücken, UF2-Laufwerk erscheint. Die Taste ist winzig, notfalls Boot-Pin kurz auf GND.
T1000-EnRF52Reset über die Ladekontakte in den DFU-Modus (Abfolge siehe Geräte-Seite). Reset: Taste halten und Ladekabel anstecken.
T114, RAK4631, P1 PronRF52Reset zweimal drücken, UF2-Laufwerk erscheint.

Beim Xiao braucht das Kopieren des Bootloaders manchmal mehrere Anläufe, im Chat wurden bis zu 30 Versuche gemeldet. Fast immer war am Ende das Kabel schuld.

Welche Datei: Rolle, Variante, merged oder normal

MeshCore kennt keine Umschaltung im Betrieb. Die Firmware ist die Funktion: Companion, Repeater, Room Server oder Observer sind getrennte Images, je Gerät genau eines.

  • Companion verbindet sich mit der App. Es gibt ihn als BLE-Variante (Handy per Bluetooth) und als USB-Variante (nur Kabel an PC). Wer die USB-Variante flasht, sieht ein laufendes Board, das die App nie findet. Für WLAN gibt es keinen Umschalter, sondern den Patcher unter weyhmueller.org.
  • Repeater braucht weder Bluetooth noch WLAN. Du administrierst ihn per LoRa aus der Companion-App, Standardpasswort ist password. Konfiguration und Standortwahl stehen unter Repeater aufbauen.
  • Room Server speichert maximal 32 Nachrichten, Standardpasswort hello. Nicht mit Repeater-Funktion auf demselben Gerät kombinieren.

Dazu kommt bei ESP32 die Wahl merged oder normal:

DateiWas passiertWann
mergedKomplettes Image inklusive Dateisystem, Konfiguration und Kontakte sind wegErstinstallation, Bootloop, Wechsel der Rolle
normalNur die Firmware-Partition wird ersetzt, Einstellungen bleibenUpdate innerhalb derselben Rolle

Bei nRF52 überschreibt die UF2 nur die App-Partition, die Konfiguration bleibt. Zum Komplettlöschen gibt es eine eigene Erase-UF2 (nrf_erase_sd7_3.uf2 aus dem Meshtastic-Flasher).

ESP32: Erase zuerst

Vor einer Erstinstallation oder einem Rollenwechsel auf Heltec V3/V4 und T-Beam immer Erase im Webflasher anhaken. Fast alle Bootloops auf ESP32 kommen daher, dass ein Image ohne Erase über alte Daten gelegt wurde:

  • Heltec V3 hängt bei „Loading…": Erase, dann neu flashen. Hilft das nicht, Bootloader neu flashen.
  • Fork-Firmware als merged ohne Erase: Bootloop. Erst Standard-Firmware mit Erase, dann den Fork.
  • WLAN-Patch wird nicht angenommen: erst Standard mit Erase, dann patchen, manchmal zweimal.
  • Repeater bootloopt nach Update: mehrfach neu starten, sonst Erase plus Neuflash und Konfiguration neu setzen.
  • Room Server oder Observer bootloopt und spammt: Stromversorgung zu schwach, 30-W-Netzteil nehmen.

Custom-Firmware im Webflasher: Bei ESP32 die Taste beim Anstecken halten, bei nRF52 das ZIP direkt hochladen, nicht entpacken. Manche Browser und Telegram entpacken ZIPs automatisch, dann Link kopieren statt anklicken.

nRF52: UF2 und der OTAFIX-Bootloader

Der Standard-Bootloader von nRF52-Boards hat eine Falle: Bricht ein Bluetooth-OTA-Update ab, bootet das Board in den USB-DFU-Modus und ist aus der Ferne nicht mehr erreichbar. Für einen Repeater auf dem Dach heißt das Leiter holen.

Der gepatchte OTAFIX-Bootloader (github.com/oltaco/Adafruit_nRF52_Bootloader_OTAFIX) bootet stattdessen wieder in den BT-OTA-Modus, ein zweiter Versuch rettet das Gerät. Installation: Reset zweimal drücken, die UF2 des Bootloaders auf das Laufwerk kopieren. Achte auf die richtige Variante für dein Board, beim P1 Pro nicht die „Sense"-Version. Prüfen kannst du sie mit get bootloader.ver, das gibt es nur auf nRF52.

Für das OTA-Update selbst nutzt du die nRF-DFU-App: näher als 5 m ans Gerät, MeshCore-App vorher schließen, bei Abbruch Handy neu starten. Den T1000-E solltest du nur per USB flashen, OTA gilt dort als unsicher. ESP32-Companions machen OTA über WLAN: start ota in der Konsole, dann 192.168.4.1 im Browser.

Private Key sichern

Der Private Key ist die Identität deines Repeaters. Wer nach jedem Reset einen neuen zieht, hinterlässt Karteileichen in den Nachbarlisten der anderen. Auslesen geht nur per USB-Kabel in der Konsole:

get prv.key

Zeigt die Webflasher-Konsole den Wert nicht, klick das Datei-Icon in der Konsolenausgabe oder nimm minicom. Alternativ exportierst du ihn im Repeater-Setup unter config.meshcore.io. Auf neuer Hardware setzt du ihn mit set prv.key. Wer ein Wunschpräfix möchte, erzeugt den Key mit gessaman.com/mc-keygen.

Sonderfälle

T1000-E. Firmware 1.9.x friert ein und bricht Bluetooth ab, besonders mit iOS. Nimm 1.10 oder neuer. Hängt das Gerät, Taste halten und Ladekabel anstecken. Manche Exemplare kommen als LoRaWAN-Version mit falschem Etikett, dann die UF2 direkt ins DFU-Laufwerk kopieren statt über den Browser. Anleitung zum neuen Bootloader: meshcore-de.fyi, Stichwort t1000-e_bootloader_neu_flashen. Die Akkuanzeige unter 50 % ist unzuverlässig.

Heltec V4.3. Mit 1.14.1 sendet die Revision 4.3 nicht (Issue #1857). Übergangslösung waren Builds von mcimages.weebl.me (Branch dev_plus) oder die dt267-Firmware. Für 500 mW reicht tx 16 bis tx 17. Seit 1.17.1 hebt die standardmäßig aktive Vorverstärkung den Noise Floor auf etwa -84 dBm:

set radio.fem.rxgain off
set radio.rxgain off

Heltec V2 hat keinen TCXO und ist auf dem Narrow-Preset unbrauchbar.

T-Beam. Die SX1262-Variante nehmen, SX1276 ist veraltet. Der Companion hat nur etwa 110 kB Speicher und 8 Kanäle. GPS läuft unter MeshCore wegen der Baudrate oft nicht. Nach einem Update kann das Display des T-Beam Supreme dunkel bleiben, weil sich I2C-Adressen geändert haben.

Standard-Firmware oder Fork?

Forks gab und gibt es viele: EVO (Duty-Cycle, denyf ohne DM-Verlust), dt267 (Low-Power für V3/V4), IoTThinks PowerSaving, ZephCore (T1000-E), Wadamesh (T-Deck), dutch-meshcore und ACETyr (Kanalfilter), MeshOS.

Für den Normalfall gilt trotzdem: Standard-Firmware. EVO ist seit 1.16 obsolet, seine Funktionen sind mit flood.max.unscoped und flood.max.advert upstream. PowerSaving wurde ebenfalls übernommen. Observer hören EVO-Adverts nicht, ZephCore läuft auf V3/V4 teilweise gar nicht, und Forks bekommen weniger Updates. Als Baseline gilt 1.16. Bei 1.17.x friert region load per CLI ein, setz Regionen dort über das App-Menü.

Fehler und Lösungen

SymptomUrsacheLösung
Webflasher zeigt kein GerätFirefox, C-zu-C-Kabel, kein Flash-ModusChrome, USB-A-zu-C, Taste beim Anstecken
Board läuft, App findet es nichtUSB- statt BLE-VarianteBLE-Variante flashen, BT-Kopplung im Handy löschen
„Loading…" dauerhaftAltdaten unter neuem ImageErase, neu flashen
Repeater-Setup TimeoutFalscher COM-PortPort prüfen, Kabel neu stecken
OTA hängt bei 100 %Bootloader ohne OTAFIXReset, per USB flashen, OTAFIX nachrüsten
Regionen nach Reboot wegCLI speichert nichtÜber App-GUI setzen und bestätigen
Coding Rate steht auf 5Update setzt DefaultAuf CR 8 zurückstellen
Noise Floor plötzlich -84 dBmrxgain in 1.17.1 anBeide rxgain-Befehle auf off
ZIP lässt sich nicht hochladenBrowser hat entpacktLink kopieren, ZIP unverändert hochladen
T-Beam tot nach LadegerätPD-NetzteilNur 5 V über USB-A
Repeater ignoriert CLI, Bits kippenStarke HF in der NäheSAW-Filter einbauen

Die Boards aus dem Artikel

Falls du noch Hardware brauchst, das sind die gängigen Geräte in der Community:

Fragen?

In der Telegram-Gruppe t.me/meshcorede sitzen die Leute, die diese Fehler alle schon hatten.

* Affiliate-Links: Kaufst du über einen mit * markierten Link bei Amazon, bekommt HanseMesh eine kleine Provision. Für dich ändert sich der Preis nicht. Wir verlinken nur Hardware, die in der Community im Einsatz ist.