mirror of
https://github.com/openwrt/openwrt.git
synced 2025-01-10 23:12:48 +00:00
6009b3fd58
This is backport of the same functionality in ath79, from commit
d42a7c469
("ath79: ubnt-m-xw: Fix factory image flashing using TFTP
recovery method")
Ubiquity allows flashing of unsigned factory images via TFTP recovery
method[1]. They claim in airOS v6.0.7 release changelog[2] following:
All future airOS versions will be signed in this way and not allow
unsigned firmware to be loaded except via TFTP.
U-boot bootloader on M-XW devices expects factory image revision
version in specific format. On airOS v6.1.7 with `U-Boot 1.1.4-s1039
(May 24 2017 - 15:58:18)` bootloader checks if the revision major(?)
number is actually a number, but in currently generated images there's
OpenWrt text and so the check fails:
Hit any key to stop autoboot: 0
Setting default IP 192.168.1.20
Starting TFTP server...
Receiving file from 192.168.1.25:38438
Received 4981148 bytes
Firmware check failed! (1)
By placing arbitrary correct number first in major version, we make the
bootloader happy and we can flash factory images over TFTP again:
Received 3801500 bytes
Firmware Version: XW.ar934x.v6.0.4-42.OpenWrt-r9766+2-be42e44
Setting U-Boot environment variables
Un-Protected 1 sectors
Erasing Flash.... done
Patch provided by AREDN[3] project, tested on Bullet M2 XW.
1. https://help.ubnt.com/hc/en-us/articles/204910124-UniFi-TFTP-Recovery-for-Bricked-Access-Points
2. https://dl.ubnt.com/firmwares/XW-fw/v6.0.7/changelog.txt
3. https://github.com/aredn
Signed-off-by: Petr Štetiar <ynezz@true.cz>
300 lines
8.1 KiB
Makefile
300 lines
8.1 KiB
Makefile
DEVICE_VARS += UBNT_BOARD UBNT_CHIP UBNT_TYPE UBNT_VERSION UBNT_REVISION
|
|
|
|
# On M (XW) devices the U-Boot as of version 1.1.4-s1039 doesn't like
|
|
# VERSION_DIST being on the place of major(?) version number, so we need to
|
|
# use some number.
|
|
UBNT_REVISION := $(VERSION_DIST)-$(REVISION)
|
|
|
|
# mkubntimage is using the kernel image direct
|
|
# routerboard creates partitions out of the ubnt header
|
|
define Build/mkubntimage
|
|
-$(STAGING_DIR_HOST)/bin/mkfwimage \
|
|
-B $(UBNT_BOARD) -v $(UBNT_TYPE).$(UBNT_CHIP).v6.0.0-$(VERSION_DIST)-$(REVISION) \
|
|
-k $(IMAGE_KERNEL) \
|
|
-r $@ \
|
|
-o $@
|
|
endef
|
|
|
|
# all UBNT XM device expect the kernel image to have 1024k while flash, when
|
|
# booting the image, the size doesn't matter.
|
|
define Build/mkubntimage-split
|
|
-[ -f $@ ] && ( \
|
|
dd if=$@ of=$@.old1 bs=1024k count=1; \
|
|
dd if=$@ of=$@.old2 bs=1024k skip=1; \
|
|
$(STAGING_DIR_HOST)/bin/mkfwimage \
|
|
-B $(UBNT_BOARD) -v $(UBNT_TYPE).$(UBNT_CHIP).v$(UBNT_VERSION)-$(UBNT_REVISION) \
|
|
-k $@.old1 \
|
|
-r $@.old2 \
|
|
-o $@; \
|
|
rm $@.old1 $@.old2 )
|
|
endef
|
|
|
|
define Build/mkubntimage2
|
|
-$(STAGING_DIR_HOST)/bin/mkfwimage2 -f 0x9f000000 \
|
|
-v $(UBNT_TYPE).$(UBNT_CHIP).v6.0.0-$(VERSION_DIST)-$(REVISION) \
|
|
-p jffs2:0x50000:0xf60000:0:0:$@ \
|
|
-o $@.new
|
|
@mv $@.new $@
|
|
endef
|
|
|
|
|
|
# UBNT_BOARD e.g. one of (XS2, XS5, RS, XM)
|
|
# UBNT_TYPE e.g. one of (BZ, XM, XW)
|
|
# UBNT_CHIP e.g. one of (ar7240, ar933x, ar934x)
|
|
# UBNT_VERSION e.g. one of (6.0.0, 8.5.0)
|
|
define Device/ubnt
|
|
DEVICE_PACKAGES := kmod-usb-core kmod-usb2
|
|
DEVICE_PROFILE := UBNT
|
|
IMAGE_SIZE := 7552k
|
|
MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,7552k(firmware),256k(cfg)ro,64k(EEPROM)ro
|
|
UBNT_BOARD := XM
|
|
UBNT_VERSION := 6.0.0
|
|
IMAGES := sysupgrade.bin factory.bin
|
|
IMAGE/sysupgrade.bin := append-kernel | pad-to $$$$(BLOCKSIZE) | append-rootfs | pad-rootfs | check-size $$$$(IMAGE_SIZE)
|
|
IMAGE/factory.bin := $$(IMAGE/sysupgrade.bin) | mkubntimage-split
|
|
endef
|
|
|
|
define Device/ubnt-xm
|
|
$(Device/ubnt)
|
|
DEVICE_PACKAGES += kmod-usb-ohci rssileds
|
|
UBNT_TYPE := XM
|
|
UBNT_CHIP := ar7240
|
|
KERNEL := kernel-bin | patch-cmdline | relocate-kernel | lzma | uImage lzma
|
|
endef
|
|
|
|
define Device/ubnt-xw
|
|
$(Device/ubnt)
|
|
DEVICE_PACKAGES += rssileds
|
|
UBNT_TYPE := XW
|
|
UBNT_CHIP := ar934x
|
|
UBNT_VERSION := 6.0.4
|
|
UBNT_REVISION := 42.$(UBNT_REVISION)
|
|
endef
|
|
|
|
define Device/ubnt-bz
|
|
$(Device/ubnt)
|
|
UBNT_TYPE := BZ
|
|
UBNT_CHIP := ar7240
|
|
endef
|
|
|
|
define Device/rw2458n
|
|
$(Device/ubnt-xm)
|
|
DEVICE_TITLE := Ubiquiti RW2458N
|
|
BOARDNAME := RW2458N
|
|
endef
|
|
TARGET_DEVICES += rw2458n
|
|
|
|
define Device/ubnt-airrouter
|
|
$(Device/ubnt-xm)
|
|
DEVICE_TITLE := Ubiquiti AirRouter
|
|
BOARDNAME := UBNT-AR
|
|
endef
|
|
TARGET_DEVICES += ubnt-airrouter
|
|
|
|
define Device/ubnt-bullet-m
|
|
$(Device/ubnt-xm)
|
|
DEVICE_TITLE := Ubiquiti Bullet-M
|
|
BOARDNAME := UBNT-BM
|
|
endef
|
|
TARGET_DEVICES += ubnt-bullet-m
|
|
|
|
define Device/ubnt-rocket-m
|
|
$(Device/ubnt-xm)
|
|
DEVICE_TITLE := Ubiquiti Rocket-M
|
|
BOARDNAME := UBNT-RM
|
|
endef
|
|
TARGET_DEVICES += ubnt-rocket-m
|
|
|
|
define Device/ubnt-nano-m
|
|
$(Device/ubnt-xm)
|
|
DEVICE_TITLE := Ubiquiti Nano-M
|
|
BOARDNAME := UBNT-NM
|
|
endef
|
|
TARGET_DEVICES += ubnt-nano-m
|
|
|
|
define Device/ubnt-unifi
|
|
$(Device/ubnt-bz)
|
|
DEVICE_TITLE := Ubiquiti UniFi
|
|
BOARDNAME := UBNT-UF
|
|
DEVICE_PROFILE += UBNTUNIFI
|
|
endef
|
|
TARGET_DEVICES += ubnt-unifi
|
|
|
|
define Device/ubnt-unifiac
|
|
DEVICE_PACKAGES := kmod-usb-core kmod-usb2
|
|
DEVICE_PROFILE := UBNT
|
|
IMAGE_SIZE := 7744k
|
|
MTDPARTS := spi0.0:384k(u-boot)ro,64k(u-boot-env)ro,7744k(firmware),7744k(ubnt-airos)ro,128k(bs),256k(cfg)ro,64k(EEPROM)ro
|
|
IMAGES := sysupgrade.bin
|
|
IMAGE/sysupgrade.bin := append-kernel | pad-to $$$$(BLOCKSIZE) | append-rootfs | pad-rootfs | check-size $$$$(IMAGE_SIZE)
|
|
endef
|
|
|
|
define Device/ubnt-unifiac-lite
|
|
$(Device/ubnt-unifiac)
|
|
DEVICE_TITLE := Ubiquiti UniFi AC-Lite
|
|
DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca988x-ct
|
|
DEVICE_PROFILE += UBNTUNIFIACLITE
|
|
BOARDNAME := UBNT-UF-AC-LITE
|
|
endef
|
|
TARGET_DEVICES += ubnt-unifiac-lite
|
|
|
|
define Device/ubnt-unifiac-mesh
|
|
$(Device/ubnt-unifiac-lite)
|
|
DEVICE_TITLE := Ubiquiti UniFi AC-Mesh
|
|
endef
|
|
TARGET_DEVICES += ubnt-unifiac-mesh
|
|
|
|
define Device/ubnt-unifiac-pro
|
|
$(Device/ubnt-unifiac)
|
|
DEVICE_TITLE := Ubiquiti UniFi AC-Pro
|
|
DEVICE_PACKAGES += kmod-ath10k-ct ath10k-firmware-qca988x-ct
|
|
DEVICE_PROFILE += UBNTUNIFIACPRO
|
|
BOARDNAME := UBNT-UF-AC-PRO
|
|
endef
|
|
TARGET_DEVICES += ubnt-unifiac-pro
|
|
|
|
define Device/ubnt-unifiac-mesh-pro
|
|
$(Device/ubnt-unifiac-pro)
|
|
DEVICE_TITLE := Ubiquiti UniFi AC-Mesh-Pro
|
|
endef
|
|
TARGET_DEVICES += ubnt-unifiac-mesh-pro
|
|
|
|
define Device/ubnt-unifi-outdoor
|
|
$(Device/ubnt-bz)
|
|
DEVICE_TITLE := Ubiquiti UniFi Outdoor
|
|
BOARDNAME := UBNT-U20
|
|
DEVICE_PROFILE += UBNTUNIFIOUTDOOR
|
|
endef
|
|
TARGET_DEVICES += ubnt-unifi-outdoor
|
|
|
|
define Device/ubnt-nano-m-xw
|
|
$(Device/ubnt-xw)
|
|
DEVICE_TITLE := Ubiquiti Nano M XW
|
|
BOARDNAME := UBNT-NM-XW
|
|
endef
|
|
TARGET_DEVICES += ubnt-nano-m-xw
|
|
|
|
define Device/ubnt-lbe-m5
|
|
$(Device/ubnt-xw)
|
|
DEVICE_TITLE := Ubiquiti Litebeam M5
|
|
BOARDNAME := UBNT-LBE-M5
|
|
endef
|
|
TARGET_DEVICES += ubnt-lbe-m5
|
|
|
|
define Device/ubnt-loco-m-xw
|
|
$(Device/ubnt-xw)
|
|
DEVICE_TITLE := Ubiquiti Loco XW
|
|
BOARDNAME := UBNT-LOCO-XW
|
|
endef
|
|
TARGET_DEVICES += ubnt-loco-m-xw
|
|
|
|
define Device/ubnt-rocket-m-xw
|
|
$(Device/ubnt-xw)
|
|
DEVICE_TITLE := Ubiquiti Rocket M XW
|
|
BOARDNAME := UBNT-RM-XW
|
|
endef
|
|
TARGET_DEVICES += ubnt-rocket-m-xw
|
|
|
|
define Device/ubnt-rocket-m-ti
|
|
$(Device/ubnt-xw)
|
|
DEVICE_TITLE := Ubiquiti Rocket M TI
|
|
BOARDNAME := UBNT-RM-TI
|
|
UBNT_TYPE := TI
|
|
endef
|
|
TARGET_DEVICES += ubnt-rocket-m-ti
|
|
|
|
define Device/ubnt-air-gateway
|
|
$(Device/ubnt-xm)
|
|
DEVICE_TITLE := Ubiquiti Air Gateway
|
|
BOARDNAME := UBNT-AGW
|
|
UBNT_TYPE := AirGW
|
|
UBNT_CHIP := ar933x
|
|
CONSOLE := ttyATH0,115200
|
|
endef
|
|
TARGET_DEVICES += ubnt-air-gateway
|
|
|
|
define Device/ubnt-air-gateway-pro
|
|
$(Device/ubnt-xm)
|
|
DEVICE_TITLE := Ubiquiti Air Gateway Pro
|
|
BOARDNAME := UBNT-AGWP
|
|
UBNT_TYPE := AirGWP
|
|
UBNT_CHIP := ar934x
|
|
endef
|
|
TARGET_DEVICES += ubnt-air-gateway-pro
|
|
|
|
define Device/ubdev01
|
|
$(Device/ubnt-xm)
|
|
DEVICE_TITLE := Ubiquiti ubDEV01
|
|
MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,7488k(firmware),64k(certs),256k(cfg)ro,64k(EEPROM)ro
|
|
BOARDNAME := UBNT-UF
|
|
UBNT_BOARD := UBDEV01
|
|
endef
|
|
TARGET_DEVICES += ubdev01
|
|
|
|
define Device/ubnt-routerstation
|
|
DEVICE_PACKAGES := kmod-usb-core kmod-usb-ohci kmod-usb2
|
|
DEVICE_PROFILE := UBNT
|
|
IMAGE_SIZE := 16128k
|
|
IMAGES := sysupgrade.bin factory.bin
|
|
IMAGE/factory.bin := append-rootfs | pad-rootfs | mkubntimage
|
|
IMAGE/sysupgrade.bin := append-rootfs | pad-rootfs | combined-image | check-size $$$$(IMAGE_SIZE)
|
|
KERNEL := kernel-bin | patch-cmdline | lzma | pad-to $$(BLOCKSIZE)
|
|
endef
|
|
|
|
define Device/ubnt-rs
|
|
$(Device/ubnt-routerstation)
|
|
DEVICE_TITLE := Ubiquiti RouterStation
|
|
BOARDNAME := UBNT-RS
|
|
DEVICE_PROFILE += UBNTRS
|
|
UBNT_BOARD := RS
|
|
UBNT_TYPE := RSx
|
|
UBNT_CHIP := ar7100
|
|
endef
|
|
TARGET_DEVICES += ubnt-rs
|
|
|
|
define Device/ubnt-rspro
|
|
$(Device/ubnt-routerstation)
|
|
DEVICE_TITLE := Ubiquiti RouterStation Pro
|
|
BOARDNAME := UBNT-RSPRO
|
|
DEVICE_PROFILE += UBNTRSPRO
|
|
UBNT_BOARD := RSPRO
|
|
UBNT_TYPE := RSPRO
|
|
UBNT_CHIP := ar7100pro
|
|
endef
|
|
TARGET_DEVICES += ubnt-rspro
|
|
|
|
define Device/ubnt-ls-sr71
|
|
$(Device/ubnt-routerstation)
|
|
DEVICE_TITLE := Ubiquiti LS-SR71
|
|
BOARDNAME := UBNT-LS-SR71
|
|
UBNT_BOARD := LS-SR71
|
|
UBNT_TYPE := LS-SR71
|
|
UBNT_CHIP := ar7100
|
|
endef
|
|
TARGET_DEVICES += ubnt-ls-sr71
|
|
|
|
define Device/ubnt-uap-pro
|
|
DEVICE_TITLE := Ubiquiti UAP Pro
|
|
KERNEL_SIZE := 2048k
|
|
IMAGE_SIZE := 15744k
|
|
MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,2048k(kernel),13696k(rootfs),256k(cfg)ro,64k(EEPROM)ro,15744k@0x50000(firmware)
|
|
UBNT_TYPE := BZ
|
|
UBNT_CHIP := ar934x
|
|
BOARDNAME := UAP-PRO
|
|
DEVICE_PROFILE := UBNT UAPPRO
|
|
KERNEL := kernel-bin | patch-cmdline | lzma | uImage lzma | jffs2 kernel0
|
|
IMAGES := sysupgrade.bin factory.bin
|
|
IMAGE/sysupgrade.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-rootfs | pad-rootfs | check-size $$$$(IMAGE_SIZE)
|
|
IMAGE/factory.bin := $$(IMAGE/sysupgrade.bin) | mkubntimage2
|
|
endef
|
|
TARGET_DEVICES += ubnt-uap-pro
|
|
|
|
define Device/ubnt-unifi-outdoor-plus
|
|
$(Device/ubnt-uap-pro)
|
|
DEVICE_TITLE := Ubiquiti UniFi Outdoor Plus
|
|
UBNT_CHIP := ar7240
|
|
BOARDNAME := UBNT-UOP
|
|
DEVICE_PROFILE := UBNT
|
|
endef
|
|
TARGET_DEVICES += ubnt-unifi-outdoor-plus
|