1
0
mirror of https://git.openwrt.org/openwrt/openwrt.git synced 2024-10-18 13:29:16 +02:00

apm821xx: WNDR4700: fix broken sysupgrade, factory images

prepend-dtb got extended to handle the Meraki devices too,
the problem here was that the Netgear WNDR4700 expects an
u-boot header in front of the DTB, whereas Meraki devices
don't.

Since the header was dropped, the WNDR4700's uboot started
to complain:
  Bad Magic Number,it is forbidden to be written to flash!!

when flashing the factory.img since it expects an u-boot
header there.

Fixes: 5dece2d9355a ("apm821xx: switch over from DTB_SIZE to DEVICE_DTC_FLAGS")
Reported-by: @kisgezenguz
Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
This commit is contained in:
Christian Lamparter 2023-10-20 16:20:27 +02:00
parent 0ba5c0bdc1
commit d6a11833ad

@ -3,7 +3,12 @@ define Build/create-uImage-dtb
-$(STAGING_DIR_HOST)/bin/mkimage -A $(LINUX_KARCH) \
-O linux -T kernel -C none \
-n '$(call toupper,$(LINUX_KARCH)) $(VERSION_DIST) Linux-$(LINUX_VERSION)' \
-d "$@.dtb" "$@.dtb.uimage"
-d "$(KDIR)/image-$(firstword $(DEVICE_DTS)).dtb" "$@.dtb.uimage"
endef
define Build/prepend-dtb-uImage
cat "$@.dtb.uimage" "$@" > "$@.new"
mv "$@.new" "$@"
endef
define Build/meraki-header
@ -104,7 +109,7 @@ define Device/netgear_wndr4700
# append a fake/empty rootfs to fool netgear's uboot
# CHECK_DNI_FIRMWARE_ROOTFS_INTEGRITY in do_chk_dniimg()
KERNEL := kernel-bin | lzma -d16 | uImage lzma | pad-offset $$(BLOCKSIZE) 64 | \
append-uImage-fakehdr filesystem | create-uImage-dtb | prepend-dtb
append-uImage-fakehdr filesystem | create-uImage-dtb | prepend-dtb-uImage
KERNEL_INITRAMFS := kernel-bin | libdeflate-gzip | MuImage-initramfs gzip
IMAGE/factory.img := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-ubi | \
netgear-dni | check-size