freifunk:unifiap

UniFi UAP Router flashen

Bild: Freifunk München Logo

Haben wir einen UniFi UAP Router bei einem Händler bzw. auf einem der (online) Flohmärkte 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 wie auch gehasst. Geliebt wegen der guten Performance und Robustheit - gehasst da diese doch zuweilen etwas mehr Stress beim Flashen der Firmware bereiten als gängige Plasterouter für den Hausgebrauch.
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 Access-Points ist zwingend darauf zu achten, dass diese am Besten die Varianten Version 1 mit dem Chipsatz Atheros AR7240 verwendet wird, da diese am besten unterstützt wird. Zum Flashen der Firmware steht und 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 Access-Point kopieren.

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

Der UniFi-AP hat per Default die IP-Adresse 192.168.1.20. Damit sich unser Rechner nun 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 fest zuweisen:

  • IP-Adresse : 192.168.1.100
  • Netzmaske : /24

Dies erledigen wir mit dem Netzwerk-Management-Tool unseres Vertrauens, wie z.B. NetworkManager-GUI.
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 mt seinem zugehörigen Passwort ubnt.

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

Aktuelle Firmware-Versionen, die seit der Version 3.4.14, die seit Anfang 2016 verwendet werden, lassen beim Upgrade aus Sicherheitsvorgaben von Seiten Ubiquiti Networks nur noch signierte Images zu, so dass es nun nicht mehr möglich ist, die Freifunk-Firmware direkt so 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 ggf. zum Downgrade der Firmware auf den UniFi AP aufspielen müssen.

Für den späteren Upload der Downgrade-Firmware setzen wir uns nur 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 zu erst einmal unseren Rechner mit dem LAN gekennzeichneten Netzwerkport des PoE-Injectors. Mit einem zweiten Netzwerkkabel verbinden wir nun unseren UniFi AP mit der 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 gewünschte 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 AP aktualisiert nun seine Firmware und führt automatisch einen Reboot durch. Sobald der Leuchtring des UniFI AP orange leuchtet ist der SSH-Daemon des APs gestartet und wartet auf Verbindungen und seine Konfiguration.

Wir können uns nun per SSH mit dem AP verbinden, zuvor stecken wir aber das Netzwerkkabel von unserem Rechner ab und an den Netzwerkswitch/Einwahlrouter an, der dem AP dann eine IP-Adresse per DHCP zuweisen wird. Im folgenden Konfigurationsbeispiel ist dies z.B. die Adresse 10.10.10.20. Bei dem SSH-Befehl geben wir neben dieser IP-Adresse 10.10.10.20 auch noch den Nutzer ubnt an. Bei der Farge nach dem Passwort geben wir ebenfalls ubnt ein.

 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#

An Hand des Systempromptes BZ.v3.3.19 sehen wir nun, dass unser Access-Point nunmehr mit der Original-Firmware-Version v3.3.19 läuft. Die Verbindung trennen wir bei Bedarf mit dem Befehl exit.

 exit

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

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

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

Sollte der Versuch per fwupdate.real fehlschlagen, dann ist die sichere Variante per tftp auf alle Fälle vorzuziehen. Ein Fehlschlag zeigt sich, während des Upgrades der Anzeigering dunkel wird und der Upgardeversuch stehen bleibt:

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

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 AP, der von unserem lokalen Netzwerkswitch/Einwahlrouter eine IP-Adresse per DHCP zugewiesen bekommen hat. Im folgenden Konfigurationsbeispiel ist dies z.B. 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/. Bei dem SCP-Befehl geben wir neben dieser IP-Adresse 10.10.10.20 auch noch den Nutzer ubnt an. Bei der Frage nach dem Passwort geben wir ebenfalls ubnt ein.

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

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

 ssh ubnt@10.10.10.20

Dort wechseln wir in das Verzeichnis /tmp/

 cd /tmp

Mit dem Befehl fwupdate.real stoßen wir nun den Update der Firmware an.

 fwupdate.real -m gluon-ffmuc-v2019.0.5-ubiquiti-unifi-ap.bin

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

Sollte aber der Upgrade scheinbar abbrechen, dann müssen wir den TFTP-Weg beschreiten. Das Scheitern wird unter anderem durch eine stehene 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 AP wird dabei auch dunkel. Der AP muss in Folge erneut mit der Originalfirmware betankt und anschließend die Freifunk-Firmware mit Hilfe von TFTP aufgespielt werden!

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

 rm firmware.bin

Anschließend setzen wir den passenden symbolischen link, damit wir nachfolgend einfacher auf diese Datei zugreifen können.

 ln -s gluon-ffmuc-v2019.0.5-ubiquiti-unifi-ap.bin firmware.bin

Nun Verbinden wir zu erst einmal unseren Rechner mit dem LAN gekennzeichneten Netzwerkport des PoE-Injectors. Mit einem zweiten Netzwerkkabel verbinden wir nun unseren UniFi AP mit der 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 AP aktualisiert nun die vorhandenen Originalfirmware gegen unsere Freifunk-Firmware und führt automatisch einen Reboot durch. Sobald der Leuchtring des UniFI AP orange leuchtet ist der AP mit der Freifunk-Firmware gestartet und die Router-Grundkonfiguration mit Hilfe der LuCi-WEB-GUI kann entsprechend vorgenommen werden.

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:~#

Bei größeren Installationen, insbesondere bei Versorgung von größeren Arealen, Hallen oder auch Zelten kann es an gebracht sein, mit Hilfe der Sendeleistung einzelner Zellen eine gewisse Art Lastverteilung vorzunehmen. So würde es keinem helfen z.B. in einem großen Festzelt in jeder der vier Ecken einen Router aufzustellen, der dann das komplette Zelt überstrahlt. Durch Verringerung der Sendeleistung können einzelne Funkzellen verkleinert werden und somit die Anzahl gleichzeitig eingebuchter Clients besser auf alle vier Sender verteilt werden.

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 nun 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 nun die möglichen Einstellungen eines UniFi AP, die der verwendete Chipsatz/Sendeeinheit technisch mitbringt. der mit dem Stern gekennzeichnete Wert repräsentiert die aktuellen Einstellungen. Da der AP ü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 Gegebenheit dies erfordert.

 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)

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 jedes mal 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

Anschliessend setzen wir noch die x-Rechte dieses Scripts damit wir dieses einfach starten können.

 chmod +x /etc/init.d/ledring

Damit unser Script nun bei jedem Start des APs 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!


1) , 3)
Trivial File Transfer Protocol
2)
ggf. kann aus der Community ein versierter Nutzer mit einer Sicherheitskopie aushelfen.
Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
  • freifunk/unifiap.txt
  • Zuletzt geändert: 05.03.2023 10:37.
  • von django