Install Ubiquiti UNIFI AP AC PRO GEN2

Good morning,
None of the Openwrt installation methods work on Ubiquiti unfi AP AC PRO Gen2 firmware version (6.5.28.14491)
help me pelasse

Care to explain where it fails. There are multiple steps and doesn’t work doesn’t help.

Good morning,
Thanks for your help
the mtd command does not work in my FIRMWARE version 6.5.28.14491.

mtd write /tmp/openwrt-22.03.5-ath79-generic-ubnt_unifiac-pro-squashfs-sysupgrade.bin
-ash: mtd: not found

Wrong firmware version. Your Unifi firmware is locking you out.

see method

By the numbers:

  • factory reset the unifi ap and make sure you can ping & ssh into 192.168.1.20
  • download the unifi firmware version 3.7.58 for your device from Unifi and rename it mv BZ*.bin ubnt.bin to your PC.
  • download the correct OpenWrt firmware for your device to your PC.
  • Copy the Unifi Firmware from your Linux-PC to the Unifi device: scp ubnt.bin ubnt@192.168.1.20:/tmp/, then issue fwupdate.real -m /tmp/ubnt.bin and let your Unifi device reboot (On reboot, make sure your Unifi device now shows version 3.7.58).

Once you get your Unifi device reverted to firmware version 3.7.58, you should be able to apply the OpenWrt sysupgrade.bin and continue to the following steps from the wiki.

Here is the result. it does not go through. apparently they have defined a list of accepted firmware

UAP-AC-Pro-Gen2-BZ.6.5.28# fwupdate.real -m /tmp/ubnt.bin
Invalid version 'BZ.qca956x.v3.7.58.6385.170508.0957'

That’s a stopper!

Odd. Just installed OpenWrt stable on an UAP AC Lite running Unifi Firmware v6.2.49 from 2022-12-14, and not hearing other similar situations to yours.

Have you tried reverting to an earlier Unifi Firmware ie. 6.2.35 and then if that is successful trying to get to 3.5.78?

YES I tried version 4.XXXX. but the same thing

Try a previous version relatively recent to your current version. If they are limiting regressions, 4.XXXX may be included as no longer supported.

Just to state the obvious caveats, make sure the 3.7.58 md5sum verifies, and that ls /tmp/* lists only a single entry ubnt.bin

No, I don't have several ubnt.bin files, but I do have a temp folder (/temp/temp) in /temp

UAP-AC-Pro-Gen2-BZ.6.5.28#ls /tmp/*
ls: /templs: No such file or directory
/tmp/BZ.qca956x_6.2.35+14043.220812.1940.bin  /tmp/last-dump.core                           /tmp/resolv.conf.auto                         /tmp/system.cfg
/tmp/TZ                                       /tmp/rc.txt                                   /tmp/running.cfg
/tmp/default.cfg                              /tmp/resolv.conf                              /tmp/sysinit.txt

/tmp/etc:
TZ                    crontabs              host.conf             inittab               modules.d.sysinit     profile               shadow                sysupgrade.conf
ath                   device_info           hostapd               iproute2              mtab                  protocols             shells                uap-sysctl.conf
atheros.conf          diag.sh               hosts                 lldpd.conf            openwrt_release       rc.button             snmp                  uci-defaults
banner                dnsmasq.conf          hotplug-preinit.json  localtime             openwrt_version       rc.common             ssl                   udhcpc
banner.failsafe       dropbear              hotplug.d             login.defs            os-release            rc.d                  startup.list          udhcpc_services
board.d               ethertypes            hotplug.json          marks.cfg             passwd                rc.local              sysctl.conf           version
board.info            fstab                 httpd                 modules-boot.d        persistent            resolv.conf           sysctl.d              xattr.conf
config                group                 init.d                modules.d             preinit               services              sysinit

/tmp/lib:
ebtables

/tmp/lock:
fw_printenv.lock

/tmp/log:
lastlog       messages      messages.old  wtmp

/tmp/run:
booted                     logread.1.pid              running_module_para.conf   system.managed             uplink_wds                 wifi0.outdoor
dhcpc.last_state           mcad.0.pid                 schedules                  system.mesh                vapbridge.ath1             wifi0.ssids
download_firmware.failed   mcad.checkin               ssh_trace_count            system.ssh                 vapid.ath0                 wifi0_devnames
dropbear.pid               mcad.isolated              stahtd                     system.state               vapid.ath1                 wifi1.bw
dropbear_rsa_host_key      mesh.status                system.analytics.coredump  system.uplink              vapusage.ath0              wifi1.ch
fingerprint                module_para.conf           system.analytics.mode      system.uplink.prev         vapusage.ath1              wifi1.eu
hostapd                    ntpd.pid                   system.controller          ubnt_protocol.info         vlans                      wifi1.mode
ipold.br0                  peer_aps.lock              system.controller.fqdn     ubus.sock                  wifi0.bw                   wifi1.outdoor
ipready.br0                qca-wifi-modules-load      system.controller.ip       udhcpc.br0.pid             wifi0.ch                   wifi1_devnames
lldpd.socket               radio_devnames             system.inform              uplink_bridge              wifi0.eu                   wlan_devnames
lldpd.socket.lock          report                     system.internet            uplink_eth                 wifi0.mode                 wpa_vport_ath1.conf

/tmp/shm:

/tmp/state:

/tmp/sysinfo:
board_name  model

/tmp/tmp:

/tmp/utermd:
0  1  2  3  4  5  6  7
UAP-AC-Pro-Gen2-BZ.6.5.28#

mv /tmp/BZ*.bin ubnt.bin
ls /tmp/ubnt.bin

  • should return ubnt.bin

fwupdate.real -m /tmp/ubnt.bin

UAP-AC-Pro-Gen2-BZ.6.5.28# fwupdate.real -m /temp/ubnt.bin
Couldn't open image file: /temp/ubnt.bin!
UAP-AC-Pro-Gen2-BZ.6.5.28#

/tmp/ubnt.bin

I managed to come to version 6.2.49. version 3.7.58 still refuses

UAP-AC-Pro-Gen2-BZ.6.2.49# fwupdate.real -m /tmp/ubnt.bin
Invalid version 'BZ.qca956x.v3.7.58.6385.170508.0957'
UAP-AC-Pro-Gen2-BZ.6.2.49#

ls -l /tmp/*

UAP-AC-Pro-Gen2-BZ.6.2.49# ls -l /tmp/*
-rw-r--r--    1 ubnt     root             4 Jan  1  1970 /tmp/TZ
-rw-r--r--    1 ubnt     root          3939 Jan  1  1970 /tmp/default.cfg
lrwxrwxrwx    1 ubnt     root             4 Jan  1  1970 /tmp/etc -> /etc
-rw-------    1 ubnt     root             0 Dec  1 02:40 /tmp/last-dump.core
-rw-r--r--    1 ubnt     root         24011 Dec  1 02:40 /tmp/rc.txt
lrwxrwxrwx    1 ubnt     root            21 Jan  1  1970 /tmp/resolv.conf -> /tmp/resolv.conf.auto
-rw-r--r--    1 ubnt     root             0 Jan  1  1970 /tmp/resolv.conf.auto
-rw-r--r--    1 ubnt     root          3939 Jan  1  1970 /tmp/running.cfg
-rw-r--r--    1 ubnt     root         10502 Jan  1  1970 /tmp/sysinit.txt
-rw-r--r--    1 ubnt     root          3939 Jan  1  1970 /tmp/system.cfg
-rw-r--r--    1 ubnt     root       7764011 Jun 10  2023 /tmp/ubnt.bin

/tmp/lib:
drwxr-xr-x    2 ubnt     root            40 Jan  1  1970 ebtables

/tmp/lock:
-rw-r--r--    1 ubnt     root             0 Jan  1  1970 fw_printenv.lock

/tmp/log:
-rw-r--r--    1 ubnt     root             0 Jan  1  1970 lastlog
-rw-------    1 ubnt     root        157279 Dec  1 03:07 messages
-rw-------    1 ubnt     root        204857 Dec  1 02:55 messages.old
-rw-r--r--    1 ubnt     root             0 Jan  1  1970 wtmp

/tmp/run:
-rw-r--r--    1 ubnt     root             0 Jan  1  1970 booted
-rw-r--r--    1 ubnt     root             0 Dec  1 02:49 download_firmware.failed
-rw-r--r--    1 ubnt     root             5 Dec  1 02:40 dropbear.pid
-rw-------    1 ubnt     root           805 Jan  1  1970 dropbear_rsa_host_key
-rw-r--r--    1 ubnt     root            60 Jan  1  1970 fingerprint
drwxr-xr-x    2 ubnt     root            80 Dec  1 02:40 hostapd
-rw-r--r--    1 ubnt     root            13 Dec  1 02:40 ipold.br0
-rw-r--r--    1 ubnt     root            13 Dec  1 03:07 ipready.br0
srwxr-xr-x    1 ubnt     root             0 Jan  1  1970 lldpd.socket
-rw-r--r--    1 ubnt     root             4 Jan  1  1970 logread.1.pid
-rw-r--r--    1 ubnt     root             4 Dec  1 02:40 mcad.0.pid
-rw-r--r--    1 ubnt     root             5 Dec  1 03:07 mcad.checkin
-rw-r--r--    1 ubnt     root             4 Dec  1 02:41 mcad.isolated
-rw-r--r--    1 ubnt     root           193 Dec  1 03:07 mesh.status
-rw-r--r--    1 ubnt     root             0 Jan  1  1970 module_para.conf
-rw-r--r--    1 ubnt     root             5 Jan  1  1970 ntpd.pid
-rw-r--r--    1 ubnt     root             0 Jan  1  1970 peer_aps.lock
-rw-r--r--    1 ubnt     root           104 Jan  1  1970 qca-wifi-modules-load
drwx------    2 ubnt     root            40 Jan  1  1970 report
-rw-r--r--    1 ubnt     root             0 Jan  1  1970 running_module_para.conf
drwxr-xr-x    2 ubnt     root            80 Jan  1  1970 schedules
-rw-r--r--    1 ubnt     root             3 Dec  1 02:54 ssh_trace_count
drwxr-x---    2 ubnt     root            40 Dec  1 02:40 stahtd
-rw-r--r--    1 ubnt     root             2 Jan  1  1970 system.analytics.coredump
-rw-r--r--    1 ubnt     root             2 Jan  1  1970 system.analytics.mode
-rw-r--r--    1 ubnt     root            11 Dec  1 03:07 system.controller
-rw-r--r--    1 ubnt     root             5 Jan  1  1970 system.controller.fqdn
-rw-r--r--    1 ubnt     root             0 Dec  1 03:07 system.controller.ip
-rw-r--r--    1 ubnt     root             7 Dec  1 03:07 system.inform
-rw-r--r--    1 ubnt     root             1 Dec  1 03:07 system.internet
-rw-r--r--    1 ubnt     root            12 Dec  1 03:07 system.managed
-rw-r--r--    1 ubnt     root             3 Jan  1  1970 system.mesh
-rw-r--r--    1 ubnt     root             5 Dec  1 02:40 system.ssh
-rw-r--r--    1 ubnt     root             6 Dec  1 02:40 system.state
-rw-r--r--    1 ubnt     root             5 Dec  1 03:07 system.uplink
-rw-r--r--    1 ubnt     root             5 Dec  1 03:07 system.uplink.prev
-rw-r--r--    1 ubnt     root             0 Jan  1  1970 ubnt_protocol.info
srw-rw-rw-    1 ubnt     root             0 Jan  1  1970 ubus.sock
-rw-r--r--    1 ubnt     root             5 Jan  1  1970 udhcpc.br0.pid
-rw-r--r--    1 ubnt     root             4 Jan  1  1970 uplink_bridge
-rw-r--r--    1 ubnt     root             5 Jan  1  1970 uplink_eth
-rw-r--r--    1 ubnt     root             5 Jan  1  1970 uplink_wds
-rw-r--r--    1 ubnt     root             4 Jan  1  1970 vapbridge.ath1
-rw-r--r--    1 ubnt     root             5 Jan  1  1970 vapid.ath0
-rw-r--r--    1 ubnt     root             5 Jan  1  1970 vapid.ath1
-rw-r--r--    1 ubnt     root             5 Jan  1  1970 vapusage.ath0
-rw-r--r--    1 ubnt     root             7 Jan  1  1970 vapusage.ath1
-rw-r--r--    1 ubnt     root             2 Jan  1  1970 vlans
-rw-r--r--    1 ubnt     root             3 Jan  1  1970 wifi0.bw
-rw-r--r--    1 ubnt     root             2 Jan  1  1970 wifi0.ch
-rw-r--r--    1 ubnt     root             9 Jan  1  1970 wifi0.mode
-rw-r--r--    1 ubnt     root            13 Jan  1  1970 wifi0.ssids
-rw-r--r--    1 ubnt     root             5 Jan  1  1970 wifi0_devnames
-rw-r--r--    1 ubnt     root             3 Jan  1  1970 wifi1.bw
-rw-r--r--    1 ubnt     root             2 Jan  1  1970 wifi1.ch
-rw-r--r--    1 ubnt     root            10 Jan  1  1970 wifi1.mode
-rw-r--r--    1 ubnt     root             5 Jan  1  1970 wifi1_devnames
-rw-r--r--    1 ubnt     root            10 Jan  1  1970 wlan_devnames
-rw-r--r--    1 ubnt     root            24 Dec  1 03:07 wpa_vport_ath1.conf

/tmp/shm:

/tmp/state:

/tmp/sysinfo:
-rw-r--r--    1 ubnt     root             8 Jan  1  1970 board_name
-rw-r--r--    1 ubnt     root            32 Jan  1  1970 model

/tmp/tmp:

/tmp/utermd:
drwxr-xr-x    2 ubnt     root            40 Dec  1 02:40 0
drwxr-xr-x    2 ubnt     root            40 Dec  1 02:40 1
drwxr-xr-x    2 ubnt     root            40 Dec  1 02:40 2
drwxr-xr-x    2 ubnt     root            40 Dec  1 02:40 3
drwxr-xr-x    2 ubnt     root            40 Dec  1 02:40 4
drwxr-xr-x    2 ubnt     root            40 Dec  1 02:40 5
drwxr-xr-x    2 ubnt     root            40 Dec  1 02:40 6
drwxr-xr-x    2 ubnt     root            40 Dec  1 02:40 7
UAP-AC-Pro-Gen2-BZ.6.2.49#

The new firmware does not allow downgrading lower than the version shipped or last installed, apparently not even with TFTP. I encountered this with a Nanostation AC loco. Fortunately on that it was easy to open the case and attach serial. Models like the AC Pro Gen2 are glued together though.

The best solution would be for someone to prepare a patch for fwupdate.real in the new versions. This will likely have to be done with every new version.

Hi Mike/@mk24
You are one of my most trusted sources here, but I have to tell you, at least on the UAP-AC-Lite, this recipe still works

As the OP notes, he was able to downgrade successfully from 6.5.28 to 6.2.49, and even to 4.x.xx.

6.2.49 was my starting point when I downgraded my unit to 3.7.58 and installed OpenWrt to it roughly 2+ days ago.

This evening, I have installed OEM 6.5.28 and back to 3.7.58 and then forward to OpenWrt again as well as running the automated script to achieve same.

I cannot duplicate the OP’s issue on my own target device.

Good morning,
I think there is a problem with AC Pro Gen2.
I was able to go from 6.5.28 > 6.2.49 > 5.43.56 > 5.43.43.
But since no previous version tested works.
so I reverted to version 6.5.28. Again it still doesn't work.

Good morning @Zarouka

I can’t see this being a problem specific to the AC Pro. You can clearly see downgrading to lower level firmware for the Pro is not an issue.

If I go to unifi download firmware for AC-Lite and then go to unifi download firmware for AC-Pro I get the byte by byte common image for all platforms in this entire product line ie UAP-AC-IW, UAP-AC-LITE, UAP-AC-LR, UAP-AC-M, UAP-AC-M-PRO, UAP-AC-PRO

It makes no sense that the AC-Pro is the only target :dart: in this common firmware product line that will not accept 3.7.58 especially on a 6 year old device that’s close or at EOL by the vendor.

Are you sure your 3.7.58 DL file returns the correct md5sum yourDLfile and/or sha512sum yourDLfile?

Have you tried the script at https://github.com/damadmai/unifi_openwrt ?

Other than that I’m out of options. I cannot duplicate your issue on my AC-Lite on same firmware platform.

Exhausting any other option, I’d suggest raising an issue at https://github.com/openwrt/openwrt/issues

1 Like