Ubiquiti UniFi UAP-LR Firmware (v4.x) flashen

Hallo zusammen!

Ich habe hier einen Ubiquiti UAP-LR (nicht AC-LR) in der Version v1.
Da der End-Of-Life für den 01.03.2021 verkündet wurde, möchte ich der Hardware ein zweites Leben ermöglichen. Immerhin stehen da ein AR7240 mit 390MHz, 64MB RAM und 8 MB Flash zur Verfügung. Ich weiß, nicht die Welt, aber immerhin :slight_smile:

Die aktuelle Original-Firmware ist v4.3.21.11325 und da beginnt bei mir nun das Problem… laut Recherche wurden von v3.x auf v4.x die MTD-Partitionen geändert, somit lassen sich die alten Anleitungen für die Freifunk-Firmware im Netz nicht mehr eins zu eins umsetzen.

Den letzten Versuch, den ich hier unternommen habe, war es OpenWrt zu installieren, um im zweiten Schritt auf die Freifunk-Firmware upzugraden.
Hierfür bin ich folgender Anleitung nachgegangen: [OpenWrt Wiki] Ubiquiti UniFi AP and AP-LR

#sudo apt-get install minicom
sudo minicom -D /dev/ttyUSB0 -b 115200

‚ESC‘, um den Reboot durch U-BOOT anzuhalten

ar7240> tftpboot 0x80000000 openwrt-19.07.4-ar71xx-generic-ubnt-unifi-squashfs-factory.bin
Using eth0 device
TFTP from server 192.168.1.254; our IP address is 192.168.1.20
Filename 'openwrt-19.07.4-ar71xx-generic-ubnt-unifi-squashfs-factory.bin'.
Load address: 0x80000000
Loading: #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         ########################################
done
Bytes transferred = 4194716 (40019c hex)

ar7240> erase 0x9f050000 +0x00760000
....................................................................... done
Erased 118 sectors

ar7240> cp.b 0x80000000 0x9f050000 0x40019c
Copy to Flash... write addr: 9f050000
done

ar7240> reset
Resetting...

U-Boot unifi-v1.6.17.296-g1af7670c (Apr 22 2019 - 11:05:55)

DRAM:  64 MB
Base:0x80000000, Top:0x84000000, Res logbuf:0xa3ff3800, log_magic:0x0448acc0 kseg: 0xa0000000
Flash:  8 MB
PCIe WLAN Module found (tries: 1). 
Net:   eth0, eth1
Board: Copyright Ubiquiti Networks Inc. 2014
Hit any key to stop autoboot:  0 
Board: Ubiquiti Networks AR7241 board (e512-17.0101.002e)
 0. Name = u-boot, offset = 0, start_addr=9f000000, size=262144,start_sector=0, end_sector=3 
 1. Name = u-boot-env, offset = 40000, start_addr=9f040000, size=65536,start_sector=4, end_sector=4 
 2. Name = kernel, offset = 50000, start_addr=9f050000, size=7733248,start_sector=5, end_sector=122 
 3. Name = cfg, offset = 7b0000, start_addr=9f7b0000, size=262144,start_sector=123, end_sector=126 
 4. Name = EEPROM, offset = 7f0000, start_addr=9f7f0000, size=65536,start_sector=127, end_sector=127 
UBNT application initialized 
## Booting image at 9f050000 ...
Bad Magic Number
ar7240> 

Die ‚Bad Magic Number‘ scheint hier wohl das Problem zu sein :wink:
Danach ist der UAP gebrickt! :frowning:

Hier noch einige Zusatzinfos:
ar7240> setenv bootargs root=31:03 rootfstype=squashfs init=/init console=ttyS0,115200
ar7240> printenv
bootcmd=run ubntappinit ubntboot
bootdelay=1
ipaddr=192.168.1.20
serverip=192.168.1.254
ubntappinit=go ${ubntaddr} uappinit;go ${ubntaddr} ureset_button;urescue;go ${ubntaddr} uwrite
mtdparts=mtdparts=ar7240-nor0:256k(u-boot),64k(u-boot-env),7552k(kernel),256k(cfg),64k(EEPROM)
ubntboot=bootm 0x9f050000
stdin=serial
stdout=serial
stderr=serial
ethact=eth0
ubntaddr=80200020
led1=1
led2=0
appinitdone=true
bootargs=root=31:03 rootfstype=squashfs init=/init console=ttyS0,115200

Environment size: 478/65532 bytes
ar7240> boot
Board: Ubiquiti Networks AR7241 board (e512-17.0101.002e)
 0. Name = u-boot, offset = 0, start_addr=9f000000, size=262144,start_sector=0, end_sector=3 
 1. Name = u-boot-env, offset = 40000, start_addr=9f040000, size=65536,start_sector=4, end_sector=4 
 2. Name = kernel, offset = 50000, start_addr=9f050000, size=7733248,start_sector=5, end_sector=122 
 3. Name = cfg, offset = 7b0000, start_addr=9f7b0000, size=262144,start_sector=123, end_sector=126 
 4. Name = EEPROM, offset = 7f0000, start_addr=9f7f0000, size=65536,start_sector=127, end_sector=127 
UBNT application initialized 
## Booting image at 9f050000 ...
Bad Magic Number
ar7240> iminfo

## Checking Image at 81000000 ...
   Bad Magic Number
ar7240> md 0x9f150000
9f150000: abb8ec90 5a4f0733 748c5ddd 16bad66e    ....ZO.3t.]....n
9f150010: 8a159cea c50a2425 9b2a7c38 2d0110ec    ......$%.*|8-...
9f150020: ff3e0efa a123cd71 99351016 4d246b22    .>...#.q.5..M$k"
9f150030: 8f43efbf aa72bed0 d7c2ae5e 43192091    .C...r.....^C. .
9f150040: 43eb5e7c 171eaa32 6e1f6697 5a8acb63    C.^|...2n.f.Z..c
9f150050: 9938a6e2 043b1efc a35fb99e 18718029    .8...;..._...q.)
9f150060: ad9629c7 2d88fbe3 0fa97491 4d532f34    ..).-.....t.MS/4
9f150070: 6862ad9e 29088ea2 328978e4 01b89eb9    hb..)...2.x.....
9f150080: adf574e7 ae0514a9 e9434d44 57b847e2    ..t......CMDW.G.
9f150090: 098516c1 811abf12 5766d56c e70717bc    ........Wf.l....
9f1500a0: f07e824f 66a42c12 1394e6f0 1b9a0150    .~.Of.,........P
9f1500b0: eda249d1 1559a880 39e110d5 93e8424d    ..I..Y..9.....BM
9f1500c0: 05365cb7 ed851a1f 001720c2 2faf5efc    .6\....... ./.^.
9f1500d0: c6c58391 1892b5f7 db579898 e0ae0ddd    .........W......
9f1500e0: f9a36282 19eb16ce 4177d317 ebd5efd3    ..b.....Aw......
9f1500f0: de59687b b156d9e1 5b95b3e5 8449287a    .Yh{.V..[....I(z

Mittlerweile bin ich schon richtig gut im Un-bricken :smiley:
Vollständigkeitshalber hier die Anleitung, die jedesmal funktionierte:

  1. Reset-Button mit Büroklammer drücken und POE einstecken. ~25 Sekunden Reset-Button drücken bis LED-Intervall orange, grün, aus erscheint.
  2. Ins Verzeichnis mit der Firmware wechseln z.B. 'cd ~/Downloads
  3. TFTP starten → user@pc:~/Downloads$ tftp
  4. Folgende Zeilen nacheinander eingeben. Nach dem ‚put‘ der Firmware startet der UAP automatisch neu.
    tftp> connect 192.168.1.20
    tftp> binary
    tftp> rexmt 1
    tftp> timeout 60
    tftp> put BZ.ar7240.v4.3.21.11325.200922.1739.bin firmware.bin
    Sent 7254444 bytes in 2.4 seconds
    tftp>
  5. LAN anschließen und der UnFi Network Controller erkennt das Device.

Was ich noch probiert habe, war es eine ältere Original-Firmware (v3.x) zu flashen, quasi als Downgrade → Folge: gebrickt!

Falls noch jemand Ideen oder Tipps für mich hätte, wäre ich dankbar.
Also das finale Ziel soll es sein, die Freifunk-Firmware drauf zu bekommen.

Schöne Grüße,
K1LLUM1N471

Hallo K1LLUM1N471!

Respekt, was Du alles mit Deinem UAP-LR anstellst. Ich versuche gerade einen UAP-Outdoor 5 mit einem Freifunk-Image zu beglücken, was sich allerdings als schwieriger erweist als erhofft. Ich hatte hierzu schon in einem anderen Thread geschrieben, der sich direkt auf den Outdoor 5 bezieht (https://forum.freifunk.net/t/unifi-ap-outdoor-v-4-08-freifunk/21696/15).

Nun habe ich Deinen Beitrag gefunden und frage mich, ob wir beide das gleiche Problem haben, da mein UAP-Outdoor 5 und Dein UAP-LR die gleiche Hardware haben und von Ubiquiti auch mit den gleichen Images versorgt werden.

Auch bei mir hat das Flashen mit einer älteren Unifi-Firmware nicht geklappt, wobei ich das Flashen durch das von Ubiquiti mitgelieferte Tool probiert habe (siehe verlinktes Posting). Ich konnte allerdings bis auf Version 4.0.42 downgraden, mehr geht nicht - schon bei der 4.0.15 erhalte ich wieder den beschriebenen Fehler.

Daher meine Frage an Dich, falls Du mal Langeweile haben solltest: funktioniert bei Dir ebenfalls der Downgrade bis 4.0.42? Falls ja hätte ich eine Erklärung für meine kryptische Fehlermeldung „Invalid Image Layout!“.

Dein Posting hat mich auf jeden Fall stark motiviert das Gehäuse meines Outdoor 5 mal zu öffnen, wobei ich keine Ahnung habe, wie das geht. Aber falls der auch einen seriellen Port hat, würde es mich echt reizen mich da mal dran zu hängen. Und letztlich kann ich mit meinen Geräten eh nicht mehr viel anfangen, wenn das Flashen des Freifunk-Images nicht klappen sollte. :wink:

Besten Dank nochmal für Dein tolles Posting und viele Grüße, Matthias

Factory image per TFTP hat für mich kürzlich bei einem UAP (grüne LED; 2,4 GHz only) funktioniert.

Wenn das nicht geht würde ich tftpboot vorschlagen und dann aus dem laufenden System sysupgraden. Das Gehäuse ist mit TORX verschraubt und lässt sich super einfach öffnen, die Pin-Header waren bei mir auch schon eingelötet.

Hallo Hexa!

Bei meinem UAP-Outdoor 5 sehe ich leider keine Schrauben, aber dass Du in der Lage warst ein älteres Image zu flashen, stimmt mich optimistisch. Dann werde ich mich am Wochenende mal daran setzen…

Gruss, Matthias

Nabend,
schön zu sehen, dass es noch weitere Interessenten für das Thema/Problem gibt :slight_smile:

Hab gerade ein Downgrade von 4.3.21.11325 auf 4.0.42.10433 per Unifi Controller unter Angabe der Firmware-URL erfolgreich geschafft.
Bei 4.0.15 und dadrunter schlägt der Downgrade leider immer wieder fehl:
„AP Upgrade fehlgeschlagen: Firmware-Prüfung fehlgeschlagen (Fehler: 130)“

In dem Thread (https://community.ui.com/questions/UAP-LR-Wont-Downgrade/6af7b43c-a0ed-4b40-a4d0-1170d47ac13f) schreibt auch jemand: „[…] that won’t be possible once you passed 4.0.17“
Die Frage ist jetzt, woran es liegt und ob es rückgängig zu machen ist… :wink:

Schöne Grüße,
K1LLUM1N471

Hallo!
Auch in den offiziellen Release Notes steht, dass ein Downgrade von 4.0.17 ältere Versionen nicht möglich ist:

Known Issues:

  • UAP, UAP-LR, UAP-IW, UAP-OD and UAP-OD5 cannot be downgraded from firmware 4.0.17+ to an earlier release.

Das Downgrade auf die 4.0.17 hat hier auch problemlos geklappt, aber von dort aus geht es nicht weiter zurück. Ich hatte gehofft, dass das Downgrade aufgrund der Bordmittel fehlschlägt, weil sich die Partitionen z.B. geändert haben.

Ich habe leider recht wenig Ahnung von den Mechanismen hinter uboot. Ich hoffe eher darauf, dass nach einem Flashen alles funktioniert. :slight_smile:

Wie bist Du eigentlich auf die Adressen gekommen, an die Du den Kernel geladen hast?

Gruss, Matthias

Hey, vielen Dank für die tolle Kurzanleitung zum debricken.

Habe hier einen Unifi AP LR und stehe vor dem selben Problem, wenn ich versuche Openwrt aufzuspielen.
„Bad Magic Number“

Habe ein wenig nachgeforscht und bin hier auf diesen Beitrag gestoßen: Playing with the flash through serial U-Boot on UBNT Bullet M2 HP XW - #3 by chache - Installing and Using OpenWrt - OpenWrt Forum

In dem Beitrag geht es darum, dass der Autor auch stets „Bad Magic Number“ zurückbekommen hat.
Daraufhin hätte er die *.bin Datei gekürzt (truncate) bzw. mit einem anderen Offset im RAM ausführen lassen und es hat funktioniert.

I always find I have to truncate the first 0x144 bytes so that the image starts with the correct magic number, but them Uboot always says that the checksum is bad. If I don’t truncate then it just complains about the magic number.

Wenn ich seinen Weg über den Offset gehe und versuche das image iḿ Ram auszuführen scheint es zu gehen. Nur der CRC Wert ist nicht mehr korrekt.

Das gleiche Problem hat auch der Autor. Er hat daraufhin anscheinend ein Openwrt Image selbst kompiliert, bzw. eine kompilierte Version angepasst.

Mir scheint, als wäre unser Fehler sehr ähnlich, wenn nicht sogar der gleiche, wie bei dem Autor.

ar7240>tftpboot 0x80000000 openwrt-19.07.6-ar71xx-generic-ubnt-unifi-squashfs-factory.bin
Unknown command 'ftpboot' - try 'help'
ar7240> tftpboot 0x80000000 openwrt-19.07.6-ar71xx-generic-ubnt-unifi-squashfs-factory.bin
Using eth0 device
TFTP from server 192.168.1.254; our IP address is 192.168.1.20
Filename 'openwrt-19.07.6-ar71xx-generic-ubnt-unifi-squashfs-factory.bin'.
Load address: 0x80000000
Loading: #################################################################
     #################################################################
     #################################################################
     #################################################################
     #################################################################
     #################################################################
     #################################################################
     #################################################################
     #################################################################
     #################################################################
     #################################################################
     #################################################################
     ########################################
done
Bytes transferred = 4194716 (40019c hex)


ar7240> erase 0x9f050000 +0x00760000
...................................................................................................................... done
Erased 118 sectors


ar7240> cp.b 0x80000000 0x9f050000 0x40019c
Copy to Flash... write addr: 9f050000
done

Hier ohne Offset ( das selbe Ergebnis hätte man auch durch einen Reboot erhalten=

ar7240> iminfo 0x80000000

## Checking Image at 80000000 ...
   Bad Magic Number

Hier mit Offset 0x144

ar7240> iminfo 0x80000144

## Checking Image at 80000144 ...
   Image Name:   MIPS OpenWrt Linux-4.14.215
   Created:      2021-01-19  13:10:02 UTC
   Image Type:   MIPS Linux Kernel Image (lzma compressed)
   Data Size:    1589363 Bytes =  1.5 MB
   Load Address: 80060000
   Entry Point:  80060000
   Verifying Checksum ...    Bad Data CRC