. /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
then
local rootfspart=$(platform_find_rootfspart "$partitions" "$kernelpart")
local append=""
- [ -f "$CONF_TAR" -a "$SAVE_CONFIG" -eq 1 ] && append="-j $CONF_TAR"
+ [ -f "$CONF_TAR" -a "$UPGRADE_OPT_SAVE_CONFIG" -eq 1 ] && append="-j $CONF_TAR"
if [ "$PLATFORM_DO_UPGRADE_COMBINED_SEPARATE_MTD" -ne 1 ]; then
( dd if="$1" bs=$CI_BLKSZ skip=1 count=$kern_blocks 2>/dev/null; \
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 | (
+ 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
}
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 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" || \
- tplink_pharos_check_support_list "$1" 1511432 "$model_string" || {
+ 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
}
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 "$CONF_TAR" -a "$UPGRADE_OPT_SAVE_CONFIG" -eq 1 ] && append="-j $CONF_TAR"
sync
dd if="$fw_file" bs=64k skip=1 count=$fw_blocks 2>/dev/null | \
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|\
dr531|\
dragino2|\
e1700ac-v2|\
+ e558-v2|\
e600g-v2|\
e600gac-v2|\
+ e750a-v4|\
+ e750g-v8|\
ebr-2310-c1|\
ens202ext|\
epg5000|\
gl-ar300m|\
gl-ar300|\
gl-ar750|\
+ gl-ar750s|\
gl-domino|\
gl-mifi|\
gl-usb150|\
}
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
lan-turtle|\
mc-mac1200r|\
minibox-v1|\
+ minibox-v3.2|\
omy-g1|\
omy-x1|\
onion-omega|\
tl-wr941nd|\
tl-wr941nd-v5|\
tl-wr941nd-v6|\
+ ts-d084|\
wifi-pineapple-nano)
local magic_ver="0100"
rb-912uag-2hpnd|\
rb-912uag-5hpnd|\
rb-921gs-5hpacd-r2|\
+ rb-922uags-5hpacd|\
rb-951g-2hnd|\
rb-951ui-2hnd|\
rb-2011l|\
rb-2011uas-2hnd|\
rb-2011uias|\
rb-2011uias-2hnd|\
+ rb-2011uias-2hnd-r2|\
rb-sxt2n|\
rb-sxt5n)
nand_do_platform_check routerboard $1
return $?
;;
cpe210|\
- cpe510|\
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)
+ local modelstr="$(tplink_pharos_v2_get_model_string)"
+ tplink_pharos_board_detect $modelstr
+ case $AR71XX_MODEL in
+ 'TP-Link CPE510 v2.0')
+ tplink_pharos_check_image "$1" "7f454c46" "$modelstr" '\0\xff\r' && return 0
+ return 1
+ ;;
+ *)
+ tplink_pharos_check_image "$1" "7f454c46" "$(tplink_pharos_get_model_string)" '' && return 0
+ return 1
+ ;;
+ esac
+ ;;
a40|\
a60|\
mr1750|\
# 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-lhg-5nd|\
rb-map-2nd|\
rb-mapl-2nd|\
+ rb-sxt-2nd-r3|\
rb-wap-2nd|\
- rb-wapg-5hact2hnd)
+ rb-wapg-5hact2hnd|\
+ rb-wapr-2nd)
return 0
;;
esac
return 1
}
-platform_pre_upgrade() {
+platform_do_upgrade_mikrotik_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" -
+
+ 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-750up-r2|\
rb-911-2hn|\
rb-911-5hn|\
+ rb-931-2nd|\
rb-941-2nd|\
rb-951ui-2nd|\
rb-952ui-5ac2nd|\
rb-lhg-5nd|\
rb-map-2nd|\
rb-mapl-2nd|\
+ rb-sxt-2nd-r3|\
rb-wap-2nd|\
- rb-wapg-5hact2hnd)
+ rb-wapg-5hact2hnd|\
+ rb-wapr-2nd)
# erase firmware if booted from initramfs
[ -z "$(rootfs_type)" ] && mtd erase firmware
;;
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" -
- ;;
- wi2a-ac200i)
- 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
- ;;
- esac
-}
-
-platform_do_upgrade() {
- local board=$(board_name)
case "$board" in
all0258n)
- platform_do_upgrade_allnet "0x9f050000" "$ARGV"
+ platform_do_upgrade_allnet "0x9f050000" "$1"
;;
all0305|\
eap7660d|\
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|\
om5p-ac|\
om5p-acv2|\
om5p-an)
- platform_do_upgrade_openmesh "$ARGV"
+ 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-912uag-2hpnd|\
rb-912uag-5hpnd|\
rb-921gs-5hpacd-r2|\
+ rb-922uags-5hpacd|\
rb-951g-2hnd|\
rb-951ui-2hnd|\
rb-2011il|\
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"
+ rb-sxt5n)
+ platform_do_upgrade_mikrotik_rb "$1"
;;
uap-pro|\
unifi-outdoor-plus)
MTD_CONFIG_ARGS="-s 0x180000"
- default_do_upgrade "$ARGV"
+ default_do_upgrade "$1"
+ ;;
+ wi2a-ac200i)
+ platform_do_upgrade_nokia "$1"
;;
wp543|\
wpe72)
- platform_do_upgrade_compex "$ARGV"
+ platform_do_upgrade_compex "$1"
;;
*)
- default_do_upgrade "$ARGV"
+ default_do_upgrade "$1"
;;
esac
}