Skip to content

Commit

Permalink
ath79: fix first reboot issue on Netgear WNDR4300 v2 and WNDR4500 v3
Browse files Browse the repository at this point in the history
From the Netgear u-boot GPL code[1]. Bootloader always unconditionally
marks block 768, 1020 - 1023 as bad blocks on each boot. This may lead
to conflicts with the OpenWrt nand driver since these blocks may be good
blocks. In this case, U-boot will override the oob of these blocks so
that break the ubi volume. The system will be damaged after first reboot.
To avoid this issue, manually skip these blocks by using "mtd-concat".

[1] https://www.downloads.netgear.com/files/GPL/EX7300v2series-V1.0.0.146_gpl_src.tar.bz2.zip

Fixes: #8878
Tested-by: Yousaf <yousaf465@gmail.com>
Signed-off-by: Shiji Yang <yangshiji66@qq.com>
  • Loading branch information
DragonBluep authored and hauke committed Aug 23, 2023
1 parent 0f9b8aa commit 12f5372
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 3 deletions.
32 changes: 29 additions & 3 deletions target/linux/ath79/dts/qca9563_netgear_wndr.dtsi
Expand Up @@ -90,6 +90,22 @@
linux,default-trigger = "phy1tpt";
};
};

ubi-concat {
compatible = "mtd-concat";
devices = <&ubiconcat0 &ubiconcat1>;

partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;

partition@0 {
label = "ubi";
reg = <0x0 0x0>;
};
};
};
};

&spi {
Expand Down Expand Up @@ -165,10 +181,20 @@
reg = <0x0 0x400000>;
};

partition@400000 {
label = "ubi";
reg = <0x400000 0x7c00000>;
ubiconcat0: partition@400000 {
label = "ubiconcat0";
reg = <0x400000 0x5c00000>;
};

ubiconcat1: partition@6020000 {
label = "ubiconcat1";
reg = <0x6020000 0x1f60000>;
};
/*
* U-boot always unconditionally marks block 768, 1020 - 1023 as
* bad blocks on each boot. To avoid conflicts with the nand
* driver, manually skip them.
*/
};
};
};
Expand Down
6 changes: 6 additions & 0 deletions target/linux/ath79/image/nand.mk
Expand Up @@ -373,6 +373,9 @@ TARGET_DEVICES += netgear_wndr4300tn

define Device/netgear_wndr4300-v2
SOC := qca9563
DEVICE_COMPAT_VERSION := 1.1
DEVICE_COMPAT_MESSAGE := Partition table has been changed to fix the \
first reboot issue. Please reflash factory image with nmrp or tftp.
DEVICE_MODEL := WNDR4300
DEVICE_VARIANT := v2
UIMAGE_MAGIC := 0x27051956
Expand All @@ -384,6 +387,9 @@ TARGET_DEVICES += netgear_wndr4300-v2

define Device/netgear_wndr4500-v3
SOC := qca9563
DEVICE_COMPAT_VERSION := 1.1
DEVICE_COMPAT_MESSAGE := Partition table has been changed to fix the \
first reboot issue. Please reflash factory image with nmrp or tftp.
DEVICE_MODEL := WNDR4500
DEVICE_VARIANT := v3
UIMAGE_MAGIC := 0x27051956
Expand Down
15 changes: 15 additions & 0 deletions target/linux/ath79/nand/base-files/etc/board.d/05_compat-version
@@ -0,0 +1,15 @@
. /lib/functions.sh
. /lib/functions/uci-defaults.sh

board_config_update

case "$(board_name)" in
netgear,wndr4300-v2|\
netgear,wndr4500-v3)
ucidef_set_compat_version "1.1"
;;
esac

board_config_flush

exit 0

0 comments on commit 12f5372

Please sign in to comment.