knb:firmware

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Nächste ÜberarbeitungBeide Seiten der Revision
knb:firmware [2022/01/15 23:08] – [OpenWRT] goligoknb:firmware [2022/01/15 23:13] goligo
Zeile 39: Zeile 39:
 Natürlich kann die Freifunk-Community in München nicht selber eigene Software für so viele verschiedene Routermodelle schreiben, sondern greift auf bestehende Opensource-Projekte zurück, die entsprechend den Anforderungen konfiguriert, kombiniert und angepasst werden, um zu einer Firmware zu kommen, die unseren Bedürfnissen entpricht. Natürlich kann die Freifunk-Community in München nicht selber eigene Software für so viele verschiedene Routermodelle schreiben, sondern greift auf bestehende Opensource-Projekte zurück, die entsprechend den Anforderungen konfiguriert, kombiniert und angepasst werden, um zu einer Firmware zu kommen, die unseren Bedürfnissen entpricht.
  
-Die Grundlage der Firmware ist **OpenWRT**, eine Linux-Distribution um die Standardfirmware von Endkunden-Routern zu ersetzen. Diese wird von **Gluon** erweitert und konfiguriert, so dass sie nicht mehr als normaler Heimnetzrouter funktioniert, sondern als Freifunk-Mesh-Router. **Freifunk München** wiederum sucht aus, für welche Router Firmware gebaut werden soll, welche Funktionen von Gluon aktiviert sind und hat zusätzliche Pakete geschrieben, um neue Funktionen hinzufügen.+Die Grundlage der Firmware ist **OpenWrt**, eine Linux-Distribution um die Standardfirmware von Endkunden-Routern zu ersetzen. Diese wird von **Gluon** erweitert und konfiguriert, so dass sie nicht mehr als normaler Heimnetzrouter funktioniert, sondern als Freifunk-Mesh-Router. **Freifunk München** wiederum sucht aus, für welche Router Firmware gebaut werden soll, welche Funktionen von Gluon aktiviert sind und hat zusätzliche Pakete geschrieben, um neue Funktionen hinzufügen.
  
-==== OpenWRT ====+==== OpenWrt ====
  
-[[https://openwrt.org/|OpenWRT Dokumentation]] +[[https://openwrt.org/|OpenWrt Dokumentation]] 
-[[https://openwrt.org/docs/guide-developer/source-code/start|OpenWRT Source Code]]+[[https://openwrt.org/docs/guide-developer/source-code/start|OpenWrt Source Code]]
  
-OpenWRT stellt alternative Router-Firmware für eine große Zahl von Endkunden-Routern (z.B. von D-Link, Netgear, TP-Link, AVM, Unifi) basierend auf Linux zur Verfügung. Dabei ist der Funktionsumfang von OpenWRT in der Regel größer als der der Originalfirmware und es gibt Updates für Modelle, die beim Hersteller schon aus der Wartung sind. +OpenWrt stellt alternative Router-Firmware für eine große Zahl von Endkunden-Routern (z.B. von D-Link, Netgear, TP-Link, AVM, Unifi) basierend auf Linux zur Verfügung. Dabei ist der Funktionsumfang von OpenWrt in der Regel größer als der der Originalfirmware und es gibt Updates für Modelle, die beim Hersteller schon aus der Wartung sind. 
  
 [[https://openwrt.org/toh/start?dataflt[Supported+Current+Rel*~]=21.02|Liste unterstützter Geräte der aktuellen Version 21.02]] [[https://openwrt.org/toh/start?dataflt[Supported+Current+Rel*~]=21.02|Liste unterstützter Geräte der aktuellen Version 21.02]]
Zeile 52: Zeile 52:
 Da es sich um eine Linux-Distribution handelt ist eine große Menge Software-Pakete verfügbar, der auf der Geräten installiert werden kann. Es gibt einen Paketmanager namens "opkg" mit dem Software aus dem Repository installiert werden kann. Da es sich um eine Linux-Distribution handelt ist eine große Menge Software-Pakete verfügbar, der auf der Geräten installiert werden kann. Es gibt einen Paketmanager namens "opkg" mit dem Software aus dem Repository installiert werden kann.
  
-[[https://openwrt.org/packages/index/start|OpenWRT Pakete]]+[[https://openwrt.org/packages/index/start|OpenWrt Pakete]]
  
-Der OpenWRT-Build ist umfangreich und komplex, aufgrund der Unterstützung vieler verschiedener Hardware-Plattformen. Da der Build in der Regel auf einem x86-64-System läuft, muss zunächst für jede Plattform eine entsprechende Cross-Compile-Toolchain aufgebaut werden, mit der dann der Linux-Kernel, das Userland und schliesslich die OpenWRT-Pakete für die jeweilige Plattform gebaut werden können. +Der OpenWrt-Build ist umfangreich und komplex, aufgrund der Unterstützung vieler verschiedener Hardware-Plattformen. Da der Build in der Regel auf einem x86-64-System läuft, muss zunächst für jede Plattform eine entsprechende Cross-Compile-Toolchain aufgebaut werden, mit der dann der Linux-Kernel, das Userland und schliesslich die OpenWrt-Pakete für die jeweilige Plattform gebaut werden können. 
  
 ==== Gluon ==== ==== Gluon ====
Zeile 63: Zeile 63:
 Gluon wird von vielen Freifunk-Communities genutzt. Es bietet genug Funktionalität in der Grundausstattung, um von kleinen Communities ohne viel Anpassung eingesetzt werden zu können, aber auch genug Flexibilität um eigene Komponenten einzubinden (wie zum Beispiel die Verwendung des Wireguard-Tunnels beim Freifunk München). Gluon unterstützt nur eine Teilmenge der Routermodelle, die für den Einsatz im Freifunk zweckmässig sind und getestet wurden. Gluon wird von vielen Freifunk-Communities genutzt. Es bietet genug Funktionalität in der Grundausstattung, um von kleinen Communities ohne viel Anpassung eingesetzt werden zu können, aber auch genug Flexibilität um eigene Komponenten einzubinden (wie zum Beispiel die Verwendung des Wireguard-Tunnels beim Freifunk München). Gluon unterstützt nur eine Teilmenge der Routermodelle, die für den Einsatz im Freifunk zweckmässig sind und getestet wurden.
  
-[[https://gluon.readthedocs.io/en/v2020.2.3/user/supported_devices.html|Unterstützte Geräte]]+[[https://gluon.readthedocs.io/en/v2021.1.1/user/supported_devices.html|Unterstützte Geräte v2021.1.1]]
  
-Der Gluon-Build funktioniert so, dass zunächst die Git-Repositories von OpenWRT und der zusätzlichen Gluon-spezifischen Pakete geladen werden. Dann werden Patches auf diese Projekte angewendet, um Fehler zu beheben, die im Upstream noch nicht gefixed sind, oder zusätzliche Features zu implementieren, die nicht über Pakete abgebildet werden können. Der OpenWRT-Build wird so konfiguriert, dass zum Beispiel das OpenWRT-UI LuCi weggelassen und durch das Gluon-UI ersetzt wird. Dann wird der OpenWRT-Build gestartet, um die Images zu bauen.+Der Gluon-Build funktioniert so, dass zunächst die Git-Repositories von OpenWrt und der zusätzlichen Gluon-spezifischen Pakete geladen werden. Dann werden Patches auf diese Projekte angewendet, um Fehler zu beheben, die im Upstream noch nicht gefixed sind, oder zusätzliche Features zu implementieren, die nicht über Pakete abgebildet werden können. Der OpenWrt-Build wird so konfiguriert, dass zum Beispiel das OpenWrt-UI LuCi weggelassen und durch das Gluon-UI ersetzt wird. Dann wird der OpenWrt-Build gestartet, um die Images zu bauen.
  
 ==== FFMUC ==== ==== FFMUC ====
Zeile 110: Zeile 110:
 **GLUON_TARGETS** **GLUON_TARGETS**
  
-Hier kann man ein oder mehrere Targets angeben, für die Images gebaut werden sollen. Zum Testen empfiehlt sich eine VM zu benutzen, in der man x86-64 Images laufen lassen kann. Wenn man Firmware für ein bestimmtes Gerät bauen will, so muss man erst herausfinden, in welchem Target es enthalten ist. Hier lohnt sich ein Blick auf der Liste der unterstützten Geräte von OpenWRT oder Gluon.+Hier kann man ein oder mehrere Targets angeben, für die Images gebaut werden sollen. Zum Testen empfiehlt sich eine VM zu benutzen, in der man x86-64 Images laufen lassen kann. Wenn man Firmware für ein bestimmtes Gerät bauen will, so muss man erst herausfinden, in welchem Target es enthalten ist. Hier lohnt sich ein Blick auf der Liste der unterstützten Geräte von OpenWrt oder Gluon.
  
 <code bash> <code bash>
Zeile 171: Zeile 171:
 Die Motivation selber ein Firmware-Image zu bauen liegt oft darin, dass man ein Gerät hat, für das FFMUC keine Firmware anbietet. Da gibt es unterschiedliche Schwierigkeitsgrade, je nachdem wie weit der Support für diese Geräte in den zugrunde liegenden Frameworks schon vorhanden ist. Die Motivation selber ein Firmware-Image zu bauen liegt oft darin, dass man ein Gerät hat, für das FFMUC keine Firmware anbietet. Da gibt es unterschiedliche Schwierigkeitsgrade, je nachdem wie weit der Support für diese Geräte in den zugrunde liegenden Frameworks schon vorhanden ist.
  
-=== Kein OpenWRT Support ===+=== Kein OpenWrt Support ===
  
-Als erstes ist zu prüfen, ob OpenWRT das Gerät schon unterstützt. Sollte dies nicht der Fall sein, sieht es schlecht aus. Ein neues Gerät in OpenWRT zu supporten ist aufwendig und verlangt tiefgehendes Wissen über den verwendeten SoC, den Boot-Prozess, weitere Hardware die darin verbaut ist. Hier heisst es warten, ob/wann eine Unterstützung in OpenWRT kommt. Leider gibt es viele beliebte FritzBox Geräte, für die es absehbar keine Unterstütung geben wird (z.B. 7390, 7490).+Als erstes ist zu prüfen, ob OpenWrt das Gerät schon unterstützt. Sollte dies nicht der Fall sein, sieht es schlecht aus. Ein neues Gerät in OpenWrt zu supporten ist aufwendig und verlangt tiefgehendes Wissen über den verwendeten SoC, den Boot-Prozess, weitere Hardware die darin verbaut ist. Hier heisst es warten, ob/wann eine Unterstützung in OpenWrt kommt. Leider gibt es viele beliebte FritzBox Geräte, für die es absehbar keine Unterstütung geben wird (z.B. 7390, 7490).
  
 === Kein Gluon Support === === Kein Gluon Support ===
  
-Wenn OpenWRT-Support vorhanden ist, aber kein Gluon-Support, dann sieht es schon etwas besser aus. Entweder ist das Gerät noch nicht vollständig unterstützt und deswegen absichtlich weggelassen oder es ist so exotisch, dass noch keiner danach verlangt hat. Man kann erstmal schauen, ob es vielleicht im "next" Branch schon enthalten ist, also für das kommende Release geplant ist. Man kann auch händisch die entsprechende Targets-Datei in Gluon dafür ergänzen bzw. anlegen und hat eine reelle Chance, dass ein funktionierendes Image herauskommt.+Wenn OpenWrt-Support vorhanden ist, aber kein Gluon-Support, dann sieht es schon etwas besser aus. Entweder ist das Gerät noch nicht vollständig unterstützt und deswegen absichtlich weggelassen oder es ist so exotisch, dass noch keiner danach verlangt hat. Man kann erstmal schauen, ob es vielleicht im "next" Branch schon enthalten ist, also für das kommende Release geplant ist. Man kann auch händisch die entsprechende Targets-Datei in Gluon dafür ergänzen bzw. anlegen und hat eine reelle Chance, dass ein funktionierendes Image herauskommt.
  
 [[https://github.com/freifunk-gluon/gluon/tree/master/targets|master-Branch Targets]] [[https://github.com/freifunk-gluon/gluon/tree/master/targets|master-Branch Targets]]
  • knb/firmware.txt
  • Zuletzt geändert: 2023/04/26 16:18
  • von awickert