aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/ar71xx
diff options
context:
space:
mode:
authorAdrian Schmutzler <freifunk@adrianschmutzler.de>2018-01-19 12:58:40 +0100
committerMatthias Schiffer <mschiffer@universe-factory.net>2018-06-23 16:08:20 +0200
commit5dd340074695aa0356335e2217dcd71b05044ba4 (patch)
tree31a2151e490354623993347fdaae1dbbb8eb065b /target/linux/ar71xx
parentc437adb02473accadeec252e9d87d58ce44cd6ed (diff)
downloadupstream-5dd340074695aa0356335e2217dcd71b05044ba4.tar.gz
upstream-5dd340074695aa0356335e2217dcd71b05044ba4.tar.bz2
upstream-5dd340074695aa0356335e2217dcd71b05044ba4.zip
ar71xx: Add TP-Link Pharos v2 board detection
Add support for detecting TP-Link Pharos v2 boards. They use different format in product-info partition than v1 boards. Code was written mostly by Alexander Couzens <lynxis@fe80.eu> Signed-off-by: Robert Marko <robimarko@gmail.com> Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de> (cherry picked from commit 2524febf7927a1bf430d64b7790feb126023e3d1)
Diffstat (limited to 'target/linux/ar71xx')
-rwxr-xr-xtarget/linux/ar71xx/base-files/lib/ar71xx.sh24
-rwxr-xr-xtarget/linux/ar71xx/base-files/lib/upgrade/platform.sh23
2 files changed, 33 insertions, 14 deletions
diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh
index d57e0571c7..f2bc57cb30 100755
--- a/target/linux/ar71xx/base-files/lib/ar71xx.sh
+++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh
@@ -371,7 +371,7 @@ tplink_pharos_get_model_string() {
}
tplink_pharos_board_detect() {
- local model_string="$(tplink_pharos_get_model_string | tr -d '\r')"
+ local model_string="$1"
local oIFS="$IFS"; IFS=":"; set -- $model_string; IFS="$oIFS"
local model="${1%%\(*}"
@@ -379,6 +379,14 @@ tplink_pharos_board_detect() {
AR71XX_MODEL="TP-Link $model v$2"
}
+tplink_pharos_v2_get_model_string() {
+ local part
+ part=$(find_mtd_part 'product-info')
+ [ -z "$part" ] && return 1
+
+ dd if=$part bs=1 skip=4360 count=64 2>/dev/null | tr -d '\r\0' | head -n 1
+}
+
ar71xx_board_detect() {
local machine
local name
@@ -563,14 +571,18 @@ ar71xx_board_detect() {
;;
*"CPE210/220")
name="cpe210"
- tplink_pharos_board_detect
+ tplink_pharos_board_detect "$(tplink_pharos_get_model_string | tr -d '\r')"
+ ;;
+ *"CPE210 v2")
+ name="cpe210-v2"
+ tplink_pharos_board_detect "$(tplink_pharos_v2_get_model_string)"
;;
*"CPE505N")
name="cpe505n"
;;
*"CPE510/520")
name="cpe510"
- tplink_pharos_board_detect
+ tplink_pharos_board_detect "$(tplink_pharos_get_model_string | tr -d '\r')"
;;
*"CPE830")
name="cpe830"
@@ -671,7 +683,7 @@ ar71xx_board_detect() {
;;
*"EAP120")
name="eap120"
- tplink_pharos_board_detect
+ tplink_pharos_board_detect "$(tplink_pharos_get_model_string | tr -d '\r')"
;;
*"EAP300 v2")
name="eap300v2"
@@ -1364,11 +1376,11 @@ ar71xx_board_detect() {
;;
*"WBS210")
name="wbs210"
- tplink_pharos_board_detect
+ tplink_pharos_board_detect "$(tplink_pharos_get_model_string | tr -d '\r')"
;;
*"WBS510")
name="wbs510"
- tplink_pharos_board_detect
+ tplink_pharos_board_detect "$(tplink_pharos_get_model_string | tr -d '\r')"
;;
"WeIO"*)
name="weio"
diff --git a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
index 3b5c5da6fb..4402c70af4 100755
--- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
@@ -97,10 +97,11 @@ 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 | (
+ 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
@@ -110,17 +111,19 @@ tplink_pharos_check_support_list() {
}
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
}
@@ -578,7 +581,11 @@ 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)
+ tplink_pharos_check_image "$1" "01000000" "$(tplink_pharos_v2_get_model_string)" '\0\xff\r' && return 0
return 1
;;
a40|\