ipq40xx: unbreak EZVIZ CS-W3-WD1200G EUP on 5.10
authorChristian Lamparter <chunkeey@gmail.com>
Sun, 28 Nov 2021 14:26:18 +0000 (15:26 +0100)
committerChristian Lamparter <chunkeey@gmail.com>
Fri, 3 Dec 2021 23:36:47 +0000 (00:36 +0100)
with current images, the device is no longer booting.
It gets stuck in the bootloader with "Config not available"
and drops to the uboot shell.

|flash_type: 0
|Hit any key to stop autoboot:  0
|SF: Detected MX25L12805D with page size 4 KiB, total 16 MiB
|Config not availabale
|(IPQ40xx) #

This is because the default bootcmd "bootipq" will only read
the first four MiB of the kernel image. With 5.10 the gzip'd
kernel is slightly larger. So the part of the FIT image which
had the configuration is cut off. Hence it can't find it.

To update the bootcmd, you have to attach the serial console
again and enter the following commands into the boot prompt:

 # setenv bootcmd "sf probe; sf read 84000000 180000 600000; bootm"
 # saveenv
 # run bootcmd

This will allow booting kernels with up to six MiB. This also
allows us to drop the DEVICE_DTS_CONFIG hack we had to use.

Note:
uboot doesn't support LZMA. It fails with:
"Unimplemented compression type 3"

Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
target/linux/ipq40xx/base-files/etc/uci-defaults/05_fix-compat-version [new file with mode: 0644]
target/linux/ipq40xx/image/generic.mk

diff --git a/target/linux/ipq40xx/base-files/etc/uci-defaults/05_fix-compat-version b/target/linux/ipq40xx/base-files/etc/uci-defaults/05_fix-compat-version
new file mode 100644 (file)
index 0000000..44873b9
--- /dev/null
@@ -0,0 +1,10 @@
+. /lib/functions.sh
+
+case "$(board_name)" in
+ezviz,cs-w3-wd1200g-eup)
+       uci set system.@system[0].compat_version="2.0"
+       uci commit system
+       ;;
+esac
+
+exit 0
index 872c4f957f32152985d52c36c49c1bc2f3eb095c..332fff7f45b3a2c320c1841644542953940c2670 100644 (file)
@@ -493,13 +493,16 @@ define Device/ezviz_cs-w3-wd1200g-eup
        DEVICE_VENDOR := EZVIZ
        DEVICE_MODEL := CS-W3-WD1200G
        DEVICE_VARIANT := EUP
-       DEVICE_DTS_CONFIG := config@4
        IMAGE_SIZE := 14848k
+       KERNEL_SIZE = 6m
        SOC := qcom-ipq4018
        IMAGE/sysupgrade.bin := append-kernel | append-rootfs | pad-rootfs | \
                append-metadata
        DEVICE_PACKAGES := -kmod-ath10k-ct kmod-ath10k-ct-smallbuffers \
                ipq-wifi-ezviz_cs-w3-wd1200g-eup
+       DEVICE_COMPAT_VERSION := 2.0
+       DEVICE_COMPAT_MESSAGE := uboot's bootcmd has to be updated (see wiki). \
+               Upgrade via sysupgrade mechanism is not possible.
 endef
 TARGET_DEVICES += ezviz_cs-w3-wd1200g-eup