From 318f07c231552f32542cb2dcb22aac282f0cdb52 Mon Sep 17 00:00:00 2001 From: Daniel Golle Date: Tue, 23 Sep 2025 17:44:35 +0100 Subject: [PATCH] ath79: mikrotik: check RouterBOOT version matching sysupgrade image Check if the uploaded image matches the version of RouterBOOT before proceeding with sysupgrade on MikroTik devices with NOR flash. Signed-off-by: Daniel Golle --- .../base-files/lib/upgrade/platform.sh | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/target/linux/ath79/mikrotik/base-files/lib/upgrade/platform.sh b/target/linux/ath79/mikrotik/base-files/lib/upgrade/platform.sh index 9ad778ad177..1ce42f7b797 100644 --- a/target/linux/ath79/mikrotik/base-files/lib/upgrade/platform.sh +++ b/target/linux/ath79/mikrotik/base-files/lib/upgrade/platform.sh @@ -3,7 +3,48 @@ PART_NAME=firmware REQUIRE_IMAGE_METADATA=1 + +platform_check_image_mikrotik_nor() { + local bootfwver bootfwmajor + local bootentry="$(dd bs=10 skip=1 count=1 if="$1" 2>/dev/null | xargs -0)" + + read -r bootfwver < /sys/firmware/mikrotik/hard_config/booter_version + bootfwmajor="${bootfwver%%.*}" + + if [ "$((bootfwmajor))" = 0 ]; then + v "invalid RouterBOOT version" + return 1 + elif [ "$bootfwmajor" -le 6 ] && [ "$bootentry" != "kernel" ]; then + v "RouterBOOT 6 and earlier requires ELF-in-YAFFS image" + return 1 + elif [ "$bootfwmajor" -ge 7 ] && [ "$bootentry" != "bootimage" ]; then + v "RouterBOOT 7 and later requires NPK-in-YAFFS image" + return 1 + fi + + return 0 +} + platform_check_image() { + case "$board" in + mikrotik,routerboard-2011uias-2hnd|\ + mikrotik,routerboard-493g|\ + mikrotik,routerboard-911g-5hpacd|\ + mikrotik,routerboard-911g-xhpnd|\ + mikrotik,routerboard-912uag-2hpnd|\ + mikrotik,routerboard-921gs-5hpacd-15s|\ + mikrotik,routerboard-922uags-5hpacd|\ + mikrotik,routerboard-951g-2hnd|\ + mikrotik,routerboard-951ui-2hnd|\ + mikrotik,routerboard-sxt-5nd-r2) + return 0 + ;; + *) + platform_check_image_mikrotik_nor "$1" + return $? + ;; + esac + return 0 } -- 2.47.3