SCP/TFTP Downgrade bei Unifi AC ab Firmware 4.3.x geht nicht mehr?

Liebe Mitlesenden,

seit Jahren setzen wir in unserer Community Ubiquiti AP AC Pro Geräte ein. Heute nun habe ich erstmals Geräte gehabt, deren Firmware sich nicht per SCP auf die bekannte 3.7.58 Firmware runterpatchen.

Im OpenWRT Forum hat auch jemand das Problem bemerkt: Ubiquiti UAP-AC-Pro-Gen2 fails to install - Installing and Using OpenWrt - OpenWrt Forum

Das Problem ist bisher hier noch nicht aufgefallen, da neu angeschaffte Accesspoints offenbar stets mit einer 4.0.x’er Firmware ausgeliefert wurden, bei der Downgrade noch ging.

Hat jemand eine Idee, was man hier noch machen könnte?

Schönen Gruß,
Cpt. Andi

Ich gehe davon aus, dass Du diese Anleitung schon durchgearbeitet hast.
(Die formuliert im Grunde nurnaus, was sehr kryptisch im Wiki steht zu MTD-tool und dd direkt auf die flash-partitionen)

Will sagen: Es geht noch. Aber vermutlich nicht so wie du es versucht hast.

Der Thread Titel wäre hilfreicher, wenn du schreiben könntest, von welcher FW du kommst. bzw wo es klemmt.

„Geht nicht mehr“ kann ich beantworten mit „geht nach wie vor“

Besten Dank für die Rückmeldung.

Der Thread Titel wäre hilfreicher, wenn du schreiben könntest, von welcher FW du kommst. bzw wo es klemmt.

Titel wurde ergänzt. Und hier noch die Details:
Ich habe festgestellt, dass ein Downgrade von Unifi 6.x auf 5.4.x funktioniert. Ich schaffe es auch, bis auf 4.3.31 runterzukommen. Danach hakt es aber. Haken bedeutet: weitere Downgrades über die Unifi Controller Console werden zwar initiiert, aber nicht erfolgreich zu Ende geführt. Nach dem Reboot hat der Accesspoint weiterhin die vorherige Firmware.

Ich gehe davon aus, dass Du diese Anleitung schon durchgearbeitet hast.

Die von dir verlinkte Anleitung habe ich nicht ausprobiert. Warum? In der Anleitung wird auf die airMax Geräte verwiesen (Powerbeam, Loco). Ich habe hier aber die Unifi Geräte am Start (AP AC Pro). Die genutzte Dokumentation findet sich hier: https://freifunk-nordhessen.de/ff-nordhessen-tutorial-freifunk-einrichtung-eines-ubiquiti-unifi-ap-ac-pro/

Ich möchte dir diesen Thread hier an’s Herz legen:

Habe gleiches Ausgangsproblem beim Thema TFTP flashen gehabt wie du. Bei mir war es ein Unifi AP LR der 1. Generation. Über die serielle Verbindung hat das wunderbar geklappt.

Ubiquiti Unifi AP von 2014 flashen - #33 von Olli-V

Hi Eddy, kannst du bestätigen, dass das hier verlinkte Tutorial auch für die AC Geräte gilt? Da erschien mir der empfohlene Thread etwas undurchsichtig.

Davon ab: Damit dein Tutorial funktioniert, muss doch das Gehäuse geöffnet werden. Beim AC Pro ist das meines Erachtens mit Silikon zugeklebt, jedenfalls nicht ganz banal zu öffnen. Von daher stellt sich mir da schon die Frage, ob es nicht noch einen weniger invasiven Weg gibt, hier vorwärts zu kommen.

bestätigen kann das wohl erst jemand der es ausprobiert hat :wink:
Aber grundsätzlich klingt das schon sehr device-unabhängig und könnte - gegebenenfalls mit geringen Anpassungen - für viele Ubiquiti Geräte funktionieren.

Wenn du nicht ganz unvorsichtig bist kann ja auch nicht viel kaputt gehen, per TFTP kannst ja dann deine aktuelle original firmware wieder einspielen, solange die uboot-Partitionen nicht überschrieben werden.

1 Like

Ich kann nur wiederholen: Alles steht im OpenWRT-Wiki zum Thema UBNT-Flashen.
Es ist nur halt SEHR kryptisch und die Adressen muss man sich dann von den Device-Pages zusammensuchen, manchmal sogar aus den dort gepasteten intial-consolenllogs.

Das Problem für viele hier Zuschauenenden ist: Es gibt kein Universalrezept. Das ist wie „linux bootet nimmer, grub&co zerschossen“: Das ist fixbar. Immer. Nur halt nicht mit einem universellen oneliner.

Umgekehrt kann man so ein Gerät dann natürlich bei Leuten mit Ahnung auf den Tisch bringen, die fixen das dann fast im Vorbeigehen. Nur lässt sich dann auch daraus keine Universalanleitung ableiten, weil es mit dem nächsten SW-Stand/Board-Revision wieder anders sein wird.

Und ja, die Schuld ist bei UBNT, dass sie das auf eine Art erschweren, dass es so „am Rande von Laien-unmöglich“ ist.

Nachdem nun auch im Unifi Forum die (offenbar softwareseitig implementierte) Downgradesperre erkannt wurde, habe ich das Problem dort im Kontext mit Freifunk angesprochen. Bitte upvotet das Thema, damit der Hersteller zumindest einmal mitbekommt, dass seine Hardware auch ohne Stock-Firmware sinnvoll nutzbar ist.

https://community.ui.com/questions/Cannot-downgrade-UAP-AC-Pro-from-4-3-31-to-4-0-66/be2e01ca-a6fb-4c00-9e1b-96084980ca86#answer/06e563f1-a7fa-42f9-9535-061515f79d8e

Du beliebst zu scherzen, oder?
Openwrt oder andere FremdOS im UBNT-Forum auch nur zu erwähnen.
Hast Du Dir wenigstens eine Burner-Sockenpuppe dafür angelegt?

Das ist wenig Zielführend, dashat Ubiquiti (wenn auch extrem billig) mit voller Absicht eingebaut. Neuere Modelle haben auch Signatur-verifikation im Bootprozess aktiv, welchen UBNT selbstverständlich aber auch nur halbherzig implementiert hat und deswegen (bisher) kein großes Hindernis darstellt.

Wer sich dafür interessiert, das habe ich damals hier Zusammengeschrieben: ramips: add support for Ubiquiti UniFi 6 Lite · openwrt/openwrt@fb4d7a9 · GitHub

Dieses mal haben sie ihren eigenen Write-Protext gebaut. Am Kernel image hängt ein DTB, welches den write-protect status der partitionen angibt:

/dts-v1/;

/ {

	ubnthal {

		write-protect {
			compatible = "ubnthal,write-protect";
			default-write-policy = "ro";

			explicit-write-policy {

				mtd {

					partition@0 {
						label = "u-boot-env";
						write-policy = "rw";
					};

					partition@1 {
						label = "bs";
						write-policy = "rw";
					};

					partition@2 {
						label = "cfg";
						write-policy = "rw";
					};
				};
			};
		};
	};
};

Das Kernel-Modul ubnthal.ko parsed dieses und flagged die MTD partitionen entsprechend als read-only.

Das Kernel Modul stellt im procfs ein file bereit, welches mit der richtigen magic beschrieben alle partitionen unprotected. Hierüber bedient auch das ubntbox binary und damit fwupdate.real den write-protect status der partitionen. Das magic ist allerdings statisch, Ubiquiti war aber der Meinung das ganze ist effektiver, wenn man dieses File ausblendet :roll_eyes: .

Beschreibt man das File mit dem korrekten Wert öffnet sich auf magische Art und Weise der Write-Protect von kernel0 und kernel1 und wir können OpenWrt / Gluon wie bisher installieren.

UAP-AC-Lite-BZ.6.2.35# 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"
UAP-AC-Lite-BZ.6.2.35# cat /sys/class/mtd/mtd2/flags 
0x800
UAP-AC-Lite-BZ.6.2.35# cat /sys/class/mtd/mtd3/flags 
0x800
UAP-AC-Lite-BZ.6.2.35# echo "5edfacbf" > /proc/ubnthal/.uf
UAP-AC-Lite-BZ.6.2.35# cat /sys/class/mtd/mtd2/flags 
0xc00
UAP-AC-Lite-BZ.6.2.35# cat /sys/class/mtd/mtd3/flags 
0xc00
UAP-AC-Lite-BZ.6.2.35# dd if=/
UAP-AC-Lite-BZ.6.2.35# mv /tmp/gluon-ffda-2.6.0-ubiquiti-unifi-ac-lite-sysupgrad
e.bin /tmp/firmware.bin
UAP-AC-Lite-BZ.6.2.35# dd if=/tmp/firmware.bin of=/dev/mtdblock2

11777+1 records in
11777+1 records out
UAP-AC-Lite-BZ.6.2.35# 
UAP-AC-Lite-BZ.6.2.35# dd if=/tmp/firmware.bin of=/dev/mtdblock3

11777+1 records in
11777+1 records out
UAP-AC-Lite-BZ.6.2.35# 
UAP-AC-Lite-BZ.6.2.35# dd if=/dev/zero bs=1 count=1 of=/dev/mtd4
1+0 records in
1+0 records out
UAP-AC-Lite-BZ.6.2.35# reboot

Ich bin mir nicht sicher, was Ubiquiti mit diesem Versteckspiel bezwecken möchte. Wenn es das ist was ich glaube, so hat der Abend mein Vertrauen in deren Softwareerzeugnisse einmal mehr deutlich herabgestuft. Aber hey, gut für uns.

5 Likes

Kurze Info in die Runde:

Ich hatte vor kurzem die „Ehre“ 20 AP Pros zu flashen. Damit ich keine wunden Finger vom copy-pasten bekomme, habe ich ein Script geschrieben, welches hier in Kürze bereitgestellt wird (liegt schon im develop-branch): GitHub - ff-kbu/tools: Collection of useful scripts and code snippets

Gerne können andere das Teil dann für ihre Community forken oder (noch besser) andere model-strings beisteuern und das script somit mit anderen Geräten kompatibel machen.

1 Like

Das Script findest sich wo? Hast Du einen deeplink?

Na komm, so groß ist das Repo ja jetzt auch nicht :wink:

2 Likes

Aus der Freifunk Nordhessen Community hat eines unserer Mitglieder (Credits to Pitch) einen Firmwareuploader für die UAP AC Pro Serie geschrieben, der auch mit neuerer Stock-Firmware auf den Gen2-Geräten das Flashing hinbekommt. Sources sind in Golang, Binarys für Linux, macOS und Windows sind verfügbar.https://codeberg.org/pitch/firmwareloader_uap_ac_pro

Vielen Dank für die Hinweise hier im Thread - das war sehr hilfreich.

3 Likes

Hallo, sorry ich habe deine Frage jetzt erst zufällig gesehen. Nein kann ich nicht, ich habe selbst nur einen AP-LR (nur 2,4 Ghz) geflasht.