X-Git-Url: http://git.openwrt.org/?a=blobdiff_plain;f=target%2Flinux%2Far71xx%2Fbase-files%2Flib%2Fupgrade%2Fplatform.sh;h=36ee082e5e67dd32a8412713811cce673e477e18;hb=refs%2Fheads%2Fcpe210v2;hp=887a0f0c1ea6d545a0426fbf85ac84f026d865c0;hpb=e33dcd1cfe105cb0e1ad09887144e4911eac653f;p=openwrt%2Fstaging%2Flynxis.git diff --git a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh index 887a0f0c1e..36ee082e5e 100755 --- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh +++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh @@ -7,10 +7,13 @@ PART_NAME=firmware RAMFS_COPY_DATA=/lib/ar71xx.sh +RAMFS_COPY_BIN='nandwrite' 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 @@ -40,6 +43,13 @@ platform_find_kernelpart() { 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#*:}") @@ -53,13 +63,22 @@ platform_do_upgrade_combined() { [ ${root_blocks:-0} -gt 0 ] && \ [ ${erase_size:-0} -gt 0 ]; then + local rootfspart=$(platform_find_rootfspart "$partitions" "$kernelpart") local append="" [ -f "$CONF_TAR" -a "$SAVE_CONFIG" -eq 1 ] && append="-j $CONF_TAR" - ( 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 + 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() { @@ -75,9 +94,10 @@ tplink_get_image_boot_size() { } tplink_pharos_check_image() { - local magic_long="$(get_magic_long "$1")" - [ "$magic_long" != "7f454c46" ] && { - echo "Invalid image magic '$magic_long'" + 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 } @@ -91,8 +111,8 @@ tplink_pharos_check_image() { # read loop won't be executed at all, it will return true, so the image # is accepted (loading the first 1.5M of a remote image for this check seems # a bit extreme) - dd if="$1" bs=1 skip=1511432 count=1024 2>/dev/null | while read line; do - [ "$line" == "$model_string" ] && break + dd if="$1" bs=1 skip=1511432 count=1024 2>/dev/null | tr -d '\0\xff\r' | while read line; do + [ "$line" = "$model_string" ] && break done || { echo "Unsupported image (model not in support-list)" return 1 @@ -164,8 +184,17 @@ alfa_check_image() { return 0 } +platform_nand_board_name() { + local board=$(board_name) + + case "$board" in + rb*) echo "routerboard";; + *) echo "$board";; + esac +} + platform_check_image() { - local board=$(ar71xx_board_name) + local board=$(board_name) local magic="$(get_magic_word "$1")" local magic_long="$(get_magic_long "$1")" @@ -175,19 +204,25 @@ platform_check_image() { airgatewaypro|\ airgateway|\ airrouter|\ + ap121f|\ ap132|\ - ap81|\ - ap83|\ + ap531b0|\ ap90q|\ + archer-c25-v1|\ + archer-c58-v1|\ + archer-c59-v1|\ + archer-c60-v1|\ bullet-m|\ c-55|\ carambola2|\ cf-e316n-v2|\ cf-e320n-v2|\ + cf-e355ac|\ cf-e380ac-v1|\ cf-e380ac-v2|\ cf-e520n|\ cf-e530n|\ + cpe505n|\ cpe830|\ cpe870|\ dgl-5500-a1|\ @@ -205,6 +240,8 @@ platform_check_image() { dlan-pro-500-wp|\ dr531|\ dragino2|\ + ebr-2310-c1|\ + ens202ext|\ epg5000|\ esr1750|\ esr900|\ @@ -215,23 +252,32 @@ platform_check_image() { gl-ar300|\ gl-domino|\ gl-mifi|\ + gl-usb150|\ hiwifi-hc6361|\ hornet-ub-x2|\ jwap230|\ + lima|\ loco-m-xw|\ mzk-w04nu|\ mzk-w300nh|\ nanostation-m-xw|\ nanostation-m|\ nbg460n_550n_550nh|\ + pqi-air-pen|\ + r602n|\ rocket-m-ti|\ rocket-m-xw|\ rocket-m|\ rw2458n|\ + sc1750|\ + sc300m|\ + sc450|\ + sr3200|\ tew-632brp|\ tew-712br|\ tew-732br|\ tew-823dru|\ + tl-wr942n-v1|\ unifi-outdoor|\ unifiac-lite|\ unifiac-pro|\ @@ -245,13 +291,16 @@ platform_check_image() { wpj342|\ wpj344|\ wpj531|\ + wpj558|\ + wpj563|\ wrt400n|\ wrtnode2q|\ wzr-450hp2|\ wzr-hp-ag300h|\ wzr-hp-g300nh2|\ wzr-hp-g300nh|\ - wzr-hp-g450h) + wzr-hp-g450h|\ + xd3200) [ "$magic" != "2705" ] && { echo "Invalid image type." return 1 @@ -261,7 +310,6 @@ platform_check_image() { ;; alfa-ap96|\ alfa-nx|\ - ap113|\ ap121-mini|\ ap121|\ ap135-020|\ @@ -280,7 +328,6 @@ platform_check_image() { hornet-ub|\ mr12|\ mr16|\ - wpj558|\ zbt-we1526|\ zcn-1523h-2|\ zcn-1523h-5) @@ -344,6 +391,7 @@ platform_check_image() { omy-x1|\ onion-omega|\ oolite|\ + re450|\ smart-300|\ som9331|\ tellstick-znet-lite|\ @@ -358,13 +406,17 @@ platform_check_image() { tl-mr3220|\ tl-mr3420-v2|\ tl-mr3420|\ + 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-v2|\ tl-wa901nd-v3|\ @@ -378,15 +430,20 @@ platform_check_image() { tl-wpa8630|\ tl-wr1041n-v2|\ tl-wr1043nd-v2|\ + tl-wr1043nd-v4|\ tl-wr1043nd|\ tl-wr2543n|\ tl-wr703n|\ tl-wr710n|\ tl-wr720n-v3|\ + tl-wr740n-v6|\ tl-wr741nd-v4|\ tl-wr741nd|\ tl-wr802n-v1|\ + tl-wr802n-v2|\ tl-wr810n|\ + tl-wr840n-v2|\ + tl-wr840n-v3|\ tl-wr841n-v11|\ tl-wr841n-v1|\ tl-wr841n-v7|\ @@ -394,8 +451,10 @@ platform_check_image() { tl-wr841n-v9|\ tl-wr842n-v2|\ tl-wr842n-v3|\ + tl-wr902ac-v1|\ tl-wr941nd-v5|\ tl-wr941nd-v6|\ + tl-wr940n-v4|\ tl-wr941nd) local magic_ver="0100" @@ -440,9 +499,42 @@ platform_check_image() { 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-951g-2hnd|\ + rb-951ui-2hnd|\ + rb-2011l|\ + rb-2011il|\ + rb-2011uas|\ + rb-2011uias|\ + rb-2011uas-2hnd|\ + rb-2011uias-2hnd|\ + rb-sxt2n|\ + rb-sxt5n) + nand_do_platform_check routerboard $1 + return $? + ;; c-60|\ + hiveap-121|\ nbg6716|\ r6100|\ + rambutan|\ wndr3700v4|\ wndr4300) nand_do_platform_check $board $1 @@ -450,10 +542,21 @@ platform_check_image() { ;; cpe210|\ cpe510|\ - eap120) - tplink_pharos_check_image "$1" && return 0 + eap120|\ + wbs210|\ + wbs510) + # magic = .ELF + tplink_pharos_check_image "$1" "7f454c46" && return 0 + return 1 + ;; + cpe210v2|\ + cpe510v2) + # magic = mktplinkfw v1 header + tplink_pharos_check_image "$1" "01000000" && return 0 return 1 ;; + a40|\ + a60|\ mr1750v2|\ mr1750|\ mr600v2|\ @@ -462,9 +565,11 @@ platform_check_image() { mr900|\ om2p-hsv2|\ om2p-hsv3|\ + om2p-hsv4|\ om2p-hs|\ om2p-lc|\ om2pv2|\ + om2pv4|\ om2p|\ om5p-acv2|\ om5p-ac|\ @@ -495,6 +600,7 @@ platform_check_image() { return 0 ;; + e2100l|\ mynet-rext|\ wrt160nl) cybertan_check_image "$1" && return 0 @@ -554,6 +660,18 @@ platform_check_image() { return 0; ;; + # these boards use metadata images + fritz300e|\ + rb-750-r2|\ + rb-750up-r2|\ + rb-941-2nd|\ + rb-951ui-2nd|\ + rb-952ui-5ac2nd|\ + rb-962uigs-5hact2hnt|\ + rb-lhg-5nd|\ + rb-mapl-2nd) + return 0 + ;; esac echo "Sysupgrade is not yet supported on $board." @@ -561,16 +679,57 @@ platform_check_image() { } platform_pre_upgrade() { - local board=$(ar71xx_board_name) + local board=$(board_name) case "$board" in c-60|\ + hiveap-121|\ nbg6716|\ r6100|\ + rambutan|\ + 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-951g-2hnd|\ + rb-951ui-2hnd|\ + rb-2011il|\ + rb-2011l|\ + rb-2011uas|\ + rb-2011uias|\ + rb-2011uas-2hnd|\ + rb-2011uias-2hnd|\ + rb-sxt2n|\ + rb-sxt5n|\ wndr3700v4|\ wndr4300) nand_do_upgrade "$1" ;; + rb-750-r2|\ + rb-750up-r2|\ + rb-941-2nd|\ + rb-951ui-2nd|\ + rb-952ui-5ac2nd|\ + rb-962uigs-5hact2hnt|\ + rb-lhg-5nd|\ + rb-mapl-2nd) + # erase firmware if booted from initramfs + [ -z "$(rootfs_type)" ] && mtd erase firmware + ;; mr18|\ z1) merakinand_do_upgrade "$1" @@ -578,8 +737,23 @@ platform_pre_upgrade() { esac } +platform_nand_pre_upgrade() { + local board=$(board_name) + + case "$board" in + rb*) + CI_KERNPART=none + local fw_mtd=$(find_mtd_part kernel) + fw_mtd="${fw_mtd/block/}" + [ -n "$fw_mtd" ] || return + mtd erase kernel + tar xf "$1" sysupgrade-routerboard/kernel -O | nandwrite -o "$fw_mtd" - + ;; + esac +} + platform_do_upgrade() { - local board=$(ar71xx_board_name) + local board=$(board_name) case "$board" in all0258n) @@ -601,13 +775,16 @@ platform_do_upgrade() { platform_do_upgrade_allnet "0x9f080000" "$ARGV" ;; cap4200ag|\ - eap300v2) + eap300v2|\ + ens202ext) platform_do_upgrade_allnet "0xbf0a0000" "$ARGV" ;; dir-825-b1|\ tew-673gru) platform_do_upgrade_dir825b "$ARGV" ;; + a40|\ + a60|\ mr1750v2|\ mr1750|\ mr600v2|\ @@ -616,9 +793,11 @@ platform_do_upgrade() { mr900|\ om2p-hsv2|\ om2p-hsv3|\ + om2p-hsv4|\ om2p-hs|\ om2p-lc|\ om2pv2|\ + om2pv4|\ om2p|\ om5p-acv2|\ om5p-ac|\