2
0
forked from Ivasoft/openwrt

ar71xx: add support for TP-LINK CPE210/220/510/520

This adds support for the TP-LINK CPE210/220/510/520 (Pharos series). These
devices are very similar to the Ubiquiti NanoStations, but with better specs:
faster CPU, more RAM, 2x2 MIMO.

Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>

SVN-Revision: 43385
This commit is contained in:
John Crispin
2014-11-26 08:59:32 +00:00
parent f318ae995a
commit 47ab1cbf23
10 changed files with 256 additions and 7 deletions

View File

@@ -43,6 +43,9 @@ get_status_led() {
cap4200ag)
status_led="senao:green:pwr"
;;
cpe510)
status_led="tp-link:green:link4"
;;
db120)
status_led="db120:green:status"
;;

View File

@@ -62,6 +62,16 @@ carambola2)
ucidef_set_led_wlan "wlan" "WLAN" "carambola2:green:wlan" "phy0tpt"
;;
cpe510)
ucidef_set_led_switch "lan0" "LAN0" "tp-link:green:lan0" "switch0" "0x20"
ucidef_set_led_switch "lan1" "LAN1" "tp-link:green:lan1" "switch0" "0x10"
ucidef_set_rssimon "wlan0" "40000" "1"
ucidef_set_led_rssi "rssilow" "RSSILOW" "tp-link:green:link1" "wlan0" "1" "100" "0" "13"
ucidef_set_led_rssi "rssimediumlow" "RSSIMEDIUMLOW" "tp-link:green:link2" "wlan0" "26" "100" "-25" "13"
ucidef_set_led_rssi "rssimediumhigh" "RSSIMEDIUMHIGH" "tp-link:green:link3" "wlan0" "51" "100" "-50" "13"
ucidef_set_led_rssi "rssihigh" "RSSIHIGH" "tp-link:green:link4" "wlan0" "76" "100" "-75" "13"
;;
db120)
ucidef_set_led_usbdev "usb" "USB" "db120:green:usb" "1-1"
;;

View File

@@ -63,6 +63,13 @@ tl-wdr4900-v2)
ucidef_add_switch_vlan "switch0" "2" "1 6"
;;
cpe510)
ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2"
ucidef_add_switch "switch0" "1" "1"
ucidef_add_switch_vlan "switch0" "1" "0t 5"
ucidef_add_switch_vlan "switch0" "2" "0t 4"
;;
db120 |\
rb-2011l | \
rb-2011uas |\

View File

@@ -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"

View File

@@ -70,6 +70,33 @@ 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"'
}
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
[ "$line" == "$model_string" ] && break
done || {
echo "Unsupported image (model not in support-list)"
return 1
}
return 0
}
seama_get_type_magic() {
get_image "$@" | dd bs=1 count=4 skip=53 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"'
}
@@ -217,6 +244,11 @@ platform_check_image() {
return 0
;;
cpe510)
tplink_pharos_check_image "$1" && return 0
return 1
;;
dir-825-b1 | \
tew-673gru)
dir825b_check_image "$1" && return 0