Meshtastic-Firmware direkt über die Linux-Konsole flashen – So geht’s!

Aufspielen der Firmware über das USB-Kabel ohne Web-Flasher.

Wer eine Meshtastic-Node an einem abgelegenen Standort betreibt und die Firmware aktuell halten möchte, ohne für jedes Update persönlich dorthin fahren zu müssen, findet in der folgenden Lösung eine praktische Alternative.

Damit diese Lösung funktioniert, muss die Meshtastic-Node über ein USB-Datenkabel mit einem Rechner verbunden sein, der per Internet erreichbar ist. In meinem Fall betreibe ich bereits einen OpenWebRX+-Server rund um die Uhr auf einem Raspberry Pi 5, an den ich die Node über ein entsprechendes Datenkabel angeschlossen habe.

Die Kommunikation zwischen dem Linux-Rechner und der Meshtastic-Node erfolgt über eine serielle Schnittstelle. Mithilfe der Meshtastic Python CLI lässt sich die Node darüber nicht nur konfigurieren und fernbedienen, sondern mit dem ESPTOOL auch auf eine neue Firmware aktualisieren.

Wir zeigen euch Schritt für Schritt, wie ihr dabei manuell vorgeht.

1. Benötigte Software-Pakete installieren

Zunächst verbindet ihr euch per SSH mit dem Host-Rechner, aktualisiert die Paketliste und installiert anschließend die benötigten Softwarepakete.

sudo apt update
sudo apt install -y python3-full python3-venv python3-pip

2. Python Umgebung einrichten

Falls auf eurem Zielrechner die Python-Umgebung extern verwaltet wird (externally-managed-environment), wie es bei mir mit OpenWebRX+ der Fall ist, solltet ihr zunächst eine neue Python-Umgebung anlegen und aktivieren. Anschließend installiert ihr die Meshtastic CLI und das ESPTOOL innerhalb dieser Umgebung.

python3 -m venv ~/meshtastic-env
source ~/meshtastic-env/bin/activate
pip install --upgrade esptool meshtastic

3. Serielle-Schnittstelle einrichten

Im nächsten Schritt müsst ihr den Port der seriellen Schnittstelle eurer Node auf dem Zielrechner herausfinden. Dazu lassen wir uns mit dem folgenden Befehl zunächst alle zugewiesenen Ports anzeigen.

ls /dev/ttyUSB* /dev/ttyACM*

In meinem Fall handelt es sich bei der Node um ein T-LoRa v2.1_1.6.1 von Lilygo, dem der Port ttyACM1 zugewiesen wurde. Bei euch kann die Portnummer jedoch variieren, und je nach Gerät könnte der Port auch beispielsweise ttyUSBx sein.

Lilygo T-LoRa v2.1_1.6.1

Sobald ihr den Port ermittelt habt, fügt ihr euren Nutzer der Gruppe ‚dialout‘ hinzu und gewährt ihm Schreib- und Leserechte für den zuvor ermittelten Port.

sudo usermod -a -G dialout $USER
sudo chmod a+rw /dev/ttyACM1

4. Aktuelle Firmware herunterladen

Nun benötigen wir noch die für euer Gerät passende Firmware. Geht dazu zunächst auf die Seite github.com/meshtastic/firmware/releases und scrollt zu der gewünschten Firmware-Version. Wer nicht unbedingt die neuesten Features benötigt, sondern lieber auf Nummer sicher gehen möchte, ist mit der neuesten Beta-Version gut beraten. Zum Zeitpunkt des Schreibens dieses Artikels handelt es sich dabei um die Version 2.5.20.4c97351 Beta.

Screenshot von github.com

Meshtastic Firmware Releases auf Github

In der Sektion ‚Assets‘ der entsprechenden Firmware kopiert ihr nun den für euer Board passenden Link zum ZIP-Archiv, das den Namen ‚firmware-<platform>-<version>.zip‘ trägt. Beim Lilygo T-LoRa v2.1_1.6.1 handelt es sich um ein ESP32-Board, also kopieren wir den Link zur Datei ‚firmware-esp32-2.5.20.4c97351.zip‘.

Ladet euch nun diese Datei in den Homefolder auf eurem Remote-Rechner herunter und entpackt das soeben heruntergeladene Archiv mit:

cd ~
wget https://github.com/meshtastic/firmware/releases/download/v2.5.20.4c97351/firmware-esp32-2.5.20.4c97351.zip
unzip firmware-esp32-2.5.20.4c97351.zip -d firmware-esp32-2.5.20.4c97351
cd firmware-esp32-2.5.20.4c97351
ls -al

Im Archiv befinden sich verschiedene Binärdateien mit der Endung .bin. Jetzt gilt es, die für euch passende Datei auszuwählen. In meinem Fall möchte ich die Firmware nur aktualisieren, sodass meine Einstellungen auf der Node erhalten bleiben. Daher wähle ich die Datei mit der Endung ‚-update.bin‘. Für das Lilygo T-LoRa v2.1_1.6.1 lautet die richtige Firmware-Datei ‚firmware-tlora-v2-1-1_6-2.5.20.4c97351-update.bin‚.

Im nächsten Schritt übertragen wir diese Binärdatei nun auf die Meshtastic-Hardware.

Optional: Node-Einstellungen sichern

Bevor ihr die Firmware auf das Gerät übertragt, könnt ihr optional eure Einstellungen sichern.

meshtastic --export-config > ~/meshtastic-backup.yaml

5. Firmware aufspielen und verifizieren

Nun starten wir den eigentlichen Vorgang zum Aufspielen der Firmware. Passt die unten stehenden Befehle entsprechend dem von euch ermittelten Port (/dev/ttyXXXN) und der Firmware-Datei (xxx.bin) an.

esptool.py --chip auto --port /dev/ttyACM1 --baud 152000 write_flash -z 0x10000 firmware-tlora-v2-1-1_6-2.5.20.4c97351-update.bin

Wurde der Flashvorgang erfolgreich abgeschlossen, könnt ihr mit dem folgenden Befehl die Versionsnummer eurer Meshtastic-Node auslesen und anzeigen lassen:

meshtastic --port /dev/ttyACM1 --info | awk -F'"' '/firmwareVersion/ {print $4}'

Alternative: Komfortables Aufspielen mit Linux-Script

Um diesen Prozess komfortabler zu gestalten, hat der GitHub-User mikcecarper ein Skript geschrieben, das euch mit einem Menü durch die verschiedenen Schritte begleitet. Es übernimmt das Herunterladen und Entpacken der Firmware-Datei sowie das Aufspielen auf euer Board.

Die entsprechenden Dateien sowie eine Anleitung zur Verwendung findet ihr in seinem Repository.

Screenshot von github.com

meshfirmware auf Github

In diesem Beitrag haben wir euch Schritt für Schritt gezeigt, wie ihr die Firmware eurer Meshtastic-Node unter Linux direkt im Terminal aufspielen könnt – ganz ohne Web-Flasher. Voraussetzung dafür ist, dass die Node per USB mit einem Linux-Rechner verbunden ist, dieser über eine Internetverbindung verfügt und gegebenenfalls von außen, z. B. per SSH, erreichbar ist.

Der gezeigte Vorgang lässt sich in gleicher Weise auch für andere ESP32-Firmware nutzen, beispielsweise für eine MeshCom-Node.

Viel Erfolg!

Habt ihr Fragen zu unserem Beitrag oder weitere Anregungen? Schreibt sie uns gerne in die Kommentare unter diesem Beitrag oder diskutiert sie mit uns in unserer Telegram- oder WhatsApp-Gruppe.

Team DL-Nordwest, Stephan 9V1LH/(9M2/)DG1BGS


Möchtest du das DL-Nordwest Projekt unterstützen? Dann freuen wir uns über deinen Gastbeitrag, das Teilen unserer Inhalte oder eine (kleine) Spende 🤑 Vielen Dank für deine Unterstützung! 😘

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

zwölf + 4 =