diff options
author | Adrian Schmutzler <freifunk@adrianschmutzler.de> | 2020-08-07 15:25:12 +0200 |
---|---|---|
committer | Adrian Schmutzler <freifunk@adrianschmutzler.de> | 2020-08-30 22:18:35 +0200 |
commit | 4e4ee4649553ab536225060a27fc320bf54e458c (patch) | |
tree | 711fbf5485f94baec8b708edba00c7250b923872 /target/linux/ar71xx/base-files/lib/upgrade | |
parent | 47b2ee2d9a9a1790f9bf8a528640c333af39e4ba (diff) | |
download | upstream-4e4ee4649553ab536225060a27fc320bf54e458c.tar.gz upstream-4e4ee4649553ab536225060a27fc320bf54e458c.tar.bz2 upstream-4e4ee4649553ab536225060a27fc320bf54e458c.zip |
ar71xx: drop target
This target has been mostly replaced by ath79 and won't be included
in the upcoming release anymore. Finally put it to rest.
This also removes all references in packages, tools, etc. as well as
the uboot-ar71xx and vsc73x5-ucode packages.
Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
Diffstat (limited to 'target/linux/ar71xx/base-files/lib/upgrade')
-rw-r--r-- | target/linux/ar71xx/base-files/lib/upgrade/allnet.sh | 155 | ||||
-rw-r--r-- | target/linux/ar71xx/base-files/lib/upgrade/dir825.sh | 165 | ||||
-rw-r--r-- | target/linux/ar71xx/base-files/lib/upgrade/merakinand.sh | 165 | ||||
-rw-r--r-- | target/linux/ar71xx/base-files/lib/upgrade/openmesh.sh | 232 | ||||
-rwxr-xr-x | target/linux/ar71xx/base-files/lib/upgrade/platform.sh | 915 |
5 files changed, 0 insertions, 1632 deletions
diff --git a/target/linux/ar71xx/base-files/lib/upgrade/allnet.sh b/target/linux/ar71xx/base-files/lib/upgrade/allnet.sh deleted file mode 100644 index 5295d8cfe0..0000000000 --- a/target/linux/ar71xx/base-files/lib/upgrade/allnet.sh +++ /dev/null @@ -1,155 +0,0 @@ -# The U-Boot loader of the some Allnet devices requires image sizes and -# checksums to be provided in the U-Boot environment. -# In case the check fails during boot, a failsafe-system is started to provide -# a minimal web-interface for flashing a new firmware. - -# determine size of the main firmware partition -platform_get_firmware_size() { - local dev size erasesize name - while read dev size erasesize name; do - name=${name#'"'}; name=${name%'"'} - case "$name" in - firmware) - printf "%d" "0x$size" - break - ;; - esac - done < /proc/mtd -} - -# get the first 4 bytes (magic) of a given file starting at offset in hex format -get_magic_long_at() { - dd if="$1" skip=$(( $CI_BLKSZ / 4 * $2 )) bs=4 count=1 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"' -} - -get_filesize() { - wc -c "$1" | while read image_size _n ; do echo $image_size ; break; done -} - -# scan through the update image pages until matching a magic -platform_get_offset() { - offsetcount=0 - magiclong="x" - if [ -n "$3" ]; then - offsetcount=$3 - fi - while magiclong=$( get_magic_long_at "$1" "$offsetcount" ) && [ -n "$magiclong" ]; do - case "$magiclong" in - "2705"*) - # U-Boot image magic - if [ "$2" = "uImage" ]; then - echo $offsetcount - return - fi - ;; - "68737173"|"73717368") - # SquashFS - if [ "$2" = "rootfs" ]; then - echo $offsetcount - return - fi - ;; - "deadc0de"|"19852003") - # JFFS2 empty page - if [ "$2" = "rootfs-data" ]; then - echo $offsetcount - return - fi - ;; - esac - offsetcount=$(( $offsetcount + 1 )) - done -} - -platform_check_image_allnet() { - local fw_printenv=/usr/sbin/fw_printenv - [ ! -n "$fw_printenv" -o ! -x "$fw_printenv" ] && { - echo "Please install uboot-envtools!" - return 1 - } - - [ ! -r "/etc/fw_env.config" ] && { - echo "/etc/fw_env.config is missing" - return 1 - } - - local image_size=$( get_filesize "$1" ) - local firmware_size=$( platform_get_firmware_size ) - [ $image_size -ge $firmware_size ] && - { - echo "upgrade image is too big (${image_size}b > ${firmware_size}b)" - } - - local vmlinux_blockoffset=$( platform_get_offset "$1" uImage ) - [ -z $vmlinux_blockoffset ] && { - echo "vmlinux-uImage not found" - return 1 - } - - local rootfs_blockoffset=$( platform_get_offset "$1" rootfs "$vmlinux_blockoffset" ) - [ -z $rootfs_blockoffset ] && { - echo "missing rootfs" - return 1 - } - - local data_blockoffset=$( platform_get_offset "$1" rootfs-data "$rootfs_blockoffset" ) - [ -z $data_blockoffset ] && { - echo "rootfs doesn't have JFFS2 end marker" - return 1 - } - - return 0 -} - -platform_do_upgrade_allnet() { - local firmware_base_addr=$( printf "%d" "$1" ) - local vmlinux_blockoffset=$( platform_get_offset "$2" uImage ) - if [ ! -n "$vmlinux_blockoffset" ]; then - echo "can't determine uImage offset" - return 1 - fi - local rootfs_blockoffset=$( platform_get_offset "$2" rootfs $(( $vmlinux_blockoffset + 1 )) ) - local vmlinux_offset=$(( $vmlinux_blockoffset * $CI_BLKSZ )) - local vmlinux_addr=$(( $firmware_base_addr + $vmlinux_offset )) - local vmlinux_hexaddr=0x$( printf "%08x" "$vmlinux_addr" ) - if [ ! -n "$rootfs_blockoffset" ]; then - echo "can't determine rootfs offset" - return 1 - fi - local rootfs_offset=$(( $rootfs_blockoffset * $CI_BLKSZ )) - local rootfs_addr=$(( $firmware_base_addr + $rootfs_offset )) - local rootfs_hexaddr=0x$( printf "%08x" "$rootfs_addr" ) - local vmlinux_blockcount=$(( $rootfs_blockoffset - $vmlinux_blockoffset )) - local vmlinux_size=$(( $rootfs_offset - $vmlinux_offset )) - local vmlinux_hexsize=0x$( printf "%08x" "$vmlinux_size" ) - local data_blockoffset=$( platform_get_offset "$2" rootfs-data $(( $rootfs_blockoffset + 1 )) ) - if [ ! -n "$data_blockoffset" ]; then - echo "can't determine rootfs size" - return 1 - fi - local data_offset=$(( $data_blockoffset * $CI_BLKSZ )) - local rootfs_blockcount=$(( $data_blockoffset - $rootfs_blockoffset )) - local rootfs_size=$(( $data_offset - $rootfs_offset )) - local rootfs_hexsize=0x$( printf "%08x" "$rootfs_size" ) - - local rootfs_md5=$( dd if="$2" bs=$CI_BLKSZ skip=$rootfs_blockoffset count=$rootfs_blockcount 2>/dev/null | md5sum -); rootfs_md5="${rootfs_md5%% *}" - local vmlinux_md5=$( dd if="$2" bs=$CI_BLKSZ skip=$vmlinux_blockoffset count=$vmlinux_blockcount 2>/dev/null | md5sum -); vmlinux_md5="${vmlinux_md5%% *}" - # this needs a recent version of uboot-envtools! - cat >/tmp/fw_env_upgrade <<EOF -vmlinux_start_addr $vmlinux_hexaddr -vmlinux_size $vmlinux_hexsize -vmlinux_checksum $vmlinux_md5 -rootfs_start_addr $rootfs_hexaddr -rootfs_size $rootfs_hexsize -rootfs_checksum $rootfs_md5 -bootcmd bootm $vmlinux_hexaddr -EOF - - mkdir -p /var/lock - fw_setenv -s /tmp/fw_env_upgrade || { - echo "failed to update U-Boot environment" - return 1 - } - shift - default_do_upgrade "$@" -} diff --git a/target/linux/ar71xx/base-files/lib/upgrade/dir825.sh b/target/linux/ar71xx/base-files/lib/upgrade/dir825.sh deleted file mode 100644 index e991a06b7a..0000000000 --- a/target/linux/ar71xx/base-files/lib/upgrade/dir825.sh +++ /dev/null @@ -1,165 +0,0 @@ -#!/bin/sh -# -# Copyright (C) 2012 OpenWrt.org -# - -. /lib/functions.sh -. /lib/ar71xx.sh - -get_magic_at() { - local mtddev=$1 - local pos=$2 - dd bs=1 count=2 skip=$pos if=$mtddev 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"' -} - -dir825b_is_caldata_valid() { - local mtddev=$1 - local magic - - magic=$(get_magic_at $mtddev 4096) - [ "$magic" != "a55a" ] && return 0 - - magic=$(get_magic_at $mtddev 20480) - [ "$magic" != "a55a" ] && return 0 - - return 1 -} - -dir825b_copy_caldata() { - local cal_src=$1 - local cal_dst=$2 - local mtd_src - local mtd_dst - local md5_src - local md5_dst - - mtd_src=$(find_mtd_part $cal_src) - [ -z "$mtd_src" ] && { - echo "no $cal_src partition found" - return 1 - } - - mtd_dst=$(find_mtd_part $cal_dst) - [ -z "$mtd_dst" ] && { - echo "no $cal_dst partition found" - return 1 - } - - dir825b_is_caldata_valid "$mtd_src" && { - echo "no valid calibration data found in $cal_src" - return 1 - } - - dir825b_is_caldata_valid "$mtd_dst" && { - echo "Copying calibration data from $cal_src to $cal_dst..." - dd if="$mtd_src" 2>/dev/null | mtd -q -q write - "$cal_dst" - } - - md5_src=$(md5sum "$mtd_src") && md5_src="${md5_src%% *}" - md5_dst=$(md5sum "$mtd_dst") && md5_dst="${md5_dst%% *}" - - [ "$md5_src" != "$md5_dst" ] && { - echo "calibration data mismatch $cal_src:$md5_src $cal_dst:$md5_dst" - return 1 - } - - return 0 -} - -dir825b_do_upgrade_combined() { - local fw_part=$1 - local fw_file=$2 - local fw_mtd=$(find_mtd_part $fw_part) - local fw_length=0x$(dd if="$fw_file" bs=2 skip=1 count=4 2>/dev/null) - local fw_blocks=$(($fw_length / 65536)) - - if [ -n "$fw_mtd" ] && [ ${fw_blocks:-0} -gt 0 ]; then - local append="" - [ -f "$UPGRADE_BACKUP" ] && append="-j $UPGRADE_BACKUP" - - sync - dd if="$fw_file" bs=64k skip=1 count=$fw_blocks 2>/dev/null | \ - mtd $append write - "$fw_part" - fi -} - -dir825b_check_image() { - local magic="$(get_magic_long "$1")" - local fw_mtd=$(find_mtd_part "firmware_orig") - - case "$magic" in - "27051956") - ;; - "43493030") - local md5_img=$(dd if="$1" bs=2 skip=9 count=16 2>/dev/null) - local md5_chk=$(dd if="$1" bs=64k skip=1 2>/dev/null | md5sum -); md5_chk="${md5_chk%% *}" - local fw_len=$(dd if="$1" bs=2 skip=1 count=4 2>/dev/null) - local fw_part_len=$(mtd_get_part_size "firmware") - - if [ -z "$fw_mtd" ]; then - ask_bool 0 "Do you have a backup of the caldata partition?" || { - echo "Warning, please make sure that you have a backup of the caldata partition." - echo "Once you have that, use 'sysupgrade -i' for upgrading to the 'fat' firmware." - return 1 - } - fi - - if [ -z "$md5_img" -o -z "$md5_chk" ]; then - echo "Unable to get image checksums. Maybe you are using a streamed image?" - return 1 - fi - - if [ "$md5_img" != "$md5_chk" ]; then - echo "Invalid image. Contents do not match checksum (image:$md5_img calculated:$md5_chk)" - return 1 - fi - - fw_len=$((0x$fw_len)) - fw_part_len=${fw_part_len:-0} - - if [ $fw_part_len -lt $fw_len ]; then - echo "The upgrade image is too big (size:$fw_len available:$fw_part_len)" - return 1 - fi - ;; - *) - echo "Unsupported image format." - return 1 - ;; - esac - - return 0 -} - -platform_do_upgrade_dir825b() { - local magic="$(get_magic_long "$1")" - local fw_mtd=$(find_mtd_part "firmware_orig") - - case "$magic" in - "27051956") - if [ -n "$fw_mtd" ]; then - # restore calibration data before downgrading to - # the normal image - dir825b_copy_caldata "caldata" "caldata_orig" || { - echo "unable to restore calibration data" - exit 1 - } - PART_NAME="firmware_orig" - else - PART_NAME="firmware" - fi - default_do_upgrade "$1" - ;; - "43493030") - if [ -z "$fw_mtd" ]; then - # backup calibration data before upgrading to the - # fat image - dir825b_copy_caldata "caldata" "caldata_copy" || { - echo "unable to backup calibration data" - exit 1 - } - fi - dir825b_do_upgrade_combined "firmware" "$1" - ;; - esac -} diff --git a/target/linux/ar71xx/base-files/lib/upgrade/merakinand.sh b/target/linux/ar71xx/base-files/lib/upgrade/merakinand.sh deleted file mode 100644 index dfc57b23f5..0000000000 --- a/target/linux/ar71xx/base-files/lib/upgrade/merakinand.sh +++ /dev/null @@ -1,165 +0,0 @@ -#!/bin/sh -# -# Copyright (C) 2015-2016 Chris Blake <chrisrblake93@gmail.com> -# -# Custom upgrade script for Meraki NAND devices (ex. MR18) -# Based on dir825.sh and stock nand functions -# -. /lib/ar71xx.sh -. /lib/functions.sh - -get_magic_at() { - local mtddev=$1 - local pos=$2 - dd bs=1 count=2 skip=$pos if=$mtddev 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"' -} - -meraki_is_caldata_valid() { - local board=$1 - local mtddev=$2 - local magic - - case "$board" in - "mr18") - magic=$(get_magic_at $mtddev 4096) - [ "$magic" != "0202" ] && return 0 - - magic=$(get_magic_at $mtddev 20480) - [ "$magic" != "0202" ] && return 0 - - magic=$(get_magic_at $mtddev 36864) - [ "$magic" != "0202" ] && return 0 - - return 1 - ;; - "z1") - magic=$(get_magic_at $mtddev 4096) - [ "$magic" != "0202" ] && return 0 - - magic=$(get_magic_at $mtddev 86016) - [ "$magic" != "a55a" ] && return 0 - - return 1 - ;; - *) - return 1 - ;; - esac -} - -merakinand_copy_caldata() { - local cal_src=$1 - local cal_dst=$2 - local ubidev="$(nand_find_ubi $CI_UBIPART)" - local board_name="$(board_name)" - local rootfs_size="$(ubinfo /dev/ubi0 -N rootfs_data | grep "Size" | awk '{ print $6 }')" - - # Setup partitions using board name, in case of future platforms - case "$board_name" in - "mr18"|\ - "z1") - # Src is MTD - mtd_src="$(find_mtd_chardev $cal_src)" - [ -n "$mtd_src" ] || { - echo "no mtd device found for partition $cal_src" - exit 1 - } - - # Dest is UBI - # TODO: possibly add create (hard to do when rootfs_data is expanded & mounted) - # Would need to be done from ramdisk - mtd_dst="$(nand_find_volume $ubidev $cal_dst)" - [ -n "$mtd_dst" ] || { - echo "no ubi device found for partition $cal_dst" - exit 1 - } - - meraki_is_caldata_valid "$board_name" "$mtd_src" && { - echo "no valid calibration data found in $cal_src" - exit 1 - } - - meraki_is_caldata_valid "$board_name" "/dev/$mtd_dst" && { - echo "Copying calibration data from $cal_src to $cal_dst..." - dd if="$mtd_src" of=/tmp/caldata.tmp 2>/dev/null - ubiupdatevol "/dev/$mtd_dst" /tmp/caldata.tmp - rm /tmp/caldata.tmp - sync - } - return 0 - ;; - *) - echo "Unsupported device $board_name"; - return 1 - ;; - esac -} - -merakinand_do_kernel_check() { - local board_name="$1" - local tar_file="$2" - local image_magic_word=`(tar xf $tar_file sysupgrade-$board_name/kernel -O 2>/dev/null | dd bs=1 count=4 skip=0 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"')` - - # What is our kernel magic string? - case "$board_name" in - "mr18") - [ "$image_magic_word" == "8e73ed8a" ] && { - echo "pass" && return 0 - } - ;; - "z1") - [ "$image_magic_word" == "4d495053" ] && { - echo "pass" && return 0 - } - ;; - esac - - exit 1 -} - -merakinand_do_platform_check() { - local board_name="$1" - local tar_file="$2" - local control_length=`(tar xf $tar_file sysupgrade-$board_name/CONTROL -O | wc -c) 2> /dev/null` - local file_type="$(identify_tar $2 sysupgrade-$board_name/root)" - local kernel_magic="$(merakinand_do_kernel_check $1 $2)" - - case "$board_name" in - "mr18"|\ - "z1") - [ "$control_length" = 0 -o "$file_type" != "squashfs" -o "$kernel_magic" != "pass" ] && { - echo "Invalid sysupgrade file for $board_name" - return 1 - } - ;; - *) - echo "Unsupported device $board_name"; - return 1 - ;; - esac - - return 0 -} - -merakinand_do_upgrade() { - local tar_file="$1" - local board_name="$(board_name)" - - # Do we need to do any platform tweaks? - case "$board_name" in - "mr18") - # Check and create UBI caldata if it's invalid - merakinand_copy_caldata "odm-caldata" "caldata" - nand_do_upgrade $1 - ;; - "z1") - # Check and create UBI caldata if it's invalid - merakinand_copy_caldata "origcaldata" "caldata" - nand_do_upgrade $1 - ;; - *) - echo "Unsupported device $board_name"; - exit 1 - ;; - esac -} diff --git a/target/linux/ar71xx/base-files/lib/upgrade/openmesh.sh b/target/linux/ar71xx/base-files/lib/upgrade/openmesh.sh deleted file mode 100644 index f43bdcea7f..0000000000 --- a/target/linux/ar71xx/base-files/lib/upgrade/openmesh.sh +++ /dev/null @@ -1,232 +0,0 @@ -# The U-Boot loader of the OpenMesh devices requires image sizes and -# checksums to be provided in the U-Boot environment. -# The OpenMesh devices come with 2 main partitions - while one is active -# sysupgrade will flash the other. The boot order is changed to boot the -# newly flashed partition. If the new partition can't be booted due to -# upgrade failures the previously used partition is loaded. - -trim() -{ - echo $1 -} - -cfg_value_get() -{ - local cfg=$1 cfg_opt - local section=$2 our_section=0 - local param=$3 our_param= - - for cfg_opt in $cfg - do - [ "$cfg_opt" = "[$section]" ] && our_section=1 && continue - [ "$our_section" = "1" ] || continue - - our_param=$(echo ${cfg_opt%%=*}) - [ "$param" = "$our_param" ] && echo ${cfg_opt##*=} && break - done -} - -platform_check_image_target_openmesh() -{ - img_board_target="$1" - - case "$img_board_target" in - A60) - [ "$board" = "a40" ] && return 0 - [ "$board" = "a60" ] && return 0 - echo "Invalid image board target ($img_board_target) for this platform: $board. Use the correct image for this platform" - return 1 - ;; - OM2P) - [ "$board" = "om2p" ] && return 0 - [ "$board" = "om2pv2" ] && return 0 - [ "$board" = "om2pv4" ] && return 0 - [ "$board" = "om2p-lc" ] && return 0 - [ "$board" = "om2p-hs" ] && return 0 - [ "$board" = "om2p-hsv2" ] && return 0 - [ "$board" = "om2p-hsv3" ] && return 0 - [ "$board" = "om2p-hsv4" ] && return 0 - echo "Invalid image board target ($img_board_target) for this platform: $board. Use the correct image for this platform" - return 1 - ;; - OM5P) - [ "$board" = "om5p" ] && return 0 - [ "$board" = "om5p-an" ] && return 0 - echo "Invalid image board target ($img_board_target) for this platform: $board. Use the correct image for this platform" - return 1 - ;; - OM5PAC) - [ "$board" = "om5p-ac" ] && return 0 - [ "$board" = "om5p-acv2" ] && return 0 - echo "Invalid image board target ($img_board_target) for this platform: $board. Use the correct image for this platform" - return 1 - ;; - MR1750) - [ "$board" = "mr1750" ] && return 0 - [ "$board" = "mr1750v2" ] && return 0 - echo "Invalid image board target ($img_board_target) for this platform: $board. Use the correct image for this platform" - return 1 - ;; - MR600) - [ "$board" = "mr600" ] && return 0 - [ "$board" = "mr600v2" ] && return 0 - echo "Invalid image board target ($img_board_target) for this platform: $board. Use the correct image for this platform" - return 1 - ;; - MR900) - [ "$board" = "mr900" ] && return 0 - [ "$board" = "mr900v2" ] && return 0 - echo "Invalid image board target ($img_board_target) for this platform: $board. Use the correct image for this platform" - return 1 - ;; - *) - echo "Invalid board target ($img_board_target). Use the correct image for this platform" - return 1 - ;; - esac -} - -platform_check_image_openmesh() -{ - local img_magic=$1 - local img_path=$2 - local fw_printenv=/usr/sbin/fw_printenv - local img_board_target= img_num_files= i=0 - local cfg_name= kernel_name= rootfs_name= - - case "$img_magic" in - # Combined Extended Image v1 - 43453031) - img_board_target=$(trim $(dd if="$img_path" bs=4 skip=1 count=8 2>/dev/null)) - img_num_files=$(trim $(dd if="$img_path" bs=2 skip=18 count=1 2>/dev/null)) - ;; - *) - echo "Invalid image ($img_magic). Use combined extended images on this platform" - return 1 - ;; - esac - - platform_check_image_target_openmesh "$img_board_target" || return 1 - - [ $img_num_files -lt 3 ] && { - echo "Invalid number of embedded images ($img_num_files). Use the correct image for this platform" - return 1 - } - - cfg_name=$(trim $(dd if="$img_path" bs=2 skip=19 count=16 2>/dev/null)) - - [ "$cfg_name" != "fwupgrade.cfg" ] && { - echo "Invalid embedded config file ($cfg_name). Use the correct image for this platform" - return 1 - } - - kernel_name=$(trim $(dd if="$img_path" bs=2 skip=55 count=16 2>/dev/null)) - - [ "$kernel_name" != "kernel" ] && { - echo "Invalid embedded kernel file ($kernel_name). Use the correct image for this platform" - return 1 - } - - rootfs_name=$(trim $(dd if="$img_path" bs=2 skip=91 count=16 2>/dev/null)) - - [ "$rootfs_name" != "rootfs" ] && { - echo "Invalid embedded kernel file ($rootfs_name). Use the correct image for this platform" - return 1 - } - - [ ! -x "$fw_printenv" ] && { - echo "Please install uboot-envtools!" - return 1 - } - - [ ! -r "/etc/fw_env.config" ] && { - echo "/etc/fw_env.config is missing" - return 1 - } - - return 0 -} - -platform_do_upgrade_openmesh() -{ - local img_path=$1 img_board_target= - local kernel_start_addr= kernel_start_addr1= kernel_start_addr2= - local kernel_size= kernel_md5= - local rootfs_size= rootfs_checksize= rootfs_md5= - local kernel_bsize= total_size= - local data_offset=$((64 * 1024)) block_size= offset= - local uboot_env_upgrade="/tmp/fw_env_upgrade" - local cfg_size= kernel_size= rootfs_size= - local append="" - - [ -f "$UPGRADE_BACKUP" ] && append="-j $UPGRADE_BACKUP" - - cfg_size=$(dd if="$img_path" bs=2 skip=35 count=4 2>/dev/null) - kernel_size=$(dd if="$img_path" bs=2 skip=71 count=4 2>/dev/null) - rootfs_size=$(dd if="$img_path" bs=2 skip=107 count=4 2>/dev/null) - - img_board_target=$(trim $(dd if="$img_path" bs=4 skip=1 count=8 2>/dev/null)) - cfg_content=$(dd if="$img_path" bs=1 skip=$data_offset count=$(echo $((0x$cfg_size))) 2>/dev/null) - - case $img_board_target in - OM2P) - block_size=$((256 * 1024)) - total_size=7340032 - kernel_start_addr1=0x9f1c0000 - kernel_start_addr2=0x9f8c0000 - ;; - OM5P|OM5PAC|MR600|MR900|MR1750|A60) - block_size=$((64 * 1024)) - total_size=7995392 - kernel_start_addr1=0x9f0b0000 - kernel_start_addr2=0x9f850000 - ;; - esac - - kernel_md5=$(cfg_value_get "$cfg_content" "vmlinux" "md5sum") - rootfs_md5=$(cfg_value_get "$cfg_content" "rootfs" "md5sum") - rootfs_checksize=$(cfg_value_get "$cfg_content" "rootfs" "checksize") - - if [ "$((0x$kernel_size % $block_size))" = "0" ] - then - kernel_bsize=$(echo $((0x$kernel_size))) - else - kernel_bsize=$((0x$kernel_size + ($block_size - (0x$kernel_size % $block_size)))) - fi - - mtd -q erase inactive - - offset=$(echo $(($data_offset + 0x$cfg_size + 0x$kernel_size))) - dd if="$img_path" bs=1 skip=$offset count=$(echo $((0x$rootfs_size))) 2>&- | mtd -n -p $kernel_bsize $append write - "inactive" - - offset=$(echo $(($data_offset + 0x$cfg_size))) - dd if="$img_path" bs=1 skip=$offset count=$(echo $((0x$kernel_size))) 2>&- | mtd -n write - "inactive" - - rm $uboot_env_upgrade 2>&- - - if [ "$(grep 'mtd3:.*inactive' /proc/mtd)" ] - then - printf "kernel_size_1 %u\n" $(($kernel_bsize / 1024)) >> $uboot_env_upgrade - printf "rootfs_size_1 %u\n" $((($total_size - $kernel_bsize) / 1024)) >> $uboot_env_upgrade - printf "bootseq 1,2\n" >> $uboot_env_upgrade - kernel_start_addr=$kernel_start_addr1 - else - printf "kernel_size_2 %u\n" $(($kernel_bsize / 1024)) >> $uboot_env_upgrade - printf "rootfs_size_2 %u\n" $((($total_size - $kernel_bsize) / 1024)) >> $uboot_env_upgrade - printf "bootseq 2,1\n" >> $uboot_env_upgrade - kernel_start_addr=$kernel_start_addr2 - fi - - printf "vmlinux_start_addr %s\n" $kernel_start_addr >> $uboot_env_upgrade - printf "vmlinux_size 0x%s\n" $kernel_size >> $uboot_env_upgrade - printf "vmlinux_checksum %s\n" $kernel_md5 >> $uboot_env_upgrade - printf "rootfs_start_addr 0x%x\n" $(($kernel_start_addr + $kernel_bsize)) >> $uboot_env_upgrade - printf "rootfs_size %s\n" $rootfs_checksize >> $uboot_env_upgrade - printf "rootfs_checksum %s\n" $rootfs_md5 >> $uboot_env_upgrade - - mkdir -p /var/lock - fw_setenv -s $uboot_env_upgrade || { - echo "failed to update U-Boot environment" - return 1 - } -} diff --git a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh deleted file mode 100755 index 2391a1de8a..0000000000 --- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh +++ /dev/null @@ -1,915 +0,0 @@ -# -# Copyright (C) 2011 OpenWrt.org -# - -. /lib/functions/system.sh -. /lib/ar71xx.sh - -PART_NAME=firmware -RAMFS_COPY_DATA='/lib/ar71xx.sh /etc/fw_env.config /var/lock/fw_printenv.lock' -RAMFS_COPY_BIN='nandwrite fw_printenv fw_setenv' - -CI_BLKSZ=65536 -CI_LDADR=0x80060000 - -PLATFORM_DO_UPGRADE_COMBINED_SEPARATE_MTD=0 - -platform_find_partitions() { - local first dev size erasesize name - while read dev size erasesize name; do - name=${name#'"'}; name=${name%'"'} - case "$name" in - vmlinux.bin.l7|vmlinux|kernel|linux|linux.bin|rootfs|filesystem) - if [ -z "$first" ]; then - first="$name" - else - echo "$erasesize:$first:$name" - break - fi - ;; - esac - done < /proc/mtd -} - -platform_find_kernelpart() { - local part - for part in "${1%:*}" "${1#*:}"; do - case "$part" in - vmlinux.bin.l7|vmlinux|kernel|linux|linux.bin) - echo "$part" - break - ;; - esac - done -} - -platform_find_rootfspart() { - local part - for part in "${1%:*}" "${1#*:}"; do - [ "$part" != "$2" ] && echo "$part" && break - done -} - -platform_do_upgrade_combined() { - local partitions=$(platform_find_partitions) - local kernelpart=$(platform_find_kernelpart "${partitions#*:}") - local erase_size=$((0x${partitions%%:*})); partitions="${partitions#*:}" - local kern_length=0x$(dd if="$1" bs=2 skip=1 count=4 2>/dev/null) - local kern_blocks=$(($kern_length / $CI_BLKSZ)) - local root_blocks=$((0x$(dd if="$1" bs=2 skip=5 count=4 2>/dev/null) / $CI_BLKSZ)) - - if [ -n "$partitions" ] && [ -n "$kernelpart" ] && \ - [ ${kern_blocks:-0} -gt 0 ] && \ - [ ${root_blocks:-0} -gt 0 ] && \ - [ ${erase_size:-0} -gt 0 ]; - then - local rootfspart=$(platform_find_rootfspart "$partitions" "$kernelpart") - local append="" - [ -f "$UPGRADE_BACKUP" ] && append="-j $UPGRADE_BACKUP" - - if [ "$PLATFORM_DO_UPGRADE_COMBINED_SEPARATE_MTD" -ne 1 ]; then - ( dd if="$1" bs=$CI_BLKSZ skip=1 count=$kern_blocks 2>/dev/null; \ - dd if="$1" bs=$CI_BLKSZ skip=$((1+$kern_blocks)) count=$root_blocks 2>/dev/null ) | \ - mtd -r $append -F$kernelpart:$kern_length:$CI_LDADR,rootfs write - $partitions - elif [ -n "$rootfspart" ]; then - dd if="$1" bs=$CI_BLKSZ skip=1 count=$kern_blocks 2>/dev/null | \ - mtd write - $kernelpart - dd if="$1" bs=$CI_BLKSZ skip=$((1+$kern_blocks)) count=$root_blocks 2>/dev/null | \ - mtd -r $append write - $rootfspart - fi - fi - PLATFORM_DO_UPGRADE_COMBINED_SEPARATE_MTD=0 -} - -tplink_get_image_hwid() { - get_image "$@" | dd bs=4 count=1 skip=16 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"' -} - -tplink_get_image_mid() { - get_image "$@" | dd bs=4 count=1 skip=17 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"' -} - -tplink_get_image_boot_size() { - get_image "$@" | dd bs=4 count=1 skip=37 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"' -} - -tplink_pharos_check_support_list() { - local image="$1" - local offset="$2" - local model="$3" - local trargs="$4" - - # Here $image is given to dd directly instead of using get_image; - # otherwise the skip will take almost a second (as dd can't seek) - dd if="$image" bs=1 skip=$offset count=1024 2>/dev/null | tr -d "$trargs" | ( - while IFS= read -r line; do - [ "$line" = "$model" ] && exit 0 - done - - exit 1 - ) -} - -tplink_pharos_check_image() { - local image_magic="$(get_magic_long "$1")" - local board_magic="$2" - [ "$image_magic" != "$board_magic" ] && { - echo "Invalid image magic '$image_magic'. Expected '$board_magic'." - return 1 - } - - local model_string="$3" - local trargs="$4" - - # New images have the support list at 7802888, old ones at 1511432 - tplink_pharos_check_support_list "$1" 7802888 "$model_string" "$trargs" || \ - tplink_pharos_check_support_list "$1" 1511432 "$model_string" "$trargs" || { - echo "Unsupported image (model not in support-list)" - return 1 - } - - return 0 -} - -seama_get_type_magic() { - get_image "$@" | dd bs=1 count=4 skip=53 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"' -} - -wrgg_get_image_magic() { - get_image "$@" | dd bs=4 count=1 skip=8 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"' -} - -cybertan_get_image_magic() { - get_image "$@" | dd bs=8 count=1 skip=0 2>/dev/null | hexdump -v -n 8 -e '1/1 "%02x"' -} - -cybertan_check_image() { - local magic="$(cybertan_get_image_magic "$1")" - local fw_magic="$(cybertan_get_hw_magic)" - - [ "$fw_magic" != "$magic" ] && { - echo "Invalid image, ID mismatch, got:$magic, but need:$fw_magic" - return 1 - } - - return 0 -} - -platform_do_upgrade_compex() { - local fw_file=$1 - local fw_part=$PART_NAME - local fw_mtd=$(find_mtd_part $fw_part) - local fw_length=0x$(dd if="$fw_file" bs=2 skip=1 count=4 2>/dev/null) - local fw_blocks=$(($fw_length / 65536)) - - if [ -n "$fw_mtd" ] && [ ${fw_blocks:-0} -gt 0 ]; then - local append="" - [ -f "$UPGRADE_BACKUP" ] && append="-j $UPGRADE_BACKUP" - - sync - dd if="$fw_file" bs=64k skip=1 count=$fw_blocks 2>/dev/null | \ - mtd $append write - "$fw_part" - fi -} - -alfa_check_image() { - local magic_long="$(get_magic_long "$1")" - local fw_part_size=$(mtd_get_part_size firmware) - - case "$magic_long" in - "27051956") - [ "$fw_part_size" != "16318464" ] && { - echo "Invalid image magic \"$magic_long\" for $fw_part_size bytes" - return 1 - } - ;; - "68737173") - [ "$fw_part_size" != "7929856" ] && { - echo "Invalid image magic \"$magic_long\" for $fw_part_size bytes" - return 1 - } - ;; - esac - - return 0 -} - -platform_check_image() { - local board=$(board_name) - local magic="$(get_magic_word "$1")" - local magic_long="$(get_magic_long "$1")" - - [ "$#" -gt 1 ] && return 1 - - case "$board" in - airgateway|\ - airgatewaypro|\ - airrouter|\ - ap121f|\ - ap132|\ - ap531b0|\ - ap90q|\ - archer-c25-v1|\ - archer-c58-v1|\ - archer-c59-v1|\ - archer-c59-v2|\ - archer-c60-v1|\ - archer-c60-v2|\ - archer-c7-v4|\ - archer-c7-v5|\ - arduino-yun|\ - bullet-m|\ - bullet-m-xw|\ - c-55|\ - carambola2|\ - cf-e316n-v2|\ - cf-e320n-v2|\ - cf-e355ac-v1|\ - cf-e355ac-v2|\ - cf-e375ac|\ - cf-e380ac-v1|\ - cf-e380ac-v2|\ - cf-e385ac|\ - cf-e520n|\ - cf-e530n|\ - cpe505n|\ - cpe830|\ - cpe870|\ - dap-1330-a1|\ - dgl-5500-a1|\ - dhp-1565-a1|\ - dir-505-a1|\ - dir-600-a1|\ - dir-615-c1|\ - dir-615-e1|\ - dir-615-e4|\ - dir-615-i1|\ - dir-825-c1|\ - dir-835-a1|\ - dlan-hotspot|\ - dlan-pro-1200-ac|\ - dlan-pro-500-wp|\ - dr342|\ - dr531|\ - dragino2|\ - e1700ac-v2|\ - e558-v2|\ - e600g-v2|\ - e600gac-v2|\ - e750a-v4|\ - e750g-v8|\ - ebr-2310-c1|\ - ens202ext|\ - epg5000|\ - esr1750|\ - esr900|\ - ew-balin|\ - ew-dorin|\ - ew-dorin-router|\ - gl-ar150|\ - gl-ar300m|\ - gl-ar300|\ - gl-ar750|\ - gl-ar750s|\ - gl-domino|\ - gl-mifi|\ - gl-usb150|\ - hiwifi-hc6361|\ - hornet-ub-x2|\ - jwap230|\ - lbe-m5|\ - lima|\ - loco-m-xw|\ - mzk-w04nu|\ - mzk-w300nh|\ - n5q|\ - nanostation-m|\ - nanostation-m-xw|\ - nbg460n_550n_550nh|\ - pqi-air-pen|\ - r36a|\ - r602n|\ - rme-eg200|\ - rocket-m|\ - rocket-m-ti|\ - rocket-m-xw|\ - rw2458n|\ - sc1750|\ - sc300m|\ - sc450|\ - sr3200|\ - t830|\ - tew-632brp|\ - tew-712br|\ - tew-732br|\ - tew-823dru|\ - tl-wr1043n-v5|\ - tl-wr942n-v1|\ - unifi|\ - unifi-outdoor|\ - unifiac-lite|\ - unifiac-pro|\ - wam250|\ - weio|\ - whr-g301n|\ - whr-hp-g300n|\ - whr-hp-gn|\ - wlae-ag300n|\ - wndap360|\ - wpj342|\ - wpj344|\ - wpj531|\ - wpj558|\ - wpj563|\ - wrt400n|\ - wrtnode2q|\ - wzr-450hp2|\ - wzr-hp-ag300h|\ - wzr-hp-g300nh|\ - wzr-hp-g300nh2|\ - wzr-hp-g450h|\ - xd3200) - [ "$magic" != "2705" ] && { - echo "Invalid image type." - return 1 - } - - return 0 - ;; - alfa-ap96|\ - alfa-nx|\ - ap121|\ - ap121-mini|\ - ap135-020|\ - ap136-010|\ - ap136-020|\ - ap147-010|\ - ap152|\ - ap91-5g|\ - ap96|\ - bhr-4grv2|\ - bxu2000n-2-a1|\ - db120|\ - dr344|\ - dw33d|\ - f9k1115v2|\ - hornet-ub|\ - mr12|\ - mr16|\ - zbt-we1526|\ - zcn-1523h-2|\ - zcn-1523h-5) - [ "$magic_long" != "68737173" -a "$magic_long" != "19852003" ] && { - echo "Invalid image type." - return 1 - } - - return 0 - ;; - all0258n|\ - all0315n|\ - cap324|\ - cap4200ag|\ - cr3000|\ - cr5000) - platform_check_image_allnet "$1" && return 0 - return 1 - ;; - all0305|\ - eap300v2|\ - eap7660d|\ - ja76pf|\ - ja76pf2|\ - jwap003|\ - ls-sr71|\ - pb42|\ - pb44|\ - routerstation|\ - routerstation-pro|\ - wp543|\ - wpe72) - [ "$magic" != "4349" ] && { - echo "Invalid image. Use *-sysupgrade.bin files on this board" - return 1 - } - - local md5_img=$(dd if="$1" bs=2 skip=9 count=16 2>/dev/null) - local md5_chk=$(fwtool -q -t -i /dev/null "$1"; dd if="$1" bs=$CI_BLKSZ skip=1 2>/dev/null | md5sum -); md5_chk="${md5_chk%% *}" - - if [ -n "$md5_img" -a -n "$md5_chk" ] && [ "$md5_img" = "$md5_chk" ]; then - return 0 - else - echo "Invalid image. Contents do not match checksum (image:$md5_img calculated:$md5_chk)" - return 1 - fi - - return 0 - ;; - antminer-s1|\ - antminer-s3|\ - antrouter-r1|\ - archer-c5|\ - archer-c7|\ - el-m150|\ - el-mini|\ - gl-inet|\ - lan-turtle|\ - mc-mac1200r|\ - minibox-v1|\ - minibox-v3.2|\ - omy-g1|\ - omy-x1|\ - onion-omega|\ - oolite-v1|\ - oolite-v5.2|\ - oolite-v5.2-dev|\ - packet-squirrel|\ - re355|\ - re450|\ - rut900|\ - smart-300|\ - som9331|\ - tellstick-znet-lite|\ - tl-mr10u|\ - tl-mr11u|\ - tl-mr12u|\ - tl-mr13u|\ - tl-mr3020|\ - tl-mr3040|\ - tl-mr3040-v2|\ - tl-mr3220|\ - tl-mr3220-v2|\ - tl-mr3420|\ - tl-mr3420-v2|\ - tl-mr6400|\ - tl-wa701nd-v2|\ - tl-wa7210n-v2|\ - tl-wa750re|\ - tl-wa7510n|\ - tl-wa801nd-v2|\ - tl-wa801nd-v3|\ - tl-wa830re-v2|\ - tl-wa850re|\ - tl-wa850re-v2|\ - tl-wa855re-v1|\ - tl-wa860re|\ - tl-wa901nd|\ - tl-wa901nd-v2|\ - tl-wa901nd-v3|\ - tl-wa901nd-v4|\ - tl-wa901nd-v5|\ - tl-wdr3320-v2|\ - tl-wdr3500|\ - tl-wdr4300|\ - tl-wdr4900-v2|\ - tl-wdr6500-v2|\ - tl-wpa8630|\ - tl-wr1041n-v2|\ - tl-wr1043nd|\ - tl-wr1043nd-v2|\ - tl-wr1043nd-v4|\ - tl-wr2543n|\ - tl-wr703n|\ - tl-wr710n|\ - tl-wr720n-v3|\ - tl-wr740n-v6|\ - tl-wr741nd|\ - tl-wr741nd-v4|\ - tl-wr802n-v1|\ - tl-wr802n-v2|\ - tl-wr810n|\ - tl-wr810n-v2|\ - tl-wr840n-v2|\ - tl-wr840n-v3|\ - tl-wr841n-v1|\ - tl-wr841n-v7|\ - tl-wr841n-v8|\ - tl-wr841n-v9|\ - tl-wr841n-v11|\ - tl-wr842n-v2|\ - tl-wr842n-v3|\ - tl-wr902ac-v1|\ - tl-wr940n-v4|\ - tl-wr940n-v6|\ - tl-wr941nd|\ - tl-wr941nd-v5|\ - tl-wr941nd-v6|\ - ts-d084|\ - wifi-pineapple-nano) - local magic_ver="0100" - - case "$board" in - tl-wdr3320-v2|tl-wdr6500-v2) - magic_ver="0200" - ;; - esac - - [ "$magic" != "$magic_ver" ] && { - echo "Invalid image type." - return 1 - } - - local hwid - local mid - local imagehwid - local imagemid - - hwid=$(tplink_get_hwid) - mid=$(tplink_get_mid) - imagehwid=$(tplink_get_image_hwid "$1") - imagemid=$(tplink_get_image_mid "$1") - - [ "$hwid" != "$imagehwid" -o "$mid" != "$imagemid" ] && { - echo "Invalid image, hardware ID mismatch, hw:$hwid $mid image:$imagehwid $imagemid." - return 1 - } - - local boot_size - - boot_size=$(tplink_get_image_boot_size "$1") - [ "$boot_size" != "00000000" ] && { - echo "Invalid image, it contains a bootloader." - return 1 - } - - return 0 - ;; - bsb|\ - dir-825-b1|\ - tew-673gru) - dir825b_check_image "$1" && return 0 - ;; - rb-411|\ - rb-411u|\ - rb-433|\ - rb-433u|\ - rb-435g|\ - rb-450|\ - rb-450g|\ - rb-493|\ - rb-493g|\ - rb-750|\ - rb-750gl|\ - rb-751|\ - rb-751g|\ - rb-911g-2hpnd|\ - rb-911g-5hpnd|\ - rb-911g-5hpacd|\ - rb-912uag-2hpnd|\ - rb-912uag-5hpnd|\ - rb-921gs-5hpacd-r2|\ - rb-922uags-5hpacd|\ - rb-951g-2hnd|\ - rb-951ui-2hnd|\ - rb-2011l|\ - rb-2011il|\ - rb-2011ils|\ - rb-2011uas|\ - rb-2011uas-2hnd|\ - rb-2011uias|\ - rb-2011uias-2hnd|\ - rb-2011uias-2hnd-r2|\ - rb-sxt2n|\ - rb-sxt5n) - nand_do_platform_check routerboard $1 - return $? - ;; - c-60|\ - hiveap-121|\ - nbg6716|\ - r6100|\ - rambutan|\ - wi2a-ac200i|\ - wndr3700v4|\ - wndr4300) - nand_do_platform_check $board $1 - return $? - ;; - cpe210|\ - cpe510|\ - eap120|\ - wbs210|\ - wbs510) - tplink_pharos_check_image "$1" "7f454c46" "$(tplink_pharos_get_model_string)" '' && return 0 - return 1 - ;; - cpe210-v2|\ - cpe210-v3) - tplink_pharos_check_image "$1" "01000000" "$(tplink_pharos_v2_get_model_string)" '\0\xff\r' && return 0 - return 1 - ;; - cpe510-v2) - tplink_pharos_check_image "$1" "7f454c46" "$(tplink_pharos_v2_get_model_string)" '\0\xff\r' && return 0 - return 1 - ;; - a40|\ - a60|\ - mr1750|\ - mr1750v2|\ - mr600|\ - mr600v2|\ - mr900|\ - mr900v2|\ - om2p|\ - om2p-hs|\ - om2p-hsv2|\ - om2p-hsv3|\ - om2p-hsv4|\ - om2p-lc|\ - om2pv2|\ - om2pv4|\ - om5p|\ - om5p-ac|\ - om5p-acv2|\ - om5p-an) - platform_check_image_openmesh "$magic_long" "$1" && return 0 - return 1 - ;; - mr18|\ - z1) - merakinand_do_platform_check $board $1 - return $? - ;; - dir-869-a1|\ - mynet-n600|\ - mynet-n750|\ - qihoo-c301) - [ "$magic_long" != "5ea3a417" ] && { - echo "Invalid image, bad magic: $magic_long" - return 1 - } - - local typemagic=$(seama_get_type_magic "$1") - [ "$typemagic" != "6669726d" ] && { - echo "Invalid image, bad type: $typemagic" - return 1 - } - - return 0 - ;; - e2100l|\ - mynet-rext|\ - wrt160nl) - cybertan_check_image "$1" && return 0 - return 1 - ;; - nbg6616|\ - uap-pro|\ - unifi-outdoor-plus) - [ "$magic_long" != "19852003" ] && { - echo "Invalid image type." - return 1 - } - - return 0 - ;; - tube2h) - alfa_check_image "$1" && return 0 - return 1 - ;; - wndr3700|\ - wnr1000-v2|\ - wnr2000-v3|\ - wnr612-v2|\ - wpn824n) - local hw_magic - - hw_magic="$(ar71xx_get_mtd_part_magic firmware)" - [ "$magic_long" != "$hw_magic" ] && { - echo "Invalid image, hardware ID mismatch, hw:$hw_magic image:$magic_long." - return 1 - } - - return 0 - ;; - wnr2000-v4) - [ "$magic_long" != "32303034" ] && { - echo "Invalid image type." - return 1 - } - - return 0 - ;; - wnr2200) - [ "$magic_long" != "32323030" ] && { - echo "Invalid image type." - return 1 - } - - return 0 - ;; - dap-2695-a1) - local magic=$(wrgg_get_image_magic "$1") - [ "$magic" != "21030820" ] && { - echo "Invalid image, bad type: $magic" - return 1 - } - - return 0; - ;; - # these boards use metadata images - fritz300e|\ - fritz4020|\ - fritz450e|\ - koala|\ - rb-750-r2|\ - rb-750p-pbr2|\ - rb-750up-r2|\ - rb-911-2hn|\ - rb-911-5hn|\ - rb-931-2nd|\ - rb-941-2nd|\ - rb-951ui-2nd|\ - rb-952ui-5ac2nd|\ - rb-962uigs-5hact2hnt|\ - rb-lhg-5nd|\ - rb-map-2nd|\ - rb-mapl-2nd|\ - rb-sxt-2nd-r3|\ - rb-wap-2nd|\ - rb-wapg-5hact2hnd|\ - rb-wapr-2nd) - return 0 - ;; - esac - - echo "Sysupgrade is not yet supported on $board." - return 1 -} - -platform_do_upgrade_mikrotik_rb() { - CI_KERNPART=none - local fw_mtd=$(find_mtd_part kernel) - fw_mtd="${fw_mtd/block/}" - [ -n "$fw_mtd" ] || return - - local board_dir=$(tar tf "$1" | grep -m 1 '^sysupgrade-.*/$') - board_dir=${board_dir%/} - [ -n "$board_dir" ] || return - - mtd erase kernel - tar xf "$1" ${board_dir}/kernel -O | nandwrite -o "$fw_mtd" - - - nand_do_upgrade "$1" -} - -platform_do_upgrade_nokia() { - case "$(fw_printenv -n dualPartition)" in - imgA) - fw_setenv dualPartition imgB - fw_setenv ActImg NokiaImageB - ;; - imgB) - fw_setenv dualPartition imgA - fw_setenv ActImg NokiaImageA - ;; - esac - ubiblock -r /dev/ubiblock0_0 2>/dev/null >/dev/null - rm -f /dev/ubiblock0_0 - ubidetach -d 0 2>/dev/null >/dev/null - CI_UBIPART=ubi_alt - CI_KERNPART=kernel_alt - - nand_do_upgrade "$1" -} - -platform_do_upgrade() { - local board=$(board_name) - - case "$board" in - rb-750-r2|\ - rb-750p-pbr2|\ - rb-750up-r2|\ - rb-911-2hn|\ - rb-911-5hn|\ - rb-931-2nd|\ - rb-941-2nd|\ - rb-951ui-2nd|\ - rb-952ui-5ac2nd|\ - rb-962uigs-5hact2hnt|\ - rb-lhg-5nd|\ - rb-map-2nd|\ - rb-mapl-2nd|\ - rb-sxt-2nd-r3|\ - rb-wap-2nd|\ - rb-wapg-5hact2hnd|\ - rb-wapr-2nd) - # erase firmware if booted from initramfs - [ -z "$(rootfs_type)" ] && mtd erase firmware - ;; - esac - - case "$board" in - all0258n) - platform_do_upgrade_allnet "0x9f050000" "$1" - ;; - all0305|\ - eap7660d|\ - ja76pf|\ - ja76pf2|\ - jwap003|\ - ls-sr71|\ - pb42|\ - pb44|\ - routerstation|\ - routerstation-pro) - platform_do_upgrade_combined "$1" - ;; - all0315n) - platform_do_upgrade_allnet "0x9f080000" "$1" - ;; - cap4200ag|\ - eap300v2|\ - ens202ext) - platform_do_upgrade_allnet "0xbf0a0000" "$1" - ;; - dir-825-b1|\ - tew-673gru) - platform_do_upgrade_dir825b "$1" - ;; - a40|\ - a60|\ - mr1750|\ - mr1750v2|\ - mr600|\ - mr600v2|\ - mr900|\ - mr900v2|\ - om2p|\ - om2p-hs|\ - om2p-hsv2|\ - om2p-hsv3|\ - om2p-hsv4|\ - om2p-lc|\ - om2pv2|\ - om2pv4|\ - om5p|\ - om5p-ac|\ - om5p-acv2|\ - om5p-an) - platform_do_upgrade_openmesh "$1" - ;; - c-60|\ - hiveap-121|\ - nbg6716|\ - r6100|\ - rambutan|\ - wndr3700v4|\ - wndr4300) - nand_do_upgrade "$1" - ;; - mr18|\ - z1) - merakinand_do_upgrade "$1" - ;; - rb-411|\ - rb-411u|\ - rb-433|\ - rb-433u|\ - rb-435g|\ - rb-450|\ - rb-450g|\ - rb-493|\ - rb-493g|\ - rb-750|\ - rb-750gl|\ - rb-751|\ - rb-751g|\ - rb-911g-2hpnd|\ - rb-911g-5hpacd|\ - rb-911g-5hpnd|\ - rb-912uag-2hpnd|\ - rb-912uag-5hpnd|\ - rb-921gs-5hpacd-r2|\ - rb-922uags-5hpacd|\ - rb-951g-2hnd|\ - rb-951ui-2hnd|\ - rb-2011il|\ - rb-2011ils|\ - rb-2011l|\ - rb-2011uas|\ - rb-2011uas-2hnd|\ - rb-2011uias|\ - rb-2011uias-2hnd|\ - rb-2011uias-2hnd-r2|\ - rb-sxt2n|\ - rb-sxt5n) - platform_do_upgrade_mikrotik_rb "$1" - ;; - uap-pro|\ - unifi-outdoor-plus) - MTD_CONFIG_ARGS="-s 0x180000" - default_do_upgrade "$1" - ;; - wi2a-ac200i) - platform_do_upgrade_nokia "$1" - ;; - wp543|\ - wpe72) - platform_do_upgrade_compex "$1" - ;; - *) - default_do_upgrade "$1" - ;; - esac -} |