123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- From: Matthias Schiffer <mschiffer@universe-factory.net>
- Date: Thu, 25 Feb 2016 21:42:14 +0100
- Subject: firmware-utils: mkfwimage: fix firmware_max_length for XM layout
- The new u-boot version bundled with the 5.6.x firmwares from Ubiquiti gets
- confused by the smaller rootfs partition size; this can lead to various
- issues:
- 1. We've gotten reports that flashing from the 5.6.x stock firmware to
- OpenWrt will brick devices; I wasn't able to reproduce this myself
- 2. Flashing from 5.5.x stock firmware to OpenWrt and back to stock (via
- TFTP recovery), following by an update to 5.6.x via web interface can
- yield a bricked device with the following properties:
- - It can't be booted without entering commands over a serial console, as
- u-boot supplies the wrong MTD layout
- - The web interface won't accept any image with the original flash
- layout, so stock firmware upgrades are impossible
- - As the TFTP recovery doesn't update u-boot, returning to the old
- u-boot from firmware 5.5.x is impossible
- To recover from 2., creating an OpenWrt image which doesn't set u-boot as
- read-only and flashing a backup of the old u-boot from there is the only
- way known to me. (Fixing the mtdparts variable in u-boot-env from OpenWrt
- might also work; settings this from u-boot over serial didn't have
- any permanent effect.)
- Fix all of this by setting the correct flash layout also used by the stock
- firmware. Flashing has been tested from both firmware 5.5.x and 5.6.x. The
- fixed layout also matches the mtdparts defined by OpenWrt.
- Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
- diff --git a/tools/firmware-utils/src/mkfwimage.c b/tools/firmware-utils/src/mkfwimage.c
- index 5dae284..d8d5239 100644
- --- a/tools/firmware-utils/src/mkfwimage.c
- +++ b/tools/firmware-utils/src/mkfwimage.c
- @@ -79,7 +79,7 @@ fw_layout_t fw_layout_data[] = {
- .name = "XM",
- .kern_start = 0x9f050000,
- .kern_entry = 0x80002000,
- - .firmware_max_length= 0x006A0000,
- + .firmware_max_length= 0x00760000,
- },
- {
- .name = "UBDEV01",
|