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.
| Board | Chip | In den Flash-Modus |
|---|---|---|
| Heltec V3 / V4 | ESP32 | PRG (Boot) halten, dabei USB anstecken. Alternativ PRG halten und RST kurz drücken. |
| T-Beam | ESP32 | Boot halten beim Anstecken. Nur an 5-V-USB-A-Netzteil oder Rechner, kein PD-Ladegerät. |
| Xiao nRF52840 | nRF52 | Reset zweimal kurz drücken, UF2-Laufwerk erscheint. Die Taste ist winzig, notfalls Boot-Pin kurz auf GND. |
| T1000-E | nRF52 | Reset über die Ladekontakte in den DFU-Modus (Abfolge siehe Geräte-Seite). Reset: Taste halten und Ladekabel anstecken. |
| T114, RAK4631, P1 Pro | nRF52 | Reset 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:
| Datei | Was passiert | Wann |
|---|---|---|
| merged | Komplettes Image inklusive Dateisystem, Konfiguration und Kontakte sind weg | Erstinstallation, Bootloop, Wechsel der Rolle |
| normal | Nur die Firmware-Partition wird ersetzt, Einstellungen bleiben | Update 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
| Symptom | Ursache | Lösung |
|---|---|---|
| Webflasher zeigt kein Gerät | Firefox, C-zu-C-Kabel, kein Flash-Modus | Chrome, USB-A-zu-C, Taste beim Anstecken |
| Board läuft, App findet es nicht | USB- statt BLE-Variante | BLE-Variante flashen, BT-Kopplung im Handy löschen |
| „Loading…" dauerhaft | Altdaten unter neuem Image | Erase, neu flashen |
| Repeater-Setup Timeout | Falscher COM-Port | Port prüfen, Kabel neu stecken |
| OTA hängt bei 100 % | Bootloader ohne OTAFIX | Reset, per USB flashen, OTAFIX nachrüsten |
| Regionen nach Reboot weg | CLI speichert nicht | Über App-GUI setzen und bestätigen |
| Coding Rate steht auf 5 | Update setzt Default | Auf CR 8 zurückstellen |
| Noise Floor plötzlich -84 dBm | rxgain in 1.17.1 an | Beide rxgain-Befehle auf off |
| ZIP lässt sich nicht hochladen | Browser hat entpackt | Link kopieren, ZIP unverändert hochladen |
| T-Beam tot nach Ladegerät | PD-Netzteil | Nur 5 V über USB-A |
| Repeater ignoriert CLI, Bits kippen | Starke HF in der Nähe | SAW-Filter einbauen |
Die Boards aus dem Artikel
Falls du noch Hardware brauchst, das sind die gängigen Geräte in der Community:
- SenseCAP T1000-E – Kompaktes nRF52-Fertiggerät, per UF2 flashbar. Bei Amazon ansehen *
- SenseCAP P1 Pro – Fertiggerät mit Akku, Gehäuse und guter Antenne. Bei Amazon ansehen *
- Wio Tracker L1 Pro – Für unterwegs, nRF52 mit Display. Bei Amazon ansehen *
- Heltec V3 – Der ESP32-Klassiker, vor dem Flashen erst löschen. Bei Amazon ansehen *
- Heltec V4 – Mehr Sendeleistung, als Repeater aber stromhungrig. Bei Amazon ansehen *
- USB-C-Datenkabel – Kurz und mit Datenleitungen, Ladekabel reichen nicht. Bei Amazon ansehen *
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.