Ubiquiti Unifi AC/Flash-Anleitung

Aus wiki.freifunk.net
Zur Navigation springenZur Suche springen

Die Installation unterscheidet sich maßgeblich von anderen Geräten, da die Geräte über kein Web-Interface verfügen und zwei Flash-Partitionen nutzen. Für die Installation wird eine SSH- und SCP-Verbindung genutzt.

Diese Anleitung nutzt dd zum Kopieren der Firmware und kommt ohne mtd aus, sie benötigt daher kein Firmware-Downgrade.


Ablauf

Zur Installation wird das Gerät mit einem Rechner mit fester IP-Adresse (z.B. 192.168.1.100) direkt verbunden. Das Gerät ist dann theoretisch über SSH und SCP unter der IP-Adresse 192.168.1.20 erreichbar. Das Gerät muss dabei über den MAIN-Port angeschlossen werden.

Sollte das nicht funktionieren, kann das Gerät über den Reset-Knopf zurückgesetzt werden [1]: Der Knopf wird für 10 Sekunden gedrückt und dann losgelassen, das Gerät startet danach selbstständig neu und stellt die Werkseinstellungen wieder her. Keinesfalls darf das Gerät dabei vom Strom getrennt werden. Der Prozess ist fertig, sobald die weiße LED wieder dauerhaft leuchtet.

Zuerst wird eine Verbindung zum Gerät unter 192.168.1.20 hergestellt, mit Benutzername: ubnt und Passwort: ubnt.

Acm putty new.jpg

In der Kommandozeile wird die installierte Firmware-Version direkt vor dem Eingabecursor angezeigt (z.B. BZ.v3.7.58, nicht BusyBox).

Die Geräte werden mit der sysupgrade-Version geflasht (siehe Tabelle), diese kannst Du bei deiner lokalen Freifunk-Community herunterladen.

Die neue Firmware wird per SCP auf das Gerät kopiert, zum Beispiel nach

/tmp/sysupgrade.bin

Über das Kommando cat /proc/mtd lassen wir uns dazu die Liste der Bereiche des Flash-Speichers ausgeben, dies sieht etwa wie folgt aus:

BZ.v3.7.58# cat /proc/mtd 
dev:    size   erasesize  name
mtd0: 00060000 00010000 "u-boot"
mtd1: 00010000 00010000 "u-boot-env"
mtd2: 00790000 00010000 "kernel0"
mtd3: 00790000 00010000 "kernel1"
mtd4: 00020000 00010000 "bs"
mtd5: 00040000 00010000 "cfg"
mtd6: 00010000 00010000 "EEPROM"

Wichtig ist hier:

  • 2 - kernel0 (dorthin wird die Firmware installiert)
  • 3 - kernel1 (sollte invalidiert werden)
  • 4 - bs (enthält Auswahl für kernel0 bzw. kernel1)

Es sind nun folgende Schritte auszuführen:

  1. Schreiben der neuen Firmware nach kernel0
  2. Optional: Schreiben der neuen Firmware nach kernel1 (alternativ: Löschen von kernel1)
  3. Einstellen, dass von der in kernel0 installierten Firmware gebootet wird
  4. Reboot


1. Schreiben der neuen Firmware nach kernel0

Die Firmware muss nun zuerst nach kernel0 geschrieben werden. Das dafür notwendige Zielgerät ist unter /dev/mtdblockX zu finden. In unserem Fall ist X 2:

dd if=/tmp/sysupgrade.bin of=/dev/mtdblock2


2. Optional: Schreiben der neuen Firmware nach kernel1 (alternativ: Löschen von kernel1)

Die Firmware kann nun ebenfalls nach kernel1 geschrieben werden. Das dafür notwendige Zielgerät ist unter /dev/mtdblockX zu finden. In unserem Fall ist X 3:

dd if=/tmp/sysupgrade.bin of=/dev/mtdblock3

Alternativ kann kernel1 (/dev/mtdblock3) auch invalidiert werden. Das dient als erster Schritt (neben dem Anpassen von BS) um zu verhindern, dass die falsche Installation beim Starten geladen wird. Wir nutzen dazu einfach /dev/zero um es mit Nullen zu überschreiben:

dd if=/dev/zero of=/dev/mtdblock3


3. Einstellen, dass von der in kernel0 installierten Firmware gebootet wird

Nun befindet sich die Firmware in kernel0. Es muss nun eingestellt werden, dass von kernel0 gebootet wird (sonst wird mit viel Magie zwischen 0 und 1 entschieden), dazu wird eine Null in BS (Bootselect) geschrieben.

"bs" befindet sich hier in mtd4. Über dd schreiben wir eine Null in "bs":

dd if=/dev/zero bs=1 count=1 of=/dev/mtdblock4


4. Reboot

Über das Kommando

reboot

starten wir das Gerät jetzt neu. Die SSH-Verbindung bricht ab, das Gerät blinkt erst etwas schneller und irgendwann langsamer. Die Freifunk-Firmware ist installiert und der Router im Konfig-Modus erreichbar.


Wichtiger Hinweis für UAP-AC-M-PRO

Beim UAP-AC-M-PRO muss das Netzwerkkabel an den SECONDARY-Port angeschlossen werden, sonst kann keine WAN-Verbindung hergestellt werden. Ebenfalls ist der Konfig-Modus nur über den SECONDARY-Port erreichbar. Zu beachten ist ebenfalls, dass der SECONDARY-Port eine andere MAC-Adresse als der MAIN-Port verwendet.


Einzelnachweise und weitere Links


Beispiel für vollständigen Ablauf

Das komplette oben beschriebene Vorgehen ist nachfolgend am Beispiel eines UAP-AC-M-PRO mit Original-Firmware 4.3.21 illustriert. Installiert wird in diesem Beispiel die Firmware vH21 von Freifunk Hannover. Im (optionalen) Schritt 3 wurde im Beispiel die neue Firmware auch in den Bereich kernel1 geschrieben:

login as: ubnt
ubnt@192.168.1.20's password:


BusyBox v1.25.1 () built-in shell (ash)


  ___ ___      .__________.__
 |   |   |____ |__\_  ____/__|
 |   |   /    \|  ||  __) |  |   (c) 2010-2020
 |   |  |   |  \  ||  \   |  |   Ubiquiti Networks, Inc.
 |______|___|  /__||__/   |__|
            |_/                  https://www.ui.com/

      Welcome to UniFi UAP-AC-Mesh-Pro!

UBNT-BZ.v4.3.21#
UBNT-BZ.v4.3.21#
UBNT-BZ.v4.3.21# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00060000 00010000 "u-boot"
mtd1: 00010000 00010000 "u-boot-env"
mtd2: 00790000 00010000 "kernel0"
mtd3: 00790000 00010000 "kernel1"
mtd4: 00020000 00010000 "bs"
mtd5: 00040000 00010000 "cfg"
mtd6: 00010000 00010000 "EEPROM"
UBNT-BZ.v4.3.21# ls /dev
console             mem                 mtd2ro              mtd6                mtdblock5           pts                 ubnt_sta_ht
cpu_dma_latency     memory_bandwidth    mtd3                mtd6ro              mtdblock6           random              urandom
full                mtd0                mtd3ro              mtdblock0           network_latency     sflash              watchdog
input               mtd0ro              mtd4                mtdblock1           network_throughput  shm                 zero
kmem                mtd1                mtd4ro              mtdblock2           null                snd
kmsg                mtd1ro              mtd5                mtdblock3           port                tty
log                 mtd2                mtd5ro              mtdblock4           ptmx                ttyS0
UBNT-BZ.v4.3.21# ls /tmp
TZ                etc               log               resolv.conf.auto  shm               sysinit.txt       utermd
default.cfg       lib               rc.txt            run               state             system.cfg
dropbear          lock              resolv.conf       running.cfg       sysinfo           tmp
UBNT-BZ.v4.3.21# dd if=/tmp/gluon-ffh-vH21-ubiquiti-unifi-ac-mesh-pro-sysupgrade.bin of=/dev/mtdblock2
9088+1 records in
9088+1 records out
UBNT-BZ.v4.3.21# dd if=/tmp/gluon-ffh-vH21-ubiquiti-unifi-ac-mesh-pro-sysupgrade.bin of=/dev/mtdblock3
9088+1 records in
9088+1 records out
UBNT-BZ.v4.3.21# dd if=/dev/zero bs=1 count=1 of=/dev/mtd4
1+0 records in
1+0 records out
UBNT-BZ.v4.3.21# reboot