diff options
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 -} |