Firmwareupdate Ubiqutiti Unifis
Rolle
Rolle at ff3l.net
So Jun 18 17:23:21 CEST 2017
Hallo zusammen,
ich habe neue Ubiquiti Unifis besorgt und wollte die gestern Abend mit
der neusten Freifunksoftware befüllen.
Problem: Die Geräte weigern sich strikt auch im TFTP Modus die Firmware
anzunehmen. Erzwingt man das Update auf der Konsole mit -f in der
Ubiquitisoftware hat man einen Brick. Der Bootloader geht aber noch es
gibt also einen Weg zurück indem man per TFTP die Herstellerfirmware
drüberbrät.
Das Problem war auch schnell eingegrenzt:
Ubiquiti hat eine neue Software drauf, Version V3.4.x. Diese weigert
sich strikt ein Softwareimage zu akzeptieren welches eine andere
Partitionsaufteilung hat wie das vorhandene Image. Es gibt keinen Weg
das direkt zu umgehen außer gewissen Sauereien wo das SPI-Flash direkt
neu gebraten wird (z.B. per JTAG). Dazu muss man das Gerät aber
aufschrauben was man ja bei Stückzahlen auch nicht unbedingt will.
Es gibt aber einen wenn auch umständlicheren Weg das zu beheben.
Benötigt werden:
die zu bratende Unifi (logisch)
ein PC mit Netzwerkanschluss (in meinem Fall eine Windows-Maschine,
Linux geht aber auch)
Bei Windowsmaschinen ein SCP-Programm (z.B. Winscp) und Putty für
SSH-Verbindungen.
Die Unifi an ihr Netzteil hängen und warten bis diese aufgehört hat zu
blinken.
PC direkt mit der Unifi verbinden.
Die Unifi gibt sich die IP 192.168.1.20 wenn sie keine per DHCP
zugewiesen bekommt. Deshalb das Ding besser nicht ans Heimnetz hängen
wärend der Flashsache sonst muss man die Suchen.
SCP Verbindung herstellen zur Unifi, User & Pass sind "ubnt"
Per SCP in den Ordner /tmp die Freifunk-Firmware 2016.2.5+001
Rüberschieben (Das Factoryimage!)
Image auf der Unifi umbenennen dieses muss "fwupdate.bin" heissen sonst
schlägt das Flashen fehl.
SCP verbindung beenden
SSH-Verbindung aufbauen, in den ordner /tmp wechseln (cd /tmp)
Dort folgenden Befehl eingeben: "nohup syswrapper.sh upgrade2" und Enter
drücken.
Die Konsolenverbindung bricht ein paar Sekunden später ab und die Unifi
blinkt zweifarbig wie wenn sie im TFTP Mode wäre. Keinesfalls den
Stecker ziehen sonst wirds eklig jetzt wird geflasht!
Nach ca. 2 Minuten startet die Unifi neu im Freifunk-Konfigmode und
blinkt langsam grün.
Jetzt kann unter 192.168.1.1 die normale Konfigoberfläche aufgerufen
werden. Hier unter Firmwareupdate die neue 2017.1 als sysupgrade
(keinesfalls die Factory sonst Brick!) drüberbraten die David gebacken
hat. Haken bei Konfiguration behalten entfernen so das diese zurücksetzt
wird.
Nach dem Neustart ist die Unifi fertig und bereit zur Konfiguration.
Der hier beschriebene Weg ist zwar recht Zeitaufwendig hat aber den
Vorteil das die "alte" Firmware problemlos mit den bestehenden
Partitionsgrößen korreliert und daher ohne das öffnen des Gerätes
geflasht werden kann da der Bootloader der Unifi diese akzeptiert.
Wird dann per sysupgrade die neue Firmware (2017.1) geflasht so wird die
Partitionsgröße von der Freifunkfirmware erweitert damit der größere
Kernel reinpasst (und das auch so in den Konfigblock geschrieben). Damit
gibt es keinen Brick und der Bootloader funkt nicht dazwischen da dieser
sich nach den Daten im Konfigblock richtet. Der Bootloader von Ubiquiti
weigert sich nur den Konfigblock zu beschreiben da dort auch ein paar
Daten drinstehen die für die CFP (Counterfeit Protection) gebraucht
werden. Wenn die Kaputt gehen startet die Unifi nicht mehr dann hilft
nur ein selbstgebackenes UBoot da reinzuschreiben was allerdings ein
JTAG oder ein SPI-Modul voraussetzt um das Flash direkt zu beschreiben.
Der "Bug" das dies nicht direkt geht liegt nicht an der neuen Firmware
die David gebacken hat, das ist dem unflexiblen Bootloader (ein
kastriertes Redboot) von Ubiquiti zu verdanken das mit geänderten
Partitionsgrößen während des Updates nicht klarkommt.
Allerdings solange Ubiqiti die Geräte nicht komplett Lockt (also so das
nur noch das JTAG hilft) solls mir recht sein auch wenn die Lösung etwas
umständlich ist.
Betroffen sind nur Gerät mit Softwarestand 3.4.x oder höher. Alles was
darunter ist kann wie bisher mit der Anleitung von Openwrt auf der
Konsole gebraten werden.
Grüße
Rolle
Mehr Informationen über die Mailingliste ff3l