diff options
Diffstat (limited to 'target/linux/ar71xx/base-files/lib/ar71xx.sh')
-rwxr-xr-x | target/linux/ar71xx/base-files/lib/ar71xx.sh | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh index 8dde6ef707..a802258817 100755 --- a/target/linux/ar71xx/base-files/lib/ar71xx.sh +++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh @@ -229,6 +229,39 @@ tplink_board_detect() { AR71XX_MODEL="$model $hwver" } +tplink_pharos_get_model_string() { + local part + part=$(find_mtd_part 'product-info') + [ -z "$part" ] && return 1 + + # The returned string will end with \r\n, but we don't remove it here + # to simplify matching against it in the sysupgrade image check + dd if=$part bs=1 skip=4360 2>/dev/null | head -n 1 +} + +tplink_pharos_board_detect() { + local model_string="$(tplink_pharos_get_model_string | tr -d '\r')" + local oIFS="$IFS"; IFS=":"; set -- $model_string; IFS="$oIFS" + local model + + case "$1" in + 'CPE210(TP-LINK|UN|N300-2)') + model='TP-Link CPE210' + ;; + 'CPE220(TP-LINK|UN|N300-2)') + model='TP-Link CPE220' + ;; + 'CPE510(TP-LINK|UN|N300-5)') + model='TP-Link CPE510' + ;; + 'CPE520(TP-LINK|UN|N300-5)') + model='TP-Link CPE520' + ;; + esac + + [ -n "$model" ] && AR71XX_MODEL="$model v$2" +} + ar71xx_board_detect() { local machine local name @@ -302,6 +335,10 @@ ar71xx_board_detect() { *CAP4200AG) name="cap4200ag" ;; + *"CPE210/220/510/520") + name="cpe510" + tplink_pharos_board_detect + ;; *"DB120 reference board") name="db120" ;; @@ -775,7 +812,8 @@ ar71xx_board_detect() { ;; esac - [ "${machine:0:8}" = 'TP-LINK ' ] && tplink_board_detect "$machine" + [ -z "$AR71XX_MODEL" ] && [ "${machine:0:8}" = 'TP-LINK ' ] && \ + tplink_board_detect "$machine" [ -z "$name" ] && name="unknown" |