X-Git-Url: http://git.openwrt.org/?p=openwrt%2Fopenwrt.git;a=blobdiff_plain;f=target%2Flinux%2Far71xx%2Fbase-files%2Flib%2Fupgrade%2Fplatform.sh;h=e2bd946d29b0223478b3f404870e26a81a676154;hp=ecf6820a2b7cc53978990b50fa04d1ddb3eb146c;hb=3d840ee798d44855c5cecfdce489fb1af991c50c;hpb=82626cc145610b8b6485d650693629ef0b943505 diff --git a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh index ecf6820a2b..e2bd946d29 100755 --- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh +++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh @@ -6,8 +6,8 @@ . /lib/ar71xx.sh PART_NAME=firmware -RAMFS_COPY_DATA=/lib/ar71xx.sh -RAMFS_COPY_BIN='nandwrite' +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 @@ -65,7 +65,7 @@ platform_do_upgrade_combined() { then local rootfspart=$(platform_find_rootfspart "$partitions" "$kernelpart") local append="" - [ -f "$CONF_TAR" -a "$SAVE_CONFIG" -eq 1 ] && append="-j $CONF_TAR" + [ -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; \ @@ -93,26 +93,37 @@ 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 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 } - local model_string="$(tplink_pharos_get_model_string)" - local line - - # Here $1 is given to dd directly instead of get_image as otherwise the skip - # will take almost a second (as dd can't seek then) - # - # This will fail if the image isn't local, but that's fine: as the - # 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 - done || { + 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 } @@ -153,7 +164,7 @@ platform_do_upgrade_compex() { if [ -n "$fw_mtd" ] && [ ${fw_blocks:-0} -gt 0 ]; then local append="" - [ -f "$CONF_TAR" -a "$SAVE_CONFIG" -eq 1 ] && append="-j $CONF_TAR" + [ -f "$UPGRADE_BACKUP" ] && append="-j $UPGRADE_BACKUP" sync dd if="$fw_file" bs=64k skip=1 count=$fw_blocks 2>/dev/null | \ @@ -201,21 +212,29 @@ platform_check_image() { archer-c25-v1|\ archer-c58-v1|\ archer-c59-v1|\ + archer-c59-v2|\ archer-c60-v1|\ + archer-c60-v2|\ archer-c7-v4|\ + archer-c7-v5|\ bullet-m|\ + bullet-m-xw|\ c-55|\ carambola2|\ cf-e316n-v2|\ cf-e320n-v2|\ - cf-e355ac|\ + 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|\ @@ -232,31 +251,44 @@ platform_check_image() { 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|\ @@ -265,6 +297,7 @@ platform_check_image() { sc300m|\ sc450|\ sr3200|\ + t830|\ tew-632brp|\ tew-712br|\ tew-732br|\ @@ -275,6 +308,7 @@ platform_check_image() { unifi-outdoor|\ unifiac-lite|\ unifiac-pro|\ + wam250|\ weio|\ whr-g301n|\ whr-hp-g300n|\ @@ -310,6 +344,7 @@ platform_check_image() { ap136-020|\ ap147-010|\ ap152|\ + ap91-5g|\ ap96|\ arduino-yun|\ bhr-4grv2|\ @@ -359,7 +394,7 @@ platform_check_image() { } local md5_img=$(dd if="$1" bs=2 skip=9 count=16 2>/dev/null) - local md5_chk=$(dd if="$1" bs=$CI_BLKSZ skip=1 2>/dev/null | md5sum -); md5_chk="${md5_chk%% *}" + 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 @@ -378,13 +413,20 @@ platform_check_image() { el-m150|\ el-mini|\ gl-inet|\ + lan-turtle|\ mc-mac1200r|\ minibox-v1|\ + minibox-v3.2|\ omy-g1|\ omy-x1|\ onion-omega|\ - oolite|\ + oolite-v1|\ + oolite-v5.2|\ + oolite-v5.2-dev|\ + packet-squirrel|\ + re355|\ re450|\ + rut900|\ smart-300|\ som9331|\ tellstick-znet-lite|\ @@ -448,13 +490,16 @@ platform_check_image() { tl-wr842n-v3|\ tl-wr902ac-v1|\ tl-wr940n-v4|\ + tl-wr940n-v6|\ tl-wr941nd|\ tl-wr941nd-v5|\ - tl-wr941nd-v6) + tl-wr941nd-v6|\ + ts-d084|\ + wifi-pineapple-nano) local magic_ver="0100" case "$board" in - tl-wdr6500-v2) + tl-wdr3320-v2|tl-wdr6500-v2) magic_ver="0200" ;; esac @@ -513,14 +558,17 @@ platform_check_image() { 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 @@ -542,7 +590,16 @@ platform_check_image() { eap120|\ wbs210|\ wbs510) - tplink_pharos_check_image "$1" && return 0 + 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|\ @@ -652,9 +709,15 @@ platform_check_image() { ;; # 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|\ @@ -662,7 +725,10 @@ platform_check_image() { rb-lhg-5nd|\ rb-map-2nd|\ rb-mapl-2nd|\ - rb-wap-2nd) + rb-sxt-2nd-r3|\ + rb-wap-2nd|\ + rb-wapg-5hact2hnd|\ + rb-wapr-2nd) return 0 ;; esac @@ -675,48 +741,12 @@ platform_pre_upgrade() { 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-5hpacd|\ - rb-911g-5hpnd|\ - rb-912uag-2hpnd|\ - rb-912uag-5hpnd|\ - rb-921gs-5hpacd-r2|\ - rb-951g-2hnd|\ - rb-951ui-2hnd|\ - rb-2011il|\ - rb-2011l|\ - rb-2011uas|\ - rb-2011uas-2hnd|\ - rb-2011uias|\ - rb-2011uias-2hnd|\ - rb-sxt2n|\ - rb-sxt5n|\ - wi2a-ac200i|\ - wndr3700v4|\ - wndr4300) - nand_do_upgrade "$1" - ;; 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|\ @@ -724,14 +754,13 @@ platform_pre_upgrade() { rb-lhg-5nd|\ rb-map-2nd|\ rb-mapl-2nd|\ - rb-wap-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 ;; - mr18|\ - z1) - merakinand_do_upgrade "$1" - ;; esac } @@ -772,7 +801,7 @@ platform_do_upgrade() { case "$board" in all0258n) - platform_do_upgrade_allnet "0x9f050000" "$ARGV" + platform_do_upgrade_allnet "0x9f050000" "$1" ;; all0305|\ eap7660d|\ @@ -784,19 +813,19 @@ platform_do_upgrade() { pb44|\ routerstation|\ routerstation-pro) - platform_do_upgrade_combined "$ARGV" + platform_do_upgrade_combined "$1" ;; all0315n) - platform_do_upgrade_allnet "0x9f080000" "$ARGV" + platform_do_upgrade_allnet "0x9f080000" "$1" ;; cap4200ag|\ eap300v2|\ ens202ext) - platform_do_upgrade_allnet "0xbf0a0000" "$ARGV" + platform_do_upgrade_allnet "0xbf0a0000" "$1" ;; dir-825-b1|\ tew-673gru) - platform_do_upgrade_dir825b "$ARGV" + platform_do_upgrade_dir825b "$1" ;; a40|\ a60|\ @@ -818,29 +847,65 @@ platform_do_upgrade() { om5p-ac|\ om5p-acv2|\ om5p-an) - platform_do_upgrade_openmesh "$ARGV" + platform_do_upgrade_openmesh "$1" + ;; + 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-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|\ + wi2a-ac200i|\ + wndr3700v4|\ + wndr4300) + nand_do_upgrade "$1" + ;; + mr18|\ + z1) + merakinand_do_upgrade "$1" ;; uap-pro|\ unifi-outdoor-plus) MTD_CONFIG_ARGS="-s 0x180000" - default_do_upgrade "$ARGV" + default_do_upgrade "$1" ;; wp543|\ wpe72) - platform_do_upgrade_compex "$ARGV" + platform_do_upgrade_compex "$1" ;; *) - default_do_upgrade "$ARGV" + default_do_upgrade "$1" ;; esac } - -disable_watchdog() { - killall watchdog - ( ps | grep -v 'grep' | grep '/dev/watchdog' ) && { - echo 'Could not disable watchdog' - return 1 - } -} - -append sysupgrade_pre_upgrade disable_watchdog