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>
This commit is contained in:
parent
65c05301c2
commit
2524febf79
2 changed files with 33 additions and 14 deletions
|
@ -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"
|
||||
|
@ -1370,11 +1382,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"
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
@ -579,7 +582,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|\
|
||||
|
|
Loading…
Reference in a new issue