2009-06-06 17:44:49 +00:00
|
|
|
#
|
2011-10-30 13:06:30 +00:00
|
|
|
# Copyright (C) 2011 OpenWrt.org
|
2009-06-06 17:44:49 +00:00
|
|
|
#
|
|
|
|
|
2014-07-14 16:03:35 +00:00
|
|
|
. /lib/functions/system.sh
|
2009-06-06 17:44:49 +00:00
|
|
|
. /lib/ar71xx.sh
|
|
|
|
|
|
|
|
PART_NAME=firmware
|
2009-08-02 09:27:38 +00:00
|
|
|
RAMFS_COPY_DATA=/lib/ar71xx.sh
|
2017-01-08 13:27:38 +00:00
|
|
|
[ -x /usr/sbin/nandwrite ] && RAMFS_COPY_BIN=/usr/sbin/nandwrite
|
2009-06-06 17:44:49 +00:00
|
|
|
|
2009-11-25 09:51:25 +00:00
|
|
|
CI_BLKSZ=65536
|
|
|
|
CI_LDADR=0x80060000
|
|
|
|
|
2017-01-04 21:44:54 +00:00
|
|
|
PLATFORM_DO_UPGRADE_COMBINED_SEPARATE_MTD=0
|
|
|
|
|
2009-11-25 09:51:25 +00:00
|
|
|
platform_find_partitions() {
|
|
|
|
local first dev size erasesize name
|
|
|
|
while read dev size erasesize name; do
|
|
|
|
name=${name#'"'}; name=${name%'"'}
|
|
|
|
case "$name" in
|
2012-10-14 16:24:26 +00:00
|
|
|
vmlinux.bin.l7|vmlinux|kernel|linux|linux.bin|rootfs|filesystem)
|
2009-11-25 09:51:25 +00:00
|
|
|
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
|
2012-10-14 16:24:26 +00:00
|
|
|
vmlinux.bin.l7|vmlinux|kernel|linux|linux.bin)
|
2009-11-25 09:51:25 +00:00
|
|
|
echo "$part"
|
|
|
|
break
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
done
|
|
|
|
}
|
|
|
|
|
2017-01-04 21:44:54 +00:00
|
|
|
platform_find_rootfspart() {
|
|
|
|
local part
|
|
|
|
for part in "${1%:*}" "${1#*:}"; do
|
2017-02-11 10:10:37 +00:00
|
|
|
[ "$part" != "$2" ] && echo "$part" && break
|
2017-01-04 21:44:54 +00:00
|
|
|
done
|
|
|
|
}
|
|
|
|
|
2009-11-25 09:51:25 +00:00
|
|
|
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 ] && \
|
2013-10-13 18:39:09 +00:00
|
|
|
[ ${root_blocks:-0} -gt 0 ] && \
|
2009-11-25 09:51:25 +00:00
|
|
|
[ ${erase_size:-0} -gt 0 ];
|
|
|
|
then
|
2017-01-04 21:44:54 +00:00
|
|
|
local rootfspart=$(platform_find_rootfspart "$partitions" "$kernelpart")
|
2009-11-25 09:51:25 +00:00
|
|
|
local append=""
|
|
|
|
[ -f "$CONF_TAR" -a "$SAVE_CONFIG" -eq 1 ] && append="-j $CONF_TAR"
|
|
|
|
|
2017-01-04 21:44:54 +00:00
|
|
|
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
|
2009-11-25 09:51:25 +00:00
|
|
|
fi
|
2017-01-04 21:44:54 +00:00
|
|
|
PLATFORM_DO_UPGRADE_COMBINED_SEPARATE_MTD=0
|
2009-11-25 09:51:25 +00:00
|
|
|
}
|
|
|
|
|
2011-12-05 18:11:51 +00:00
|
|
|
tplink_get_image_hwid() {
|
|
|
|
get_image "$@" | dd bs=4 count=1 skip=16 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"'
|
|
|
|
}
|
|
|
|
|
2016-04-01 07:11:53 +00:00
|
|
|
tplink_get_image_mid() {
|
|
|
|
get_image "$@" | dd bs=4 count=1 skip=17 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"'
|
|
|
|
}
|
|
|
|
|
2012-10-26 18:58:13 +00:00
|
|
|
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"'
|
|
|
|
}
|
|
|
|
|
2014-11-26 08:59:32 +00:00
|
|
|
tplink_pharos_check_image() {
|
|
|
|
local magic_long="$(get_magic_long "$1")"
|
|
|
|
[ "$magic_long" != "7f454c46" ] && {
|
|
|
|
echo "Invalid image magic '$magic_long'"
|
|
|
|
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
|
2017-04-22 16:56:25 +00:00
|
|
|
[ "$line" = "$model_string" ] && break
|
2014-11-26 08:59:32 +00:00
|
|
|
done || {
|
|
|
|
echo "Unsupported image (model not in support-list)"
|
|
|
|
return 1
|
|
|
|
}
|
|
|
|
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
2013-09-19 22:36:42 +00:00
|
|
|
seama_get_type_magic() {
|
|
|
|
get_image "$@" | dd bs=1 count=4 skip=53 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"'
|
|
|
|
}
|
|
|
|
|
2016-07-18 17:39:57 +00:00
|
|
|
wrgg_get_image_magic() {
|
|
|
|
get_image "$@" | dd bs=4 count=1 skip=8 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"'
|
|
|
|
}
|
|
|
|
|
2013-11-30 18:31:03 +00:00
|
|
|
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
|
|
|
|
}
|
|
|
|
|
2014-01-24 17:15:02 +00:00
|
|
|
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 "$CONF_TAR" -a "$SAVE_CONFIG" -eq 1 ] && append="-j $CONF_TAR"
|
|
|
|
|
|
|
|
sync
|
|
|
|
dd if="$fw_file" bs=64k skip=1 count=$fw_blocks 2>/dev/null | \
|
|
|
|
mtd $append write - "$fw_part"
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
2014-07-14 16:03:35 +00:00
|
|
|
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
|
|
|
|
}
|
|
|
|
|
2017-01-08 13:27:38 +00:00
|
|
|
platform_nand_board_name() {
|
|
|
|
local board=$(ar71xx_board_name)
|
|
|
|
|
|
|
|
case "$board" in
|
|
|
|
rb*) echo "routerboard";;
|
|
|
|
*) echo "$board";;
|
|
|
|
esac
|
|
|
|
}
|
|
|
|
|
2009-06-06 17:44:49 +00:00
|
|
|
platform_check_image() {
|
|
|
|
local board=$(ar71xx_board_name)
|
|
|
|
local magic="$(get_magic_word "$1")"
|
2011-01-26 20:35:42 +00:00
|
|
|
local magic_long="$(get_magic_long "$1")"
|
2009-06-06 17:44:49 +00:00
|
|
|
|
2014-06-02 12:43:22 +00:00
|
|
|
[ "$#" -gt 1 ] && return 1
|
2009-06-06 17:44:49 +00:00
|
|
|
|
|
|
|
case "$board" in
|
2016-09-29 09:44:44 +00:00
|
|
|
airgatewaypro|\
|
|
|
|
airgateway|\
|
|
|
|
airrouter|\
|
|
|
|
ap132|\
|
2017-03-02 17:23:50 +00:00
|
|
|
ap531b0|\
|
2016-10-06 00:19:17 +00:00
|
|
|
ap90q|\
|
2016-12-27 21:41:41 +00:00
|
|
|
archer-c59-v1|\
|
|
|
|
archer-c60-v1|\
|
2016-09-29 09:44:44 +00:00
|
|
|
bullet-m|\
|
|
|
|
c-55|\
|
|
|
|
carambola2|\
|
|
|
|
cf-e316n-v2|\
|
ar71xx: add support for COMFAST CF-E320N v2 and CF-E520N/CF-E530N
As we already have support for CF-E316N v2 and many devices from
this vendor look similar, the support was included in existing
mach-*.c file, with few cleanups and fixes.
All 3 devices are based on Qualcomm/Atheros QCA9531 v2.
COMFAST CF-E320N v2 is a ceiling mount AP with PoE support.
Short specification:
- 650/393/216 MHz (CPU/DDR/AHB)
- 2x 10/100 Mbps Ethernet, both with PoE support
- 64 MB of RAM (DDR2)
- 16 MB of FLASH
- 2T2R 2.4 GHz, up to 22 dBm
- 2x internal antennas
- 1x RGB LED, 1x button
- UART (J1), GPIO (J9) and USB (J2) headers on PCB
- external watchdog (Pericon Technology PT7A7514)
COMFAST CF-E520N/CF-E530N are in-wall APs with USB and PoE support.
They seem to have different only the front panel.
Short specification:
- 650/393/216 MHz (CPU/DDR/AHB)
- 2x 10/100 Mbps Ethernet, WAN with PoE support
- 1x USB 2.0 (in CF-E520N covered by panel, available on PCB)
- 32 MB of RAM (DDR2)
- 8 MB of FLASH
- 2T2R 2.4 GHz, up to 22 dBm
- 2x internal antennas
- 1x LED, 1x button
- UART (J1) headers on PCB
Flash instruction:
Original firmware is based on OpenWrt.
Use sysupgrade image directly in vendor GUI.
Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
2016-10-05 00:24:58 +00:00
|
|
|
cf-e320n-v2|\
|
ar71xx: add support for COMFAST CF-E380AC v1 and v2
COMFAST CF-E380AC v1/v2 is a ceiling mount AP with PoE
support, based on Qualcomm/Atheros QCA9558+QCA9880+AR8035.
There are two versions of this model, with different RAM
and U-Boot mtd partition sizes:
- v1: 128 MB of RAM, 128 KB U-Boot image size
- v2: 256 MB of RAM, 256 KB U-Boot image size
Version number is available only inside vendor GUI,
hardware and markings are the same.
Short specification:
- 720/600/200 MHz (CPU/DDR/AHB)
- 1x 10/100/1000 Mbps Ethernet, with PoE support
- 128 or 256 MB of RAM (DDR2)
- 16 MB of FLASH
- 3T3R 2.4 GHz, with external PA (SE2576L), up to 28 dBm
- 3T3R 5 GHz, with external PA (SE5003L1), up to 30 dBm
- 6x internal antennas
- 1x RGB LED, 1x button
- UART (T11), LEDs/GPIO (J7) and USB (T12) headers on PCB
- external watchdog (Pericon Technology PT7A7514)
Flash instruction:
Original firmware is based on OpenWrt.
Use sysupgrade image directly in vendor GUI.
Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
2016-11-14 16:38:23 +00:00
|
|
|
cf-e380ac-v1|\
|
|
|
|
cf-e380ac-v2|\
|
ar71xx: add support for COMFAST CF-E320N v2 and CF-E520N/CF-E530N
As we already have support for CF-E316N v2 and many devices from
this vendor look similar, the support was included in existing
mach-*.c file, with few cleanups and fixes.
All 3 devices are based on Qualcomm/Atheros QCA9531 v2.
COMFAST CF-E320N v2 is a ceiling mount AP with PoE support.
Short specification:
- 650/393/216 MHz (CPU/DDR/AHB)
- 2x 10/100 Mbps Ethernet, both with PoE support
- 64 MB of RAM (DDR2)
- 16 MB of FLASH
- 2T2R 2.4 GHz, up to 22 dBm
- 2x internal antennas
- 1x RGB LED, 1x button
- UART (J1), GPIO (J9) and USB (J2) headers on PCB
- external watchdog (Pericon Technology PT7A7514)
COMFAST CF-E520N/CF-E530N are in-wall APs with USB and PoE support.
They seem to have different only the front panel.
Short specification:
- 650/393/216 MHz (CPU/DDR/AHB)
- 2x 10/100 Mbps Ethernet, WAN with PoE support
- 1x USB 2.0 (in CF-E520N covered by panel, available on PCB)
- 32 MB of RAM (DDR2)
- 8 MB of FLASH
- 2T2R 2.4 GHz, up to 22 dBm
- 2x internal antennas
- 1x LED, 1x button
- UART (J1) headers on PCB
Flash instruction:
Original firmware is based on OpenWrt.
Use sysupgrade image directly in vendor GUI.
Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
2016-10-05 00:24:58 +00:00
|
|
|
cf-e520n|\
|
|
|
|
cf-e530n|\
|
ar71xx: add support for P&W R602N and CPE505N
P&W (full name: Shenzhen Progress&Win Technologies) R602N (could be also
labeled as R602F, R602, etc.) is a simple N300 router with 5-port
10/100 Mbps switch, non-detachable antennas and USB.
CPE505 is an outdoor CPE with PoE support and detachable antennas.
Both devices are based on Qualcomm/Atheros QCA9531 v2.
Common specification:
- 650/597/216 MHz (CPU/DDR/AHB)
- 64 MB of RAM (DDR2)
- 16 MB of FLASH
- UART (J2) header on PCB
R602N specification:
- 5x 10/100 Mbps Ethernet
- 1x USB 2.0
- 2T2R 2.4 GHz with external LNA and PA (SE2576L), up to 28 dBm
- 2x external, non-detachable antennas
- 7x LED, 1x button
CPE505N specification:
- 2x 10/100 Mbps Ethernet (both ports support passive PoE 12-24 V)
- 2T2R 2.4 GHz with external LNA and PA (SKY65174-21), up to 30 dBm
- 2x external, detachable antennas (RP-SMA connectors)
- 1x RGB LED, 2x LEDs (in RJ45 sockets), 1x button
Flash instructions:
It seems that there are many different versions of the firmware which
these devices are shipped with. The generic/standard one is based on
some modified OpenWrt and LEDE firmware can be flashed directly from
vendor's webgui or with sysupgrade (root password is "admin123").
Before flashing, make sure (use "fw_printenv") that the kernel load
address in your device is set to "0x9f050000" (bootcmd variable is
"bootm 0x9f050000"). If your device uses different load address, you
should first change it, under vendor's firmware, with command:
fw_setenv bootcmd "bootm 0x9f050000 || bootm OLD_ADDRESS"
Where OLD_ADDRESS is previous kernel load address (in CPE505 version
I got access to, it was "0x9fe80000"). This will allow you to use
both the vendor's and LEDE firmware.
If version of your device contains empty U-Boot environment (you will
get information about this after issuing "fw_printenv"), you should
use U-Boot, serial line access and TFTP to perform firmware upgrade:
1. tftp 0x80060000 lede-ar71xx-generic-...-squashfs-sysupgrade.bin
2. erase 0x9f050000 +$filesize
3. cp.b $fileaddr 0x9f050000 $filesize
4. setenv bootcmd "bootm 0x9f050000 || bootm OLD_ADDRESS"
5. saveenv && reset
These devices contain also web recovery mode inside U-Boot. It can be
started with pressing the reset button for around 3 seconds just after
the device powerup. Web recovery panel is available on "192.168.10.9"
and to be able to use it, IP on your PC must be set to "192.168.10.10".
Make sure to change kernel load address before using recovery mode or
the U-Boot will not be able to load LEDE firmware.
Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
2017-03-15 23:54:08 +00:00
|
|
|
cpe505n|\
|
2016-10-08 01:36:35 +00:00
|
|
|
cpe830|\
|
2016-10-07 23:17:04 +00:00
|
|
|
cpe870|\
|
2016-09-29 09:44:44 +00:00
|
|
|
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|\
|
|
|
|
dr531|\
|
|
|
|
dragino2|\
|
2017-02-03 05:01:36 +00:00
|
|
|
ebr-2310-c1|\
|
2016-09-29 09:44:44 +00:00
|
|
|
epg5000|\
|
|
|
|
esr1750|\
|
|
|
|
esr900|\
|
|
|
|
ew-dorin-router|\
|
|
|
|
ew-dorin|\
|
|
|
|
gl-ar150|\
|
|
|
|
gl-ar300m|\
|
|
|
|
gl-ar300|\
|
|
|
|
gl-domino|\
|
|
|
|
gl-mifi|\
|
|
|
|
hiwifi-hc6361|\
|
|
|
|
hornet-ub-x2|\
|
|
|
|
jwap230|\
|
2017-02-12 17:34:36 +00:00
|
|
|
lima|\
|
2016-09-29 09:44:44 +00:00
|
|
|
loco-m-xw|\
|
|
|
|
mzk-w04nu|\
|
|
|
|
mzk-w300nh|\
|
|
|
|
nanostation-m-xw|\
|
|
|
|
nanostation-m|\
|
|
|
|
nbg460n_550n_550nh|\
|
2017-01-10 09:47:19 +00:00
|
|
|
pqi-air-pen|\
|
ar71xx: add support for P&W R602N and CPE505N
P&W (full name: Shenzhen Progress&Win Technologies) R602N (could be also
labeled as R602F, R602, etc.) is a simple N300 router with 5-port
10/100 Mbps switch, non-detachable antennas and USB.
CPE505 is an outdoor CPE with PoE support and detachable antennas.
Both devices are based on Qualcomm/Atheros QCA9531 v2.
Common specification:
- 650/597/216 MHz (CPU/DDR/AHB)
- 64 MB of RAM (DDR2)
- 16 MB of FLASH
- UART (J2) header on PCB
R602N specification:
- 5x 10/100 Mbps Ethernet
- 1x USB 2.0
- 2T2R 2.4 GHz with external LNA and PA (SE2576L), up to 28 dBm
- 2x external, non-detachable antennas
- 7x LED, 1x button
CPE505N specification:
- 2x 10/100 Mbps Ethernet (both ports support passive PoE 12-24 V)
- 2T2R 2.4 GHz with external LNA and PA (SKY65174-21), up to 30 dBm
- 2x external, detachable antennas (RP-SMA connectors)
- 1x RGB LED, 2x LEDs (in RJ45 sockets), 1x button
Flash instructions:
It seems that there are many different versions of the firmware which
these devices are shipped with. The generic/standard one is based on
some modified OpenWrt and LEDE firmware can be flashed directly from
vendor's webgui or with sysupgrade (root password is "admin123").
Before flashing, make sure (use "fw_printenv") that the kernel load
address in your device is set to "0x9f050000" (bootcmd variable is
"bootm 0x9f050000"). If your device uses different load address, you
should first change it, under vendor's firmware, with command:
fw_setenv bootcmd "bootm 0x9f050000 || bootm OLD_ADDRESS"
Where OLD_ADDRESS is previous kernel load address (in CPE505 version
I got access to, it was "0x9fe80000"). This will allow you to use
both the vendor's and LEDE firmware.
If version of your device contains empty U-Boot environment (you will
get information about this after issuing "fw_printenv"), you should
use U-Boot, serial line access and TFTP to perform firmware upgrade:
1. tftp 0x80060000 lede-ar71xx-generic-...-squashfs-sysupgrade.bin
2. erase 0x9f050000 +$filesize
3. cp.b $fileaddr 0x9f050000 $filesize
4. setenv bootcmd "bootm 0x9f050000 || bootm OLD_ADDRESS"
5. saveenv && reset
These devices contain also web recovery mode inside U-Boot. It can be
started with pressing the reset button for around 3 seconds just after
the device powerup. Web recovery panel is available on "192.168.10.9"
and to be able to use it, IP on your PC must be set to "192.168.10.10".
Make sure to change kernel load address before using recovery mode or
the U-Boot will not be able to load LEDE firmware.
Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
2017-03-15 23:54:08 +00:00
|
|
|
r602n|\
|
2016-09-29 09:44:44 +00:00
|
|
|
rocket-m-ti|\
|
|
|
|
rocket-m-xw|\
|
|
|
|
rocket-m|\
|
|
|
|
rw2458n|\
|
2017-01-15 22:01:05 +00:00
|
|
|
sc1750|\
|
2017-01-15 22:01:03 +00:00
|
|
|
sc300m|\
|
2017-01-15 22:01:04 +00:00
|
|
|
sc450|\
|
ar71xx: add support for YunCore SR3200 and XD3200
YunCore SR3200 is a dual-band AC1200 router, based on Qualcomm/Atheros
QCA9563+QCA9882+QCA8337N.
YunCore XD3200 (FCC ID: 2ADUG-XD3200) is a dual-band AC1200 ceiling mount
AP with PoE support, based on Qualcomm/Atheros QCA9563+QCA9882+QCA8334.
Common specification:
- 775/650/258 MHz (CPU/DDR/AHB)
- 128 MB or RAM (DDR2)
- 16 MB of FLASH (SPI NOR)
- 2T2R 2.4 GHz, with ext. PA (SKY65174-21), up to 30 dBm
- 2T2R 5 GHz, with ext. PA (SKY85405-11) and LNA (SKY85601-11), up to 30 dBm
SR3200 specification:
- 5x 10/100/1000 Mbps Ethernet
- 6x ext. RP-SMA antennas (actually, only 4 are connected with radio chips)
- 3x LED (+ 5x LED in RJ45 sockets), 1x button
- UART header on PCB
XD3200 specification:
- 2x 10/100/1000 Mbps Ethernet, with 802.3at PoE support (WAN port)
- 4x internal antennas
- 3 sets of LEDs on external PCB (+ 2x LED near RJ45 sockets), 1x button
- UART and JTAG (custom 6-pin, 2 mm pitch) headers on PCB
LED for 5 GHz WLAN is currently not supported on both devices as it is
connected directly to the QCA9882 radio chip.
Flash instruction under vendor firmware, using telnet/SSH:
1. If your firmware does not have root password, go to point 5
2. Connect PC with 192.168.1.x address to LAN or WAN port
3. Power up device, enter failsafe mode with button (no LED indicator!)
4. Change root password and reboot (mount_root, passwd ..., reboot -f)
5. Upload lede-ar71xx-...-sysupgrade.bin to /tmp using SCP
6. Connect PC with 192.168.188.x address to LAN port, SSH to 192.168.188.253
7. Invoke:
- cd /tmp
- fw_setenv bootcmd "bootm 0x9fe80000 || bootm 0x9f050000"
- mtd -e firmware -r write lede-ar71xx-...-sysupgrade.bin firmware
Flash instruction under U-Boot, using UART:
1. tftp 0x80060000 lede-ar71xx-...-sysupgrade.bin
2. erase 0x9f050000 +$filesize
3. cp.b $fileaddr 0x9f050000 $filesize
4. setenv bootcmd "bootm 0x9fe80000 || bootm 0x9f050000"
5. saveenv && reset
Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
2016-12-02 21:42:41 +00:00
|
|
|
sr3200|\
|
2016-09-29 09:44:44 +00:00
|
|
|
tew-632brp|\
|
|
|
|
tew-712br|\
|
|
|
|
tew-732br|\
|
|
|
|
tew-823dru|\
|
|
|
|
unifi-outdoor|\
|
|
|
|
unifiac-lite|\
|
|
|
|
unifiac-pro|\
|
|
|
|
unifi|\
|
|
|
|
weio|\
|
|
|
|
whr-g301n|\
|
|
|
|
whr-hp-g300n|\
|
|
|
|
whr-hp-gn|\
|
|
|
|
wlae-ag300n|\
|
|
|
|
wndap360|\
|
|
|
|
wpj342|\
|
|
|
|
wpj344|\
|
|
|
|
wpj531|\
|
2017-02-26 11:25:57 +00:00
|
|
|
wpj563|\
|
2016-09-29 09:44:44 +00:00
|
|
|
wrt400n|\
|
|
|
|
wrtnode2q|\
|
|
|
|
wzr-450hp2|\
|
|
|
|
wzr-hp-ag300h|\
|
|
|
|
wzr-hp-g300nh2|\
|
|
|
|
wzr-hp-g300nh|\
|
ar71xx: add support for YunCore SR3200 and XD3200
YunCore SR3200 is a dual-band AC1200 router, based on Qualcomm/Atheros
QCA9563+QCA9882+QCA8337N.
YunCore XD3200 (FCC ID: 2ADUG-XD3200) is a dual-band AC1200 ceiling mount
AP with PoE support, based on Qualcomm/Atheros QCA9563+QCA9882+QCA8334.
Common specification:
- 775/650/258 MHz (CPU/DDR/AHB)
- 128 MB or RAM (DDR2)
- 16 MB of FLASH (SPI NOR)
- 2T2R 2.4 GHz, with ext. PA (SKY65174-21), up to 30 dBm
- 2T2R 5 GHz, with ext. PA (SKY85405-11) and LNA (SKY85601-11), up to 30 dBm
SR3200 specification:
- 5x 10/100/1000 Mbps Ethernet
- 6x ext. RP-SMA antennas (actually, only 4 are connected with radio chips)
- 3x LED (+ 5x LED in RJ45 sockets), 1x button
- UART header on PCB
XD3200 specification:
- 2x 10/100/1000 Mbps Ethernet, with 802.3at PoE support (WAN port)
- 4x internal antennas
- 3 sets of LEDs on external PCB (+ 2x LED near RJ45 sockets), 1x button
- UART and JTAG (custom 6-pin, 2 mm pitch) headers on PCB
LED for 5 GHz WLAN is currently not supported on both devices as it is
connected directly to the QCA9882 radio chip.
Flash instruction under vendor firmware, using telnet/SSH:
1. If your firmware does not have root password, go to point 5
2. Connect PC with 192.168.1.x address to LAN or WAN port
3. Power up device, enter failsafe mode with button (no LED indicator!)
4. Change root password and reboot (mount_root, passwd ..., reboot -f)
5. Upload lede-ar71xx-...-sysupgrade.bin to /tmp using SCP
6. Connect PC with 192.168.188.x address to LAN port, SSH to 192.168.188.253
7. Invoke:
- cd /tmp
- fw_setenv bootcmd "bootm 0x9fe80000 || bootm 0x9f050000"
- mtd -e firmware -r write lede-ar71xx-...-sysupgrade.bin firmware
Flash instruction under U-Boot, using UART:
1. tftp 0x80060000 lede-ar71xx-...-sysupgrade.bin
2. erase 0x9f050000 +$filesize
3. cp.b $fileaddr 0x9f050000 $filesize
4. setenv bootcmd "bootm 0x9fe80000 || bootm 0x9f050000"
5. saveenv && reset
Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
2016-12-02 21:42:41 +00:00
|
|
|
wzr-hp-g450h|\
|
|
|
|
xd3200)
|
2009-06-06 17:44:49 +00:00
|
|
|
[ "$magic" != "2705" ] && {
|
|
|
|
echo "Invalid image type."
|
|
|
|
return 1
|
|
|
|
}
|
2016-09-29 09:44:44 +00:00
|
|
|
|
2009-06-06 17:44:49 +00:00
|
|
|
return 0
|
|
|
|
;;
|
2016-09-29 10:00:17 +00:00
|
|
|
alfa-ap96|\
|
|
|
|
alfa-nx|\
|
|
|
|
ap121-mini|\
|
|
|
|
ap121|\
|
|
|
|
ap135-020|\
|
|
|
|
ap136-010|\
|
|
|
|
ap136-020|\
|
|
|
|
ap147-010|\
|
|
|
|
ap152|\
|
|
|
|
ap96|\
|
|
|
|
arduino-yun|\
|
2016-11-08 13:45:00 +00:00
|
|
|
bhr-4grv2|\
|
2016-09-29 10:00:17 +00:00
|
|
|
bxu2000n-2-a1|\
|
|
|
|
db120|\
|
|
|
|
dr344|\
|
2016-10-18 08:18:50 +00:00
|
|
|
dw33d|\
|
2016-09-29 10:00:17 +00:00
|
|
|
f9k1115v2|\
|
|
|
|
hornet-ub|\
|
|
|
|
mr12|\
|
|
|
|
mr16|\
|
|
|
|
wpj558|\
|
|
|
|
zbt-we1526|\
|
|
|
|
zcn-1523h-2|\
|
|
|
|
zcn-1523h-5)
|
|
|
|
[ "$magic_long" != "68737173" -a "$magic_long" != "19852003" ] && {
|
|
|
|
echo "Invalid image type."
|
|
|
|
return 1
|
|
|
|
}
|
|
|
|
|
|
|
|
return 0
|
2012-09-25 12:57:41 +00:00
|
|
|
;;
|
2016-09-29 10:00:17 +00:00
|
|
|
all0258n|\
|
|
|
|
all0315n|\
|
|
|
|
cap324|\
|
|
|
|
cap4200ag|\
|
|
|
|
cr3000|\
|
|
|
|
cr5000)
|
|
|
|
platform_check_image_allnet "$1" && return 0
|
2013-11-30 18:31:03 +00:00
|
|
|
return 1
|
|
|
|
;;
|
2016-09-29 10:00:17 +00:00
|
|
|
all0305|\
|
|
|
|
eap300v2|\
|
|
|
|
eap7660d|\
|
|
|
|
ja76pf2|\
|
|
|
|
ja76pf|\
|
|
|
|
jwap003|\
|
|
|
|
ls-sr71|\
|
|
|
|
pb42|\
|
|
|
|
pb44|\
|
|
|
|
routerstation-pro|\
|
|
|
|
routerstation|\
|
|
|
|
wp543|\
|
|
|
|
wpe72)
|
|
|
|
[ "$magic" != "4349" ] && {
|
|
|
|
echo "Invalid image. Use *-sysupgrade.bin files on this board"
|
2013-09-19 22:36:42 +00:00
|
|
|
return 1
|
|
|
|
}
|
|
|
|
|
2016-09-29 10:00:17 +00:00
|
|
|
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%% *}"
|
|
|
|
|
|
|
|
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)"
|
2013-09-19 22:36:42 +00:00
|
|
|
return 1
|
2016-09-29 10:00:17 +00:00
|
|
|
fi
|
2013-09-19 22:36:42 +00:00
|
|
|
|
2016-09-29 09:44:44 +00:00
|
|
|
return 0
|
2013-09-19 22:36:42 +00:00
|
|
|
;;
|
2016-09-29 09:44:44 +00:00
|
|
|
antminer-s1|\
|
|
|
|
antminer-s3|\
|
|
|
|
antrouter-r1|\
|
|
|
|
archer-c5|\
|
|
|
|
archer-c7|\
|
|
|
|
el-m150|\
|
|
|
|
el-mini|\
|
|
|
|
gl-inet|\
|
|
|
|
mc-mac1200r|\
|
|
|
|
minibox-v1|\
|
|
|
|
omy-g1|\
|
|
|
|
omy-x1|\
|
|
|
|
onion-omega|\
|
|
|
|
oolite|\
|
2016-01-07 00:40:48 +00:00
|
|
|
re450|\
|
2016-09-29 09:44:44 +00:00
|
|
|
smart-300|\
|
|
|
|
som9331|\
|
|
|
|
tellstick-znet-lite|\
|
|
|
|
tl-mr10u|\
|
|
|
|
tl-mr11u|\
|
|
|
|
tl-mr12u|\
|
|
|
|
tl-mr13u|\
|
|
|
|
tl-mr3020|\
|
|
|
|
tl-mr3040-v2|\
|
|
|
|
tl-mr3040|\
|
|
|
|
tl-mr3220-v2|\
|
|
|
|
tl-mr3220|\
|
|
|
|
tl-mr3420-v2|\
|
|
|
|
tl-mr3420|\
|
|
|
|
tl-wa701nd-v2|\
|
|
|
|
tl-wa7210n-v2|\
|
|
|
|
tl-wa750re|\
|
|
|
|
tl-wa7510n|\
|
|
|
|
tl-wa801nd-v2|\
|
2016-12-06 15:18:49 +00:00
|
|
|
tl-wa801nd-v3|\
|
2016-09-29 09:44:44 +00:00
|
|
|
tl-wa830re-v2|\
|
|
|
|
tl-wa850re|\
|
2017-02-10 12:44:06 +00:00
|
|
|
tl-wa850re-v2|\
|
2016-09-29 09:44:44 +00:00
|
|
|
tl-wa860re|\
|
|
|
|
tl-wa901nd-v2|\
|
|
|
|
tl-wa901nd-v3|\
|
|
|
|
tl-wa901nd-v4|\
|
|
|
|
tl-wa901nd|\
|
|
|
|
tl-wdr3320-v2|\
|
|
|
|
tl-wdr3500|\
|
|
|
|
tl-wdr4300|\
|
|
|
|
tl-wdr4900-v2|\
|
|
|
|
tl-wdr6500-v2|\
|
2016-11-07 14:37:25 +00:00
|
|
|
tl-wpa8630|\
|
2016-09-29 09:44:44 +00:00
|
|
|
tl-wr1041n-v2|\
|
|
|
|
tl-wr1043nd-v2|\
|
2016-12-16 11:50:34 +00:00
|
|
|
tl-wr1043nd-v4|\
|
2016-09-29 09:44:44 +00:00
|
|
|
tl-wr1043nd|\
|
|
|
|
tl-wr2543n|\
|
|
|
|
tl-wr703n|\
|
|
|
|
tl-wr710n|\
|
|
|
|
tl-wr720n-v3|\
|
|
|
|
tl-wr741nd-v4|\
|
|
|
|
tl-wr741nd|\
|
2016-10-21 09:47:15 +00:00
|
|
|
tl-wr802n-v1|\
|
2017-02-13 17:29:34 +00:00
|
|
|
tl-wr802n-v2|\
|
2016-09-29 09:44:44 +00:00
|
|
|
tl-wr810n|\
|
2017-03-16 00:43:43 +00:00
|
|
|
tl-wr840n-v2|\
|
|
|
|
tl-wr840n-v3|\
|
2016-09-29 09:44:44 +00:00
|
|
|
tl-wr841n-v11|\
|
|
|
|
tl-wr841n-v1|\
|
|
|
|
tl-wr841n-v7|\
|
|
|
|
tl-wr841n-v8|\
|
|
|
|
tl-wr841n-v9|\
|
|
|
|
tl-wr842n-v2|\
|
|
|
|
tl-wr842n-v3|\
|
|
|
|
tl-wr941nd-v5|\
|
|
|
|
tl-wr941nd-v6|\
|
2016-12-12 14:59:03 +00:00
|
|
|
tl-wr940n-v4|\
|
2016-11-07 14:37:25 +00:00
|
|
|
tl-wr941nd)
|
2015-08-17 06:24:04 +00:00
|
|
|
local magic_ver="0100"
|
|
|
|
|
|
|
|
case "$board" in
|
|
|
|
tl-wdr6500-v2)
|
|
|
|
magic_ver="0200"
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
[ "$magic" != "$magic_ver" ] && {
|
2009-06-06 17:44:49 +00:00
|
|
|
echo "Invalid image type."
|
|
|
|
return 1
|
|
|
|
}
|
2011-12-05 18:11:51 +00:00
|
|
|
|
|
|
|
local hwid
|
2016-04-01 07:11:53 +00:00
|
|
|
local mid
|
|
|
|
local imagehwid
|
|
|
|
local imagemid
|
2011-12-05 18:11:51 +00:00
|
|
|
|
|
|
|
hwid=$(tplink_get_hwid)
|
2016-04-01 07:11:53 +00:00
|
|
|
mid=$(tplink_get_mid)
|
|
|
|
imagehwid=$(tplink_get_image_hwid "$1")
|
|
|
|
imagemid=$(tplink_get_image_mid "$1")
|
2011-12-05 18:11:51 +00:00
|
|
|
|
2016-04-01 07:11:53 +00:00
|
|
|
[ "$hwid" != "$imagehwid" -o "$mid" != "$imagemid" ] && {
|
|
|
|
echo "Invalid image, hardware ID mismatch, hw:$hwid $mid image:$imagehwid $imagemid."
|
2011-12-05 18:11:51 +00:00
|
|
|
return 1
|
|
|
|
}
|
|
|
|
|
2012-10-26 18:58:13 +00:00
|
|
|
local boot_size
|
|
|
|
|
|
|
|
boot_size=$(tplink_get_image_boot_size "$1")
|
|
|
|
[ "$boot_size" != "00000000" ] && {
|
|
|
|
echo "Invalid image, it contains a bootloader."
|
|
|
|
return 1
|
|
|
|
}
|
|
|
|
|
2012-12-17 12:28:11 +00:00
|
|
|
return 0
|
|
|
|
;;
|
2016-09-29 10:00:17 +00:00
|
|
|
bsb|\
|
|
|
|
dir-825-b1|\
|
|
|
|
tew-673gru)
|
|
|
|
dir825b_check_image "$1" && return 0
|
|
|
|
;;
|
2017-02-15 12:23:27 +00:00
|
|
|
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|\
|
2017-03-28 01:55:48 +00:00
|
|
|
rb-2011il|\
|
2017-02-15 12:23:27 +00:00
|
|
|
rb-2011uas|\
|
|
|
|
rb-2011uias|\
|
|
|
|
rb-2011uas-2hnd|\
|
|
|
|
rb-2011uias-2hnd|\
|
|
|
|
rb-sxt2n|\
|
|
|
|
rb-sxt5n)
|
2017-01-08 13:27:38 +00:00
|
|
|
nand_do_platform_check routerboard $1
|
|
|
|
return $?
|
|
|
|
;;
|
2016-10-05 12:53:11 +00:00
|
|
|
c-60|\
|
|
|
|
nbg6716|\
|
|
|
|
r6100|\
|
|
|
|
wndr3700v4|\
|
|
|
|
wndr4300)
|
|
|
|
nand_do_platform_check $board $1
|
|
|
|
return $?
|
|
|
|
;;
|
2016-09-29 10:00:17 +00:00
|
|
|
cpe210|\
|
2016-10-06 21:46:38 +00:00
|
|
|
cpe510|\
|
2017-01-05 15:01:17 +00:00
|
|
|
eap120|\
|
|
|
|
wbs210|\
|
|
|
|
wbs510)
|
2016-09-29 10:00:17 +00:00
|
|
|
tplink_pharos_check_image "$1" && return 0
|
|
|
|
return 1
|
|
|
|
;;
|
2016-09-23 07:37:44 +00:00
|
|
|
a40|\
|
2016-08-09 14:00:55 +00:00
|
|
|
a60|\
|
2016-09-29 10:00:17 +00:00
|
|
|
mr1750v2|\
|
|
|
|
mr1750|\
|
|
|
|
mr600v2|\
|
|
|
|
mr600|\
|
|
|
|
mr900v2|\
|
|
|
|
mr900|\
|
|
|
|
om2p-hsv2|\
|
|
|
|
om2p-hsv3|\
|
2016-06-02 09:29:23 +00:00
|
|
|
om2p-hsv4|\
|
2016-09-29 10:00:17 +00:00
|
|
|
om2p-hs|\
|
|
|
|
om2p-lc|\
|
|
|
|
om2pv2|\
|
2016-06-02 09:29:23 +00:00
|
|
|
om2pv4|\
|
2016-09-29 10:00:17 +00:00
|
|
|
om2p|\
|
|
|
|
om5p-acv2|\
|
|
|
|
om5p-ac|\
|
|
|
|
om5p-an|\
|
|
|
|
om5p)
|
|
|
|
platform_check_image_openmesh "$magic_long" "$1" && return 0
|
|
|
|
return 1
|
|
|
|
;;
|
|
|
|
mr18|\
|
|
|
|
z1)
|
|
|
|
merakinand_do_platform_check $board $1
|
|
|
|
return $?
|
|
|
|
;;
|
2016-10-11 18:32:26 +00:00
|
|
|
dir-869-a1|\
|
2016-09-29 10:00:17 +00:00
|
|
|
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
|
|
|
|
;;
|
2016-11-27 06:52:53 +00:00
|
|
|
e2100l|\
|
2016-09-29 10:00:17 +00:00
|
|
|
mynet-rext|\
|
|
|
|
wrt160nl)
|
|
|
|
cybertan_check_image "$1" && return 0
|
2014-07-14 16:03:35 +00:00
|
|
|
return 1
|
|
|
|
;;
|
2016-09-29 09:44:44 +00:00
|
|
|
nbg6616|\
|
|
|
|
uap-pro|\
|
|
|
|
unifi-outdoor-plus)
|
2012-12-17 12:28:11 +00:00
|
|
|
[ "$magic_long" != "19852003" ] && {
|
|
|
|
echo "Invalid image type."
|
|
|
|
return 1
|
|
|
|
}
|
2016-09-29 09:44:44 +00:00
|
|
|
|
2009-06-06 17:44:49 +00:00
|
|
|
return 0
|
|
|
|
;;
|
2016-09-29 10:00:17 +00:00
|
|
|
tube2h)
|
|
|
|
alfa_check_image "$1" && return 0
|
|
|
|
return 1
|
|
|
|
;;
|
2016-09-29 09:44:44 +00:00
|
|
|
wndr3700|\
|
|
|
|
wnr1000-v2|\
|
|
|
|
wnr2000-v3|\
|
|
|
|
wnr612-v2|\
|
2016-01-19 10:16:04 +00:00
|
|
|
wpn824n)
|
2011-12-05 13:03:54 +00:00
|
|
|
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."
|
2009-11-28 08:25:56 +00:00
|
|
|
return 1
|
|
|
|
}
|
2016-09-29 09:44:44 +00:00
|
|
|
|
2009-11-25 09:51:25 +00:00
|
|
|
return 0
|
|
|
|
;;
|
2015-12-23 23:42:18 +00:00
|
|
|
wnr2000-v4)
|
2014-11-03 20:20:56 +00:00
|
|
|
[ "$magic_long" != "32303034" ] && {
|
|
|
|
echo "Invalid image type."
|
|
|
|
return 1
|
|
|
|
}
|
2016-09-29 09:44:44 +00:00
|
|
|
|
2014-11-03 20:20:56 +00:00
|
|
|
return 0
|
|
|
|
;;
|
2015-12-23 23:42:18 +00:00
|
|
|
wnr2200)
|
2016-09-29 09:44:44 +00:00
|
|
|
[ "$magic_long" != "32323030" ] && {
|
|
|
|
echo "Invalid image type."
|
|
|
|
return 1
|
|
|
|
}
|
2014-11-03 20:20:56 +00:00
|
|
|
|
2016-09-29 09:44:44 +00:00
|
|
|
return 0
|
|
|
|
;;
|
2016-07-18 17:39:57 +00:00
|
|
|
dap-2695-a1)
|
|
|
|
local magic=$(wrgg_get_image_magic "$1")
|
|
|
|
[ "$magic" != "21030820" ] && {
|
|
|
|
echo "Invalid image, bad type: $magic"
|
|
|
|
return 1
|
|
|
|
}
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
;;
|
2017-02-15 10:40:06 +00:00
|
|
|
# these boards use metadata images
|
|
|
|
rb-750-r2|\
|
|
|
|
rb-750up-r2|\
|
|
|
|
rb-941-2nd|\
|
|
|
|
rb-951ui-2nd|\
|
2017-03-08 09:07:00 +00:00
|
|
|
rb-952ui-5ac2nd|\
|
2017-03-17 04:00:33 +00:00
|
|
|
rb-962uigs-5hact2hnt|\
|
2017-03-06 22:06:13 +00:00
|
|
|
rb-lhg-5nd|\
|
2017-02-15 10:40:06 +00:00
|
|
|
rb-mapl-2nd)
|
|
|
|
return 0
|
|
|
|
;;
|
2009-06-06 17:44:49 +00:00
|
|
|
esac
|
|
|
|
|
|
|
|
echo "Sysupgrade is not yet supported on $board."
|
|
|
|
return 1
|
|
|
|
}
|
|
|
|
|
2015-05-10 13:54:25 +00:00
|
|
|
platform_pre_upgrade() {
|
|
|
|
local board=$(ar71xx_board_name)
|
|
|
|
|
|
|
|
case "$board" in
|
2016-10-05 12:53:11 +00:00
|
|
|
c-60|\
|
2016-09-29 09:44:44 +00:00
|
|
|
nbg6716|\
|
|
|
|
r6100|\
|
2017-02-15 12:23:27 +00:00
|
|
|
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|\
|
2017-03-28 01:55:48 +00:00
|
|
|
rb-2011il|\
|
2017-02-15 12:23:27 +00:00
|
|
|
rb-2011l|\
|
|
|
|
rb-2011uas|\
|
|
|
|
rb-2011uias|\
|
|
|
|
rb-2011uas-2hnd|\
|
|
|
|
rb-2011uias-2hnd|\
|
|
|
|
rb-sxt2n|\
|
|
|
|
rb-sxt5n|\
|
2016-09-29 09:44:44 +00:00
|
|
|
wndr3700v4|\
|
|
|
|
wndr4300)
|
2015-05-10 13:54:25 +00:00
|
|
|
nand_do_upgrade "$1"
|
|
|
|
;;
|
2017-02-23 11:24:05 +00:00
|
|
|
rb-750-r2|\
|
|
|
|
rb-750up-r2|\
|
|
|
|
rb-941-2nd|\
|
|
|
|
rb-951ui-2nd|\
|
2017-03-08 09:07:00 +00:00
|
|
|
rb-952ui-5ac2nd|\
|
2017-03-17 04:00:33 +00:00
|
|
|
rb-962uigs-5hact2hnt|\
|
2017-03-06 22:06:13 +00:00
|
|
|
rb-lhg-5nd|\
|
2017-02-23 11:24:05 +00:00
|
|
|
rb-mapl-2nd)
|
|
|
|
# erase firmware if booted from initramfs
|
|
|
|
[ -z "$(rootfs_type)" ] && mtd erase firmware
|
|
|
|
;;
|
2016-10-05 12:53:11 +00:00
|
|
|
mr18|\
|
|
|
|
z1)
|
|
|
|
merakinand_do_upgrade "$1"
|
|
|
|
;;
|
2015-05-10 13:54:25 +00:00
|
|
|
esac
|
|
|
|
}
|
|
|
|
|
2017-01-08 13:27:38 +00:00
|
|
|
platform_nand_pre_upgrade() {
|
|
|
|
local board=$(ar71xx_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
|
|
|
|
}
|
|
|
|
|
2009-11-25 09:51:25 +00:00
|
|
|
platform_do_upgrade() {
|
|
|
|
local board=$(ar71xx_board_name)
|
|
|
|
|
|
|
|
case "$board" in
|
2016-09-29 10:00:17 +00:00
|
|
|
all0258n)
|
|
|
|
platform_do_upgrade_allnet "0x9f050000" "$ARGV"
|
|
|
|
;;
|
2016-09-29 09:44:44 +00:00
|
|
|
all0305|\
|
|
|
|
eap7660d|\
|
|
|
|
ja76pf2|\
|
|
|
|
ja76pf|\
|
|
|
|
jwap003|\
|
|
|
|
ls-sr71|\
|
|
|
|
pb42|\
|
|
|
|
pb44|\
|
|
|
|
routerstation-pro|\
|
|
|
|
routerstation)
|
2009-11-25 09:51:25 +00:00
|
|
|
platform_do_upgrade_combined "$ARGV"
|
|
|
|
;;
|
2016-09-29 09:44:44 +00:00
|
|
|
all0315n)
|
2012-08-27 14:55:36 +00:00
|
|
|
platform_do_upgrade_allnet "0x9f080000" "$ARGV"
|
2011-11-01 09:23:32 +00:00
|
|
|
;;
|
2016-09-29 09:44:44 +00:00
|
|
|
cap4200ag|\
|
|
|
|
eap300v2)
|
2012-10-27 08:55:42 +00:00
|
|
|
platform_do_upgrade_allnet "0xbf0a0000" "$ARGV"
|
|
|
|
;;
|
2016-09-29 09:44:44 +00:00
|
|
|
dir-825-b1|\
|
2012-09-25 12:57:41 +00:00
|
|
|
tew-673gru)
|
|
|
|
platform_do_upgrade_dir825b "$ARGV"
|
|
|
|
;;
|
2016-09-23 07:37:44 +00:00
|
|
|
a40|\
|
2016-08-09 14:00:55 +00:00
|
|
|
a60|\
|
2016-09-29 09:44:44 +00:00
|
|
|
mr1750v2|\
|
|
|
|
mr1750|\
|
|
|
|
mr600v2|\
|
|
|
|
mr600|\
|
|
|
|
mr900v2|\
|
|
|
|
mr900|\
|
|
|
|
om2p-hsv2|\
|
|
|
|
om2p-hsv3|\
|
2016-06-02 09:29:23 +00:00
|
|
|
om2p-hsv4|\
|
2016-09-29 09:44:44 +00:00
|
|
|
om2p-hs|\
|
|
|
|
om2p-lc|\
|
|
|
|
om2pv2|\
|
2016-06-02 09:29:23 +00:00
|
|
|
om2pv4|\
|
2016-09-29 09:44:44 +00:00
|
|
|
om2p|\
|
|
|
|
om5p-acv2|\
|
|
|
|
om5p-ac|\
|
|
|
|
om5p-an|\
|
|
|
|
om5p)
|
2012-11-18 09:32:39 +00:00
|
|
|
platform_do_upgrade_openmesh "$ARGV"
|
2012-07-05 08:26:57 +00:00
|
|
|
;;
|
2016-09-29 09:44:44 +00:00
|
|
|
uap-pro|\
|
|
|
|
unifi-outdoor-plus)
|
2013-11-14 19:38:54 +00:00
|
|
|
MTD_CONFIG_ARGS="-s 0x180000"
|
|
|
|
default_do_upgrade "$ARGV"
|
|
|
|
;;
|
2016-09-29 10:00:17 +00:00
|
|
|
wp543|\
|
|
|
|
wpe72)
|
|
|
|
platform_do_upgrade_compex "$ARGV"
|
|
|
|
;;
|
2009-11-25 09:51:25 +00:00
|
|
|
*)
|
|
|
|
default_do_upgrade "$ARGV"
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
}
|
2009-06-06 17:44:49 +00:00
|
|
|
|
|
|
|
disable_watchdog() {
|
|
|
|
killall watchdog
|
|
|
|
( ps | grep -v 'grep' | grep '/dev/watchdog' ) && {
|
|
|
|
echo 'Could not disable watchdog'
|
|
|
|
return 1
|
|
|
|
}
|
|
|
|
}
|
2009-08-02 09:27:38 +00:00
|
|
|
|
2009-06-06 17:44:49 +00:00
|
|
|
append sysupgrade_pre_upgrade disable_watchdog
|