Zum Inhalt springen

Technische Architektur

ELRS Mobile ist nicht nur ein Web-Wrapper; es ist eine native Dart-Implementierung der ExpressLRS Kompilierungs- und Konfigurations-Pipeline.

Vereinheitlichte Firmware-Zusammenstellung

Anstatt sich auf einen entfernten Cloud-Compiler zu verlassen, erstellt die App Binärdateien dynamisch lokal auf Ihrem Gerät. Beim Flashen von ESP32/ESP8285 Zielen führt der FirmwareAssembler eine präzise Bit-Level-Modifikationssequenz aus:

1

Extrahiert die generische Basis-Firmware aus dem gecachten firmware.zip-Archiv.

2

Entfernt die Basis-Auffüllung, indem die ESP 0xE9 Magic Byte Signatur gesucht wird.

3

Extrahiert spezifische Ziel-Pinbelegungen und Laufzeitkonfigurationen aus hardware.json.

4

Verpackt Produktname (128b), Lua Name (16b), options.json (512b) und hardware.json (2048b) direkt in den Binärstrom.

5

Komprimiert die endgültige Nutzlast in einen .gz-Stream, falls von der Zielplattform (z.B. ESP8285 legacy) erforderlich.

Die App verarbeitet präzise die komplexen Unterschiede zwischen Frequenzbändern. Bei 900MHz/Dual-Band-Geräten injiziert sie aktiv Ihre gewählte Domäne (z.B. FCC, EU868) in die kompilierte JSON-Nutzlast. Für Standard-2.4GHz-Ziele verwendet sie ein boolesches Flag, um den Extraktionsprozess während der Montage stillschweigend entweder zu den Standard-FCC/- oder europäischen LBT/-Basis-Firmware-Ordnern zu leiten.

Offline-Flashing wird durch ein robustes lokales Caching-System ermöglicht. Wenn ein Benutzer eine Veröffentlichung über den Firmware Manager herunterlädt, zieht der FirmwareCacheService die generische firmware.zip und gerätespezifische hardware.zip direkt aus dem ExpressLRS Artifactory. Diese Archive werden lokal auf dem Gerät verwaltet und gespeichert, wodurch die Zusammenstellung und das Flashen sofort vor Ort ohne aktive Internetverbindung erfolgen können.


Native Netzwerkbindung

Mobile Betriebssysteme (insbesondere Android und iOS) depriorisieren Wi-Fi-Verbindungen ohne Internetzugang und leiten den Datenverkehr stattdessen stillschweigend über Mobilfunk. Dies verhindert, dass Standard-Apps die ELRS-Hardware unter 10.0.0.1 erreichen können.

ELRS Mobile löst dies über den NativeNetworkService. Wenn eine Hardwareverbindung erkannt wird, ruft die App einen plattformspezifischen MethodChannel auf, um den gesamten Flutter-Prozess auf Kernel-Ebene des Betriebssystems an die Wi-Fi-Schnittstelle zu binden. Dies stellt sicher, dass der gesamte HTTP- und mDNS-Datenverkehr korrekt zur Hardware geleitet wird, unabhängig vom Mobilfunkstatus.