Inhaltsverzeichnis

UniFi UAP Router flashen

Bild: Freifunk München Logo

Haben wir einen UniFi UAP-Router bei einem Händler bzw. auf einem (online)-Flohmarkt erworben, müssen wir für den Betrieb als Freifunk Router zu erst einmal das Betriebssystem des Routers austauschen, sprich flashen. Die Routermodelle und Access-Points aus dem Hause Ubiquiti Networks werden von vielen Freifunk-Enthusiasten geliebt, aber auch gehasst. Geliebt, wegen der guten Performance und ihrer Robustheit - gehasst, da sie doch zuweilen etwas mehr Stress beim Flashen der Firmware bereiten, als gängige „Plasterouter“.
Bild: Photo eines UniFi AP
Im folgenden Konfigurationsbeispiel wollen wir das Modell Indoor 802.11n Access Point UniFi AP genauer betrachten.

Bei der Beschaffung dieser Accesspoints ist darauf zu achten, dass diese die Variante Version 1 mit dem Chipsatz Atheros AR7240 verwendet, da diese am besten unterstützt wird. Zum Flashen der Firmware steht uns leider keine komfortable Möglichkeit, wie z.B. bei einem TP-Link TL-WR940N(EU) zur Verfügung. Der Einfachheit halber werden wir die Firmware mit Hilfe des Updaters fwupdate.real aufspielen, bzw. die Freifunkfirmware einfach via TFTP1) auf den Accesspoint transferieren.

Hinweise zu den LED-Farben des Leuchtringes findet man auf der Seite hier.

Vorbereitung Rechner

Netzwerk-Definition

Der UniFi-AP hat per Default die IP-Adresse 192.168.1.20. Damit sich unser Rechner mit dem UniFi-AP auch verbinden kann, müssen wir der Netzwerkschnittstelle des Rechners eine feste IP-Adresse aus dem Netz 192.168.1.0/24 zuweisen, z.B.

Dies erledigen wir mit dem Netzwerk-Management-Tool unseres Vertrauens, wie z.B. NetworkManager-GUI oder der Windows Netzwerkeinstellungen unter Adaptereinstellungen ändern, LAN-Verbindung, Eigenschaften, Internetprotokoll-Version 4.
BILD: Bildschirmhardcopy der Networkmanager-GUI

Zur Kommunikation mit dem UniFi-AP wird die UniFi-Controller-Software nicht benötigt! Für den Zugriff per SSH nutzen wir später den Defaultuser ubnt mit dem Passwort ubnt.

TFTP-Client

Zum Kopieren des Firmware-Binarys benötigen wir nun das Client-Programm von TFTP. Je nach verwendeter LINUX-Distribution installieren wir dies mit dem zugehörigen Paketmanagers. Im Fall von Fedora wäre dies z.B. das Programm dnf.

 dnf install tftp -y

Vorbereitung Access-Point

Downgrade der Firmware

Aktuelle Firmware-Versionen seit der Version 3.4.14, die seit Anfang 2016 verwendet werden, lassen beim Upgrade auf Grund von Sicherheitsvorgaben von Seiten Ubiquiti Networks nur noch signierte Images zu, so dass es nicht mehr möglich ist, die Freifunk-Firmware direkt zu flashen. Der Accesspoint startet hier unter Umständen stets mit seiner Originalfirmware. Wir besorgen uns daher aus dem WWW die passende Firmware BZ.ar7240.v3.3.19.4015.160218.1458.bin2), die wir zum Downgrade der Firmware auf den UniFi-AP aufspielen müssen.

Für den späteren Upload der Downgrade-Firmware setzen wir uns nun noch einen symbolischen Link, damit wir später einfacher auf diese Datei zugreifen können.

 ln -s BZ.ar7240.v3.3.19.4015.160218.1458.bin firmware.bin

Bild: PoE-Injector/-Netzteil des UniFI AP

Nun verbinden wir zuerst einmal unseren Rechner mit dem mit LAN gekennzeichneten Netzwerkport des PoE-Injectors. Mit einem zweiten Netzwerkkabel verbinden wir unseren UniFi-AP mit der POE gekennzeichneten Buchse des PoE-Injectors.

Bevor wir nun das Stromkabel in die Steckdose stecken, versetzen wir den Accesspoint noch in den TFTP-Modus.

Bild: Photo der Unterseite des UniFI AP

Hierzu drücken wir mit einem kleinen Schraubendreher oder einer Büroklammer den kleinen Schalter, der sich hinter dem kleinen Loch links von der Netzwerkbuchse des UniFI-AP befindet und halten diese Taste gedrückt während wir das Stromkabel in die Steckdose stecken und
halten die Taste für ca. 15 Sekunden gedrückt,
bis der Leuchtring auf dem Gerät abwechselnd orange-grün-AUS blinkt.

Nun kopieren wir die gewünschte Firmwaredatei per TFTP auf den Accesspoint mit folgenden Befehl:

 tftp -v 192.168.1.20 -m binary -c put firmware.bin
mode set to octet
Connected to 192.168.1.20 (192.168.1.20), port 69
putting firmware.bin to 192.168.1.20:firmware.bin [octet]
Sent 5482561 bytes in 3.3 seconds [13225678 bit/s]

Der Accesspoint aktualisiert nun seine Firmware und führt automatisch einen Reboot durch. Sobald der Leuchtring des UniFI-AP orange leuchtet ist der SSH-Daemon gestartet und wartet auf Verbindungen.

Wir können uns nun per SSH mit dem Accesspoint verbinden. Zuvor ziehen wir aber das Netzwerkkabel von unserem Rechner ab und stecken es an den Netzwerkswitch/Einwahlrouter an, der dem Gerät dann eine IP-Adresse per DHCP zuweist. Im folgenden Konfigurationsbeispiel ist dies die Adresse 10.10.10.20. Beim Aufruf von ssh geben wir neben dieser IP-Adresse noch den Nutzer ubnt an und benutzen als Passwort ubnt.

 ssh ubnt@10.10.10.20
ubnt@10.10.10.20's password: 


BusyBox v1.11.2 (2016-02-18 14:59:41 PST) built-in shell (ash)
Enter 'help' for a list of built-in commands.

BZ.v3.3.19#

Anhand des Systempromptes BZ.v3.3.19 sehen wir, dass unser Accesspoint nun mit der Originalfirmware-Version v3.3.19 läuft. Die Verbindung trennen wir mit dem Befehl exit.

 exit

Download Freifunk-Firmware

Nun laden wir die aktuelle Freifunk-Firmware für den UniFI-AP auf unseren Rechner.

 wget https://firmware.ffmuc.net/stable/factory/gluon-ffmuc-v2020.3.1-ubiquiti-unifi-ap.bin

Freifunk-Firmware flashen

Beim Flashen der Freifunk-Firmware gibt es theoretisch zwei unterschiedliche Ansätze. Zum einen kann die Firmware mit Hilfe des Updaters fwupdate.real aufgespielt werden, bzw. zum anderen kann die Freifunkfirmware einfach via TFTP3) auf den Accesspoint transferiert werden.

Sollte der Versuch per fwupdate.real fehlschlagen, ist die sicherere Variante per tftp auf alle Fälle vorzuziehen. Ein Fehlschlag zeigt sich dadurch, dass während des Upgrades der Anzeigering dunkel wird und der Upgradeversuch zum Stillstand kommt:

Writing 'kernel         ' to /dev/mtd2(kernel         ) ...  [%100]
Writing 'rootfs         ' to /dev/mtd3(rootfs         ) ...  [%49 ]

fwupdate.real

Der Leuchtring des UniFI-AP leuchtet orange und zeigt uns damit an, dass er auf eine SSH-Verbindung wartet.

Wir verbinden uns nun per SSH mit dem Accesspoint, der von unserem lokalen Netzwerkswitch/Einwahlrouter eine IP-Adresse per DHCP zugewiesen bekommen hat. Im folgenden Konfigurationsbeispiel ist dies die Adresse 10.10.10.20.

Zunächst kopieren wir das zuvor heruntergeladenen Freifunk-Firmware-Image per SCP auf unseren UniFi-AP in das Verzeichnis /tmp/. Beim SCP-Befehl geben wir neben der IP-Adresse 10.10.10.20 noch den Nutzer ubnt an. Bei der Frage nach dem Passwort geben wir ebenfalls ubnt ein.

 scp gluon-ffmuc-v2020.3.1-ubiquiti-unifi-ap.bin ubnt@10.10.10.20:/tmp/
ubnt@10.0.10.107's password:
gluon-ffmuc-v2020.3.1-ubiquiti-unifi-ap.bin

Anschließend verbinden wir uns wieder per SSH mit dem Accesspoint.

 ssh ubnt@10.10.10.20

Dort wechseln wir in das Verzeichnis /tmp/

 cd /tmp

Mit dem Befehl fwupdate.real stoßen wir nun das Upgrade der Firmware an.

 fwupdate.real -m gluon-ffmuc-v2020.3.1-ubiquiti-unifi-ap.bin

Wurde das Kommando ‘fwupdate.real’ erfolgreich ausgeführt, wird das Ergebnis mit einem done bestätigt und der Accesspoint führt einen Reboot durch.

Sollte aber das Upgrade scheinbar abbrechen, dann müssen wir den TFTP-Weg beschreiten. Ein Scheitern wird unter anderem durch eine stehende Anzeige auf der Konsole wie z.B.

Writing 'kernel         ' to /dev/mtd2(kernel         ) ...  [%100]
Writing 'rootfs         ' to /dev/mtd3(rootfs         ) ...  [%49 ]

angezeigt und der Leuchtring auf dem Accesspoint wird auch dunkel. Das Gerät muss darauf hin erneut mit der Originalfirmware betankt und anschließend die Freifunk-Firmware mit Hilfe von TFTP aufgespielt werden.

TFTP

Die passende Freifunk-Firmware für unseren UniFI AP haben wir uns ja zuvor bereits heruntergeladen. Bevor wir nun einen symbolischen Link auf die gluon-ffmuc-v2020.3.1-ubiquiti-unifi-ap.bin Firmware-Datei setzen, löschen wir den vorhandenen symlink.

 rm firmware.bin

Anschließend setzen wir den passenden symbolischen Link, damit wir später einfacher auf diese Datei zugreifen können.

 ln -s gluon-ffmuc-v2020.3.1-ubiquiti-unifi-ap.bin firmware.bin

Nun verbinden wir zuerst einmal unseren Rechner mit dem mit LAN gekennzeichneten Netzwerkport des PoE-Injectors. Mit einem zweiten Netzwerkkabel verbinden wir nun unseren UniFi-AP mit der mit POE gekennzeichneten Buchse des PoE-Injectors.

Bevor wir nun das Stromkabel mit der Steckdose verbinden, versetzen wir den Accesspoint noch in den TFTP-Modus.

Bild: Photo der Unterseite des UniFI AP

Hierzu drücken wir mit einem kleinen Schraubendreher oder einer Büroklammer den kleinen Schalter, der sich hinter dem kleinen Loch links von der Netzwerkbuchse des UniFI-AP befindet und halten diese Taste gedrückt. Wenn wir das Stromkabel mit der Steckdose verbinden und
halten die Taste für ca. 15 Sekunden gedrückt,
bis der Leuchtring auf dem AP abwechselnd orange-grün-AUS blinkt!

Nun kopieren wir die Freifunk-Firmware per TFTP auf unseren AP mit folgenden Befehl:

 tftp -v 192.168.1.20 -m binary -c put firmware.bin
mode set to octet
Connected to 192.168.1.20 (192.168.1.20), port 69
putting firmware.bin to 192.168.1.20:firmware.bin [octet]
Sent 5482561 bytes in 3.3 seconds [13225678 bit/s]

Der Accesspoint aktualisiert nun die vorhandene Originalfirmware mit unserer Freifunk-Firmware und führt automatisch einen Reboot durch. Sobald der Leuchtring des UniFI-AP orange leuchtet, ist das Gerät mit der Freifunk-Firmware gestartet und die Router-Grundkonfiguration mit Hilfe der LuCi-WEB-GUI kann vorgenommen werden.

Zusätzliche Konfikurationsoptionen per SSH

Für die weitere Konfiguration verbinden wir uns nun mit unserem aktivierten UniFi-AP per SSH.

 ssh -i ~/.ssh/id_freifunk root@2001:608:a01:102:46d9:e7ff:fe75:d64d
BusyBox v1.28.4 () built-in shell (ash)

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 OpenWrt 18.06-SNAPSHOT, r7712+20-8de93ce745
 -----------------------------------------------------
root@Cheng:~#

Sendeleistung anpassen

Bei größeren Installationen, insbesondere bei Versorgung von größeren Arealen, Hallen oder auch Zelten kann es angebracht sein, mit Anpassung der Sendeleistung kleine Zellen für eine Art Lastverteilung einzurichten. So würde es nicht sinnvoll sein, z.B. in einem großen Festzelt allen vier Ecken einen Accesspoint aufzuhängen, der dann mit maximaler Sendeleistung das komplette Zelt „ausleuchtet“. Durch eine Verringerung der Sendeleistung können einzelne Funkzellen definiert werden. Damit wird die Anzahl gleichzeitig eingebuchter Clients pro Accesspoint reduziert und die Netzteilnehmer besser auf alle vier Accesspoint verteilt.

Bei der Veränderung der Sendeleistung ist in Deutschland zwingend darauf zu achten, dass nicht versehentlich die maximale abgestrahlte Sendeleistung (Sendeleistung plus ggf. vorhandene Antennen mit Richtwirkung) im Frequenzbereich 2,400 GHz - 2,4835 GHz von 100 mW überschritten wird!

Der für die Sendeleistung relevante Konfigurationsoption kann mit dem Befehl iwinfo radio0 txpower abgefragt werden.

 iwinfo radio0 txpower
   0 dBm (   1 mW)
   1 dBm (   1 mW)
   2 dBm (   1 mW)
   3 dBm (   1 mW)
   4 dBm (   2 mW)
   5 dBm (   3 mW)
   6 dBm (   3 mW)
   7 dBm (   5 mW)
   8 dBm (   6 mW)
   9 dBm (   7 mW)
  10 dBm (  10 mW)
  11 dBm (  12 mW)
  12 dBm (  15 mW)
  13 dBm (  19 mW)
  14 dBm (  25 mW)
  15 dBm (  31 mW)
  16 dBm (  39 mW)
  17 dBm (  50 mW)
  18 dBm (  63 mW)
  19 dBm (  79 mW)
* 20 dBm ( 100 mW)

Das gezeigte Beispiel zeigt die möglichen Einstellungen eines UniFi-AP, die der verwendete Chipsatz/Sendeeinheit anbietet. Der mit dem Stern gekennzeichnete Wert repräsentiert die aktuellen Einstellung. Da der Accesspoint über eine interne Richtantenne (Antennengewinn von 3dBi laut Datenblatt) verfügt, passen wir die Sendeleistung entsprechend an, bzw. verringern diese ggf. noch weiter, sofern die örtlichen Gegebenheiten dies erfordern (Thema Lastverteilung, s.o.).

 uci set wireless.radio0.txpower=17
 uci commit
 wifi

Eine erneute Abfrage zeigt nun den geänderten Wert:

 iwinfo radio0 txpower
   0 dBm (   1 mW)
   1 dBm (   1 mW)
   2 dBm (   1 mW)
   3 dBm (   1 mW)
   4 dBm (   2 mW)
   5 dBm (   3 mW)
   6 dBm (   3 mW)
   7 dBm (   5 mW)
   8 dBm (   6 mW)
   9 dBm (   7 mW)
  10 dBm (  10 mW)
  11 dBm (  12 mW)
  12 dBm (  15 mW)
  13 dBm (  19 mW)
  14 dBm (  25 mW)
  15 dBm (  31 mW)
  16 dBm (  39 mW)
* 17 dBm (  50 mW)
  18 dBm (  63 mW)
  19 dBm (  79 mW)
  20 dBm ( 100 mW)

LED-Status-Ring abschalten

Im Regelbetrieb leuchtet der LED-Status-Ring dauerhaft grün und zeigt somit an, dass alles in Ordnung ist. Weitere Informationen zu den möglichen Farbanzeigen finden sich auf der Originalseite bei UniFI.

Bei Bedarf kann man die Anzeige dieses LED-Leuchtrings auch manuell beeinflussen und z.B. abschalten. Manuell kann man die Farben grün und Orange mit folgendem Befehl ausschalten.

 echo 0 > /sys/class/leds/ubnt\:orange\:dome/brightness
 echo 0 > /sys/class/leds/ubnt\:green\:dome/brightness

Wiederum einschalten kann man die Funktion durch setzen des Zeichen 1.

 echo 1 > /sys/class/leds/ubnt\:orange\:dome/brightness
 echo 1 > /sys/class/leds/ubnt\:green\:dome/brightness

Damit wir das nun nicht jedesmal per Hand machen müssen, legen wir uns ein passenden ash-Script an.

 vim /etc/init.d/ledring
/etc/init.d/ledring
#!/bin/ash
echo 0 > /sys/class/leds/ubnt\:orange\:dome/brightness
echo 0 > /sys/class/leds/ubnt\:green\:dome/brightness

Anschließend setzen wir noch das x-Attribut der Datei, damit wir das Script einfach starten können.

 chmod +x /etc/init.d/ledring

Damit unser Script nun bei jedem Start des Accesspoints gestartet wird, setzen wir noch einen entsprechenden Symlink.

 ln -s /etc/init.d/ledring /etc/rc.d/S98ledring

Wichtig: Bei einem Update der Firmware muss das Script erneut angelegt werden!

zurück zur WIKI-Startseite

1) , 3)
Trivial File Transfer Protocol
2)
ggf. kann aus der Community ein versierter Nutzer mit einer Sicherheitskopie aushelfen.