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