MeshRadio – Firmware Flash Anleitung (ohne Entwicklungsumgebung)
MeshRadio – Webinterface & API Referenz. <- Klick hier
Diese Anleitung beschreibt, wie die MeshRadio Firmware auf ein unterstütztes Gerät installiert wird.
Es sind keine Programmierkenntnisse erforderlich.
Die Installation erfolgt mit einer fertigen Firmwaredatei.
Unterstützte Hardware
MeshRadio unterstützt aktuell vier Geräte:
⚠️ Wichtig
Die Firmware ist boardspezifisch.
Bitte die richtige Firmware verwenden.
Benötigte Software
Zum Flashen wird nur ein Tool benötigt:
ESP Flash Download Tool
Download:
https://www.espressif.com/en/support/download/other-tools
Nach dem Download die ZIP Datei entpacken.
Das Tool benötigt keine Installation.
Schritt 1 – Board anschließen
Das LoRa Board per USB Kabel anschließen.
Beispiele:
| Board | Anschluss |
|---|---|
| LILYGO_SX1276 | USB-C |
| HELTEC_V3 | USB-C |
| TBEAM_V11_SX1276 | USB-C |
| TBEAM_V12_AXP2101 | USB-C |
Windows erkennt das Gerät automatisch als USB Serial Port.
Beispiel:
COM7
Den COM-Port merken.
Schritt 2 – Flash Tool starten
Programm starten:
Auswahl:
LoadMode: UART
Schritt 3 – Firmware auswählen
Im Flash Tool die Firmware auswählen.
Beispiel:
Schritt 4 – Flash Parameter einstellen
Folgende Parameter einstellen:
| Parameter | Wert |
|---|---|
| SPI Speed | 40 MHz |
| SPI Mode | DIO |
| Flash Size | 4MB |
Diese Einstellungen funktionieren mit allen unterstützten Boards.
Schritt 5 – COM Port auswählen
Unten im Flash Tool:
Schritt 6 – Flash starten
Button klicken:
Beispiel Ausgabe:
Schritt 7 – Flash abgeschlossen
Nach erfolgreichem Flashen erscheint:
Falls nicht:
ACHTUNG!!!
AB Version > 3.1 können Updates über OTA WEB geflashed werden
3.1 oder der erste Flash selbst muss über das Tool geflashed werden!
http://<aktuelleIP>/update

Flashen unter Linux (ESP32-S3 / LiLyGo)
1. Alte esptool Version entfernen
2. Python-Umgebung erstellen
sudo apt install python3-venv
python3 -m venv ~/esptool_env
source ~/esptool_env/bin/activate
3. Offizielles esptool installieren
4. Firmware flashen
esptool.py –chip esp32s3 –port /dev/ttyACM0 –baud 921600 write_flash -z 0x00 AktuellesMeshRadioHeltec.bin
LiLyGo:
Hinweis
Solange die Python-Umgebung aktiv ist, erscheint im Terminal:
Erststart des Gerätes
Einmal am Gerät Reset drücken!
Nach dem Flash erzeugt der Node automatisch ein WLAN.
SSID:
Passwort:
Verbindung zum Webinterface
Mit dem WLAN verbinden.
Danach im Browser öffnen:
Jetzt erscheint das MeshRadio Webinterface mit Configuration Abschnitt.
Wichtiger Schritt – Factory Reset
Nach dem ersten Flash sollte immer ein Factory Reset durchgeführt werden.
Bei den nächsten flash Zyklen bleibt die NVS Speicherung erhalten.
Grund:
Der interne Speicher (NVS) kann alte Daten enthalten.
Factory Reset durchführen
Im Webinterface:
Anschließend erneut verbinden mit:
Typische Probleme beim Flashen
Gerät wird nicht erkannt
Treiber installieren:
Flash startet nicht
BOOT Taste gedrückt halten während START gedrückt wird.
Danach loslassen.
falsche Firmware
Wenn falsche Firmware verwendet wurde:
einfach erneut flashen.
Das Gerät kann dadurch nicht dauerhaft beschädigt werden.
Firmware Update
Für ein Firmware Update wird einfach erneut geflasht.
Vorgehen:
neue Firmware auswählen
↓
START
Wenn Probleme auftreten:
durchführen.
ACHTUNG!!!
AB Version 3.1 können Updates über OTA WEB geflashed werden
3.1 oder beim ersten flash selbst muss über das Tool geflashed werden!
http://<aktuelleIP>/update

Sicherheitshinweis
Beim Flashen wird nur die Firmware ersetzt.
Folgende Daten können gespeichert bleiben:
- Node Konfiguration
- Frequenz
- Callsign
- Routing Einstellungen
Wenn eine saubere Neuinstallation gewünscht ist:
Danach muss das Device neu konfiguriert werden!
Empfehlung
Nach jedem Firmware Update:
Konfiguration neu laden
MeshRadio – Webinterface & API Referenz
Diese Dokumentation beschreibt alle Funktionen des MeshRadio Webinterfaces sowie die zugrunde liegende API.
Das Webinterface dient zur Konfiguration eines Nodes ohne zusätzliche Software.
Zugriff auf das Webinterface
Nach dem Start erzeugt der Node ein WLAN:
MeshRadio-Setup
Verbinden mit:

Wenn etwas schief geht bleibt die Adresse http://192.168.4.1 bestehen!
Adresse der Targets COM??? im puty öffnen 115200 Baud.
Danach steht das Gerät über die neue IP bzw. den Hostname zu Verfügung. http://<ZugeteilteIP o. Hostname>
Webinterface – Aufbau
Das Webinterface besteht aus folgenden Bereichen:
- System Information
- Node Configuration
- RF Configuration
- Routing Settings
- Sensor Settings
- Message Interface
- Configuration Control
- Command Trigger
Falls das Device ein GPS Modul hat wir das Webinterface um dieses Fenster erweitert:
In der Version 3.3.0 kann jedes Decice mit aktivierten WIFI eine Position im APRS als Router anzeigen.

Beim Klicken auf den APRS Button kann das folgende Konfiguriert werden.

Nach ausfüllen speichern und das Device sendet an das Relay Callsign die GPS Daten. Wenn alles stimmt wird es an APRS.fi übertragen.
Ist die Position für das Test Gateway eingetragen, alle Daten stimmen (APRS) und WIFI verbunden wird die Position übertragen.
Kein GPS FIX bei Devices mit GPS Modulen, keine Übertragung!
1 System Information
Zeigt Hardware- und Firmwareinformationen.

| Feld | Beschreibung |
|---|---|
| UI-Ampel | Status der Oberfläche (z. B. OK / OLD) |
| Status | Aktiver Betriebszustand mit Parametern (Call, Mode, Display, WiFi, Relay, Crypto, Batterie) |
| Target | Hardware-Board |
| LoRa Chip | verwendeter LoRa-Chip |
| Firmware | installierte Firmware-Version |
| Protokoll | verwendete MeshRadio-Protokollversion |
2 Node Configuration
Grundkonfiguration des Nodes.
| Parameter | Beschreibung |
|---|---|
| Callsign | eigenes Rufzeichen |
| Relay Callsign | Zielnode |
| Node Mode | Betriebsmodus |
| Crypto | Verschlüsselung aktiv |
| WiFi | Accesspoint aktiv |
Callsign
Eigenes Rufzeichen des Nodes.
Beispiel:
Relay Callsign
Zielnode für Nachrichten.
Im Modus Sensor bei Powersave on sendet der sensor an diese Adresse ein Awake Nachricht.
Bei aktivierten BME280 oder einem anderem Sensor werden die Daten mit gesendet.
Beispiel:
Node Mode
Bestimmt die Rolle des Nodes.
Mögliche Werte:
1 = EDGE
2 = SENSOR
Beschreibung:
| Mode | Funktion |
|---|---|
| RELAY | Router Node |
| EDGE | Endpunkt |
| SENSOR | Sensor Node |
Crypto
Aktiviert AES-CCM Verschlüsselung.
OFF
Wenn aktiv müssen beide Nodes denselben Schlüssel verwenden. Crypto muss nicht auf Sender und Empfänger aktiviert sein.
Das Device erkennt verschlüsselte Nachrichten und entschlüsselt diese.
3 RF Configuration
Einstellungen des Funkmoduls.
| Parameter | Beschreibung |
|---|---|
| Frequency | Funkfrequenz |
| TX Power | Sendeleistung |
Frequency
Frequenz in Hertz.
Beispiel:
TX Power
Sendeleistung in dBm.
Beispiele:
14
20
| Wert | Leistung |
|---|---|
| 2 | minimal |
| 10 | mittel |
| 14 | Standard |
| 20 | maximale Leistung |
4 Routing Einstellungen
Mesh Routing Parameter.
| Parameter | Beschreibung |
|---|---|
| Beacon Interval | Beacon Intervall |
| RouteAdv | Routing Updates |
| RouteAdv TopN | Anzahl Routing Einträge |
| RouteAdv Delta | ETX Änderung |
| Holddown | Routing Stabilisierung |
Beacon Interval
Zeit zwischen Beacons.
Beispiel:
5 Sensor Einstellungen
Nur relevant im Sensor Mode.
| Parameter | Beschreibung |
|---|---|
| PowerSave | Deep Sleep aktiv |
| Wake Period | Aufwachintervall |
| RX Window | Empfangsfenster |
| BME280 | Wettersensor aktiv |
PowerSave
Aktiviert Deep Sleep.
Wake Period
Zeit zwischen zwei Aufwachzyklen.
Beispiel:
entspricht
5 Minuten
RX Window
Zeitfenster in dem der Sensor Kommandos empfangen kann.
Beispiel:
entspricht
30 Sekunden
BME280
Aktiviert den Wettersensor.
ACHTUNG! Die BME280 sind fest verdrahtet. Heltec: SDA GPIO 41 SCL GPIO 42 und LiLyGo: SDA GPIO 21 SCL GPIO 22
6 Message Interface
Direktes Senden von Nachrichten.
Felder:
| Feld | Beschreibung |
|---|---|
| Destination | Zielnode |
| ACK | Empfangsbestätigung |
| Message | Nachricht |
Beispiel
Message: STATUS?
ACK
1 = ACK erforderlich
7 Configuration Control
Steuerbuttons im Webinterface.
Apply Form
Übernimmt Änderungen sofort in die Laufzeit.
Änderungen sind noch nicht gespeichert.
Save NVS
Speichert Konfiguration dauerhaft im Flash.
Ohne Save gehen Änderungen beim Neustart verloren.
Es empfiehlt sich nach jeder Änderung ein Reset durchzuführen!
Load NVS
Lädt gespeicherte Konfiguration aus dem Flash.
Defaults
Setzt Standardwerte.
Reload Config
Lädt aktuelle Konfiguration neu vom Gerät.
Reset
Startet den ESP neu.
Factory Reset
Löscht komplette Konfiguration.
Gelöscht werden:
- Callsign
- Frequenz
- Routing Einstellungen
- WiFi Einstellungen
Danach startet das Gerät neu.
8. Command Trigger

Es stehen für das Device jeweils 2 GPIO’s zu Verfügung die mit einem Befehl belegt werden können.
Unterschiedlich für LiLyGo und Heltec.
Die GPIO’s können ausgewählt werden.
Command Destination beschreibt das Ziel Target an dem der Befehl ankommen soll.
Im Command Text wird der Befehl ausgewählt der gesendet werden soll.
Die GPIO’s sind so programmiert das sie nur nach GND gezogen werden müssen um den Befehl abzusetzen.
Was Ihr damit jetzt tun könnt:
GPIO 48 – Verwendung (ESP32-S3)
Der Pin GPIO 48 kann durch die flexible Pin-Matrix des ESP32-S3 für verschiedene digitale Funktionen genutzt werden.
Kommunikation & Sensoren
- GPS-Module – z. B. als
GPS_RXfür NMEA-Daten - One-Wire Sensoren – z. B. DS18B20 Temperaturfühler
- I²C / SPI – zusätzliche Sensoren oder Displays (z. B. BME280)
- UART – zusätzlicher serieller Kommunikationsport
Ein- und Ausgänge
- Taster / Schalter – mit internen Pull-up / Pull-down Widerständen
- Rotary Encoder – für Menüsteuerungen
- LEDs oder Summer – Statusanzeigen oder Signaltöne
- Relaismodule – zum Schalten externer Geräte
Steuerung (PWM)
- Servo-Motoren – Positionssteuerung
- Lüfterregelung – Geschwindigkeitssteuerung
- LED-Dimmen – Helligkeitssteuerung von LEDs
Wichtige Hinweise
- Kein Analog-Eingang: GPIO 48 besitzt keinen ADC
- 3,3 V Logik: 5 V dürfen nicht direkt angeschlossen werden
API Referenz
Das Webinterface nutzt eine HTTP API.
Alle Befehle können auch direkt über HTTP aufgerufen werden.
GET /api/cfg
Beispiel: Gilt auch für alle folgenden Commands.
http://<Deine_IP_oder_Domain/api/cfg
Liest die komplette Konfiguration.
Antwort:
„relay_callsign“:„DL7ABCF“,
„net_id“:66,
„crypto“:1,
„node_mode“:0,
„wifi“:1,
„ssid“:„MeshRadio“,
„beacon“:1,
„beacon_ms“:30000,
„routeadv“:1,
„rf_hz“:433050000,
„tx_dbm“:10,
„powersave“:0
}
POST /api/cfg
Setzt Konfiguration.
Body Beispiel:
„callsign“:„DJ1ABCF“,
„node_mode“:2,
„rf_hz“:433050000
}
POST /api/reset
Startet das Gerät neu.
Antwort:
POST /api/factory
Factory Reset durchführen.
Antwort:
POST /api/send
Sendet eine Nachricht.
Beispiel:
„dst“:„DL7ABCF“,
„ack“:1,
„text“:„STATUS?“
}
CLI Befehle (UART)
Zusätzlich existiert eine serielle CLI.
help
zeigt Befehle
status
zeigt Status
wifi
role
role 2
crypto
relay
relay toggle
send
cmd
Remote Kommandos.
cmd DL7ABCF 1 RELAY ON
cmd DL7ABCF 1 RELAY OFF
cmd DL7ABCF 1 RELAY TOGGLE
cmd DL7ABCF 1 CRYPTO ON
cmd DL7ABCF 1 CRYPTO OFF
Sensor Nachrichten
ACHTUNG! Die BME280 sind fest verdrahtet. Heltec: SDA GPIO 41 SCL GPIO 42 und LiLyGo: SDA GPIO 21 SCL GPIO 22
Wenn BME280 und Powersave aktiv.
Zu den Sensor Nachrichten gibt es eine Visualisierung
mit Steuerung
Im Release enthalten Pyton File:
Zur Beschreibung <- Klick
Zusammenfassung
Typischer Ablauf:
Factory Reset
↓
Konfiguration im Webinterface
↓
Apply
↓
Save
↓
Reset



