---
format: markdown
categories: Netz-Infrastruktur, Nodes, Firmware, Hintergrundinfos
title: Firmware
...

# Download

## Firmware Download Assistent

Die momentan aktuellen Versionen sind immer hier zu finden:

[Firmware Download Assistent](https://fw-download.ffdo.de)

Wenn der Ort an dem ihr euren Router aufstellen wollt auf der Karte nicht farbig angemalt ist, dann wählt bitte "Außenbezirke und Offloader" aus.

## Firmware Download Server

Es kann passieren, dass euer Router in der Liste der unterstützten Router im Assistenten nicht auftaucht.  
Eventuell wird der Router mit einer Firmware Version unterstützt, die sich noch in der Testphase befindet.  
Diese könnt ihr dann aus dem passenden Verzeichnis laden: 

ID Region                                  Aktuelle Stabile Version (Assistent)                       Link zu allen Versionen
-- --------------------------------------- ---------------------------------------------------------- -----------------------------------------------------
01 **Test und Dev**                        [Domäne 01](https://fw-download.ffdo.de/?region=domaene01) <https://images.ffdo.de/ffdo_ng/domaenen/domaene01>
02 **Außenbezirke und Offloader**          [Domäne 02](https://fw-download.ffdo.de/?region=domaene02) <https://images.ffdo.de/ffdo_ng/domaenen/domaene02>
03 **Dortmund Mitte - Nord:**              [Domäne 03](https://fw-download.ffdo.de/?region=domaene03) <https://images.ffdo.de/ffdo_ng/domaenen/domaene03>
   DO Innenstadt-Nord                   
04 **Dortmund Mitte - Süd:**               [Domäne 04](https://fw-download.ffdo.de/?region=domaene04) <https://images.ffdo.de/ffdo_ng/domaenen/domaene04>
   DO Innenstadt-West, DO Innenstadt-Ost   
05 **Dortmund Nord:**                      [Domäne 05](https://fw-download.ffdo.de/?region=domaene05) <https://images.ffdo.de/ffdo_ng/domaenen/domaene05>
   DO-Scharnhorst, DO-Brackel,             
   DO-Lütgendortmund, DO-Mengede,          
   DO-Huckrade, DO-Eving                   
06 **Dortmund Süd:**                       [Domäne 06](https://fw-download.ffdo.de/?region=domaene06) <https://images.ffdo.de/ffdo_ng/domaenen/domaene06>
   DO-Hombruch, DO-Hörde, DO-Applerbeck  
07 **Werne**                               [Domäne 07](https://fw-download.ffdo.de/?region=domaene07) <https://images.ffdo.de/ffdo_ng/domaenen/domaene07>
08 **Lünen**                               [Domäne 08](https://fw-download.ffdo.de/?region=domaene08) <https://images.ffdo.de/ffdo_ng/domaenen/domaene08>
09 **Bergkamen, Kamen, Bönen**             [Domäne 09](https://fw-download.ffdo.de/?region=domaene09) <https://images.ffdo.de/ffdo_ng/domaenen/domaene09>
10 **Unna**                                [Domäne 10](https://fw-download.ffdo.de/?region=domaene10) <https://images.ffdo.de/ffdo_ng/domaenen/domaene10>
11 **Schwerte, Holzwickede, Fröndenberg**  [Domäne 11](https://fw-download.ffdo.de/?region=domaene11) <https://images.ffdo.de/ffdo_ng/domaenen/domaene11>




# Versionen

## Aktuelle Verteilung der Firmware Versionen in der klassischen Struktur

![](https://grafana.ffdo.de/render/dashboard-solo/db/firmwareubersicht?panelId=1&orgId=1&theme=light&width=720&height=480&from=now-7d&to=now)

![](https://grafana.ffdo.de/render/dashboard-solo/db/firmwareubersicht?panelId=88&orgId=1&theme=light&width=720&height=480&from=now-7d&to=now)

## Historie

FFDO-Release Gluon-Version Aktuelle Kanäle Netz  Erstellt am Erstellt von      Änderungen
------------ ------------- --------------- ----- ----------- ----------------- ----------
2.2.7        2018.2.4.2                    neu   16.06.2022  Cajus              [ecdsautils: fix signature verification](https://github.com/freifunk-gluon/gluon/commit/5cba8d317935b1383350b3187afaa0715625684e)
2.2.6        2018.2.4                      neu   09.02.2020  Christian / Cajus  Neue IPv6 address prefix, [gluon doc 2018.2.2](https://gluon.readthedocs.io/en/v2018.2.2/releases/v2018.2.2.html), [gluon doc 2018.2.3](https://gluon.readthedocs.io/en/v2018.2.3/releases/v2018.2.3.html), [gluon doc 2018.2.4](https://gluon.readthedocs.io/en/v2018.2.x/releases/v2018.2.4.html)
2.2.3        2018.2.1      e               neu   22.03.2019  Christian / Cajus  Neue Router u.a. MT300Nv2, Archer C50 v3/v4, TL-WR841Nv13,GL-MT300A, GL-MT300N, GL-MT750 [gluon doc 2018.2.1](http://gluon.readthedocs.io/en/v2018.2.1/)
2.2.1        2018.2                        neu   05.01.2019  Christian / Cajus  Neue Router u.a. TP-Link Archer C7 v5, TL-WR810N v1, UniFi AC Mesh Pro [gluon doc 2018.2](http://gluon.readthedocs.io/en/v2018.2.q/)
2.1.3        2018.1.4      e               neu   29.12.2018  Cajus              Neue Router u.a. Archer C59 v1, TL-WA901ND v5 [gluon doc 2018.1.4](http://gluon.readthedocs.io/en/v2018.1.4/)
2.0.4        2017.1.8      e+b+s           neu   28.09.2018  Cajus              Neue Struktur: Aufteilung in 11 Firmware Versionen, L2TP statt fastd
0.11.8       2017.1.8      e               neu   14.07.2018  Cajus              TP-Link Archer C7 V4, TP-Link TL-WR940N V6, Ubiquiti UniFi AC Mesh  [gluon doc 2017.1.8](http://gluon.readthedocs.io/en/v2017.1.8/)
0.11.7       2017.1.7      e               neu   02.06.2018  Cajus              Fehler bei Update von Ubiquiti Routern beseitigt/gemildert: [gluon doc 2017.1.7](https://gluon.readthedocs.io/en/v2017.1.7/releases/v2017.1.7.html)
0.11.6       2017.1.6      e               neu   19.04.2018  Cajus              DNS Cache deaktiviert, div. Bugfixes [gluon doc 2017.1.6](http://gluon.readthedocs.io/en/v2017.1.6/)
0.11.5       2017.1.5      e               neu   28.02.2018  Cajus              DNS Cache, GL Innovations GL-AR300M, TP-Link TL-WR1043N v5, Ubiquiti EdgeRouter-X, Ubiquiti EdgeRouter-X SFP, [gluon doc 2017.1.5](http://gluon.readthedocs.io/en/v2017.1.5/)
0.11.2       2017.1.2      e               neu   01.01.2018  Cajus              Erste Version von ffdo auf Basis von lede statt openwrt. [gluon doc 2017.1.2](http://gluon.readthedocs.io/en/v2017.1.2/)
0.10.3       2016.2.7      e+b+s           neu   06.10.2017  Cajus              TP-Link TL-WR841N/ND v12; [gluon doc 2016.2.7](http://gluon.readthedocs.io/en/v2016.2.7/)
0.10.2       2016.2.3      e+b+s           neu   13.02.2017  Markus             TP-Link TL-WR940N v4, TP-Link TL-WR1043ND v4; [gluon doc 2016.2.3](http://gluon.readthedocs.io/en/v2016.2.3/)
0.10.1       2016.2.2                      neu   02.02.2017  Markus             TP-Link CPE210/510, TL-WA801N/ND v3, TL-WR841ND v11
0.10.0       2016.2.1                      neu   12.11.2016  Markus             Gluon v2016.2.1, keine 802.11b-1999 Rates mehr, viele neue Geräte
0.9.2        2016.1.5                      neu   01.06.2016  Markus             Gluon v2016.1.5, kein Alfred mehr, Support für 841 V11, x86 und x86-64 Images
0.9.1        2016.1.3                      neu   15.04.2016  Markus             Ad-Hoc anstatt 802.11s, Gluon v2016.1.3
0.9.0        2016.1.2                      neu   20.03.2016  Markus             Umstellung auf neue Supernodes und 802.11s statt Ad-Hoc
0.8.2        2016.1.3                      alt   16.04.2016  Markus             Gluon 2016.1.3 mit Fix für Flash-Bug in 2016.1.2
0.8.1        2016.1.2                      alt   20.03.2016  Markus             Update auf Gluon 2016.1.2
0.8.0        2016.1                        alt   27.02.2016  Markus             Ein Tunnel pro Node, Autoupdate-Keys von FFDO statt FFRL
0.7.2        2015.1.2                      alt                                  Update auf FFRUHR-FFDO Subdomäne
0.6.1                                      ffrg 



## Geplante Versionen 

Derzeit in der Vorbereitung oder Planung befindliche Versionen: 

FFDO-Release Gluon-Version Netz Erstellt von       Änderungen
------------ ------------- ---- -----------------  ----------
*3.0.0*      *2018.1.*     *neu*                   *Multidomain support in one Firmware image(?)*


## Autoupdate

Es gibt drei mögliche Update-Kanäle (*Branches*), aus denen ein Knoten Firmware-Upates automatisch beziehen kann. Eine neu erstellte Firmware durchläuft immer erst die Branches *experimental* und *beta* bevor das Update als *stable* für alle Knoten freigegeben wird.

Der zu nutzende Kanal kann im Konfigurationsmodus der Knoten ausgewählt werden. **Als Standard bei neu installierten Knoten ist immer ein Autoupdate über den *stable*-Kanal eingestellt, egal ob die Firmware aus einem anderen Kanal bezogen wurde.** Falls die Einstellung geändert wird bleibt die Änderung aber auch nach einem Update erhalten. 

### Stable

Bei allen Knoten, an die man nicht problemlos ran kommt und die nicht direkt von Menschen aus der FFDO-Community betrieben werden sollte der Autoupdater i.d.r. immer aktiv sein und auf *stable* gestellt sein. Es werden nur ausgiebig getestete Updates verteilt. 

### Beta

Knoten, auf ihr im Notfall physikalischen Zugriff habt können problemlos auf *beta* betrieben werden. Die Updates werden in den Beta-Branch gelegt wenn sie nach der Verteilung über *experimental* keine offensichtlichen Fehler mehr enthalten, aber noch ausgiebig getestet werden müssen bevor sie für alle Knoten freigegeben werden können.

**Es ist wichtig, viele unterschiedliche Router-Modell im Beta-Test zu haben, da vorher nur einige wenige Modelle getestet werden können.**

### Experimental

Neue Firmware, die für ein Autoupdate vorgesehen ist wird kurz nach der Erstellung in den *experimental*-Branch gelegt. Die Updates sind hier noch nicht ausgiebig getestet, es kann also passieren dass ein Router nicht mehr korrekt funktioniert nach dem Update. 

# Entwicklung

## Buildsystem

Unsere Router-Firmware basiert auf dem [Gluon-Projekt](https://gluon.readthedocs.org/). Die FFDO-spezifische Konfiguration und die zur Erstellung der Firmware genutzten Build-Scripte werden auf Github im Repository [site-ffdo](https://github.com/ffdo/site-ffdo) gepflegt. Der Build-Vorgang ist komplett automatisiert und kann auf jedem Host mit [Docker](https://www.docker.com/) ohne großes Vorwissen nachvollzogen werden. 

## Image-Server

### Neue Struktur
 
Alle Releases der neuen Struktur liegen auf <https://images.ffdo.de/ffdo_ng/>

Die Firmware wird in den Verzeichnissen "releases" der einzelnen Domänen versioniert abgelegt

    /ffdo_ffdo_ng/domaenen/domaeneNN/releases/x.x.x/images
    /ffdo_ffdo_ng/domaenen/domaeneNN/releases/y.y.y/images

In der neuen Struktur wurde die klassische Struktur in 11 Regionen/Domänen aufgeteilt:

ID Region                                  Aktuelle Stable Version                                    Link zu allen Versionen
-- --------------------------------------- ---------------------------------------------------------- ------------------------------------------------------------
01 Test und Dev                            [Domäne 01](https://fw-download.ffdo.de/?region=domaene01) <https://images.ffdo.de/ffdo_ng/domaenen/domaene01/releases>
02 Außenbezirke und Offloader              [Domäne 02](https://fw-download.ffdo.de/?region=domaene02) <https://images.ffdo.de/ffdo_ng/domaenen/domaene02/releases>
03 Dortmund Mitte - Nord:                  [Domäne 03](https://fw-download.ffdo.de/?region=domaene03) <https://images.ffdo.de/ffdo_ng/domaenen/domaene03/releases>
   DO Innenstadt-Nord                   
04 Dortmund Mitte - Süd:                   [Domäne 04](https://fw-download.ffdo.de/?region=domaene04) <https://images.ffdo.de/ffdo_ng/domaenen/domaene04/releases>
   DO Innenstadt-West, DO Innenstadt-Ost   
05 Dortmund Nord:                          [Domäne 05](https://fw-download.ffdo.de/?region=domaene05) <https://images.ffdo.de/ffdo_ng/domaenen/domaene05/releases>
   DO-Scharnhorst, DO-Brackel,             
   DO-Lütgendortmund, DO-Mengede,          
   DO-Huckrade, DO-Eving                   
06 Dortmund Süd:                           [Domäne 06](https://fw-download.ffdo.de/?region=domaene06) <https://images.ffdo.de/ffdo_ng/domaenen/domaene06/releases>
   DO-Hombruch, DO-Hörde, DO-Applerbeck  
07 Werne                                   [Domäne 07](https://fw-download.ffdo.de/?region=domaene07) <https://images.ffdo.de/ffdo_ng/domaenen/domaene07/releases>
08 Lünen                                   [Domäne 08](https://fw-download.ffdo.de/?region=domaene08) <https://images.ffdo.de/ffdo_ng/domaenen/domaene08/releases>
09 Bergkamen, Kamen, Bönen                 [Domäne 09](https://fw-download.ffdo.de/?region=domaene09) <https://images.ffdo.de/ffdo_ng/domaenen/domaene09/releases>
10 Unna                                    [Domäne 10](https://fw-download.ffdo.de/?region=domaene10) <https://images.ffdo.de/ffdo_ng/domaenen/domaene10/releases>
11 Schwerte, Holzwickede, Fröndenberg      [Domäne 11](https://fw-download.ffdo.de/?region=domaene11) <https://images.ffdo.de/ffdo_ng/domaenen/domaene11/releases>

Die geografische Lage der einzelnen Domänen kann auf dem [Firmware Download Server](https://fw-download.ffdo.de) eingesehen werden.

### Klasssische Struktur 

Alle Releases der klassischen Struktur liegen auf <https://images.ffdo.de/ffdo/>

**Verwendet die Firmware aus der klassischen Struktur, wenn ihr einen Router mit anderen Router aus der klassischen Struktur verbinden wollt.**


Autoupdate-Kanal               Für neu gekaufte Router (factory)                          Upgrade von bestehenden Freifunk-Knoten (sysupgrade)
----------------               ---------------------------------------------------------- -------------------------------------------------------------
**Stabil** (*stable*)          <https://images.ffdo.de/ffdo/stable/images/factory/>       <https://images.ffdo.de/ffdo/stable/images/sysupgrade/>
Test (*beta*)                  <https://images.ffdo.de/ffdo/beta/images/factory/>         <https://images.ffdo.de/ffdo/beta/images/sysupgrade/>
Experimentell (*experimental*) <https://images.ffdo.de/ffdo/experimental/images/factory/> <https://images.ffdo.de/ffdo/experimental/images/sysupgrade/>

Alle Firmware-Releases, auch archivierte und noch nicht für ein Autoupdate freigegebene Versionen können hier heruntergeladen werden:
<https://images.ffdo.de/ffdo/releases/>

**Falls ihr euch nicht sicher seid, welche Version ihr nutzen sollt bitte *immer* die stabilen (stable)-Images nutzen.**

Die Firmware wird im Verzeichnis "releases" versioniert abgelegt:

    /ffdo/releases/x.x.x/images
    /ffdo/releases/x.x.x/modules
    /ffdo/releases/y.y.y/images
    /ffdo/releases/y.y.y/modules

Das in einem Branch aktuell ausgelieferte Release wird durch [gluon-provisioner](https://github.com/ffdo/gluon-provisioner) festgelegt.
Damit ist möglich einzelne Router, Routergruppen oder mit verschiedenen Version der Firmware zu versorgen. 
Dazu passt man die Datei `/etc/gluon-provisioner.yaml` an (siehe [Beispiel](https://raw.githubusercontent.com/ffdo/gluon-provisioner/master/examples/gluon-provisioner.yaml)) und startet den gluon-provisioner mit `sudo systemctl restart gluon-provisioner.service` neu.


## Freigabe von Autoupdates

Damit ein automatisches Update von den Knoten akzeptiert wird muss im Sysupgrade-Verzeichnis ein *Manifest* für das jeweilige Branch liegen (`stable.manifest`, `beta.manifest`, `experimental.manifest`). 
Das Manifest enthält SHA512-Checksummen aller Update-Dateien und den Release-Kanal. Das Manifest muss digital unterschrieben sein, damit das Update von den Knoten akzeptiert wird.

Momenten sind folgene Regelungen konfiguriert:

* Stable und Beta benötigen **zwei Unterschriften** zur Freigabe
* Experimental benötigt nur eine Unterschrift. 

Schlüssel zum Unterschreiben von Firmware-Releases besitzen Till, Torben, Tim, Markus, Stefan und Cajus


## Firmware Unterschreiben in der neuen Struktur

Mit der neuen Struktur ist die Firmware für die verschiedenen Domänen in unterschiedliche Verzeichnisse verteilt. Das Zertifizieren der Manifeste kann sehr mühsam sein. Es gibt einen einfachen Weg, wenn der Unterzeichner sich per ssh auf images.ffdo.de einloggen kann.
Zuerst besorgt man sich das 'sign.sh' tool aus github:

    wget https://raw.githubusercontent.com/ffdo/site-ffdo-l2tp/master/sign.sh 
    chmod u+x sign.sh

Wenn man dann seinen private Schlüssel in einer Datei gespeichert hat, zB $HOME/secret.txt, kann man mit 

    sudo find /data/images.ffdo.de/ffdo_ng/domaenen/domaene*/releases/2.0.4 -name "*.manifest" -exec $HOME/sign.sh $HOME/secret.txt {} \;

auf einen Schlag die 2.0.4er Versionen aller Domänen signieren. Ggf muss die Versionsnummer an die aktuelle Version angepasst werden. Auch kann man mit -name "experimental.manifest" das Signieren auf einen bestimmten Branch limitieren.
Die Datei mit dem privaten Schlüssel sollte anschließend gelöscht werden. Das 'sign.sh' Tool kann für die nächste Version verbleiben.