ramips: add support for TP-Link RE200 v3
authorRichard Fröhning <misanthropos@gmx.de>
Sun, 2 Aug 2020 14:22:50 +0000 (16:22 +0200)
committerAdrian Schmutzler <freifunk@adrianschmutzler.de>
Mon, 3 Aug 2020 21:34:34 +0000 (23:34 +0200)
TP-Link RE200 v3 is a wireless range extender with Ethernet and 2.4G and 5G
WiFi with internal antennas. It's based on MediaTek MT7628AN+MT7610EN like the v2.

Specifications
--------------

- MediaTek MT7628AN (580 Mhz)
- 64 MB of RAM
- 8 MB of FLASH
- 2T2R 2.4 GHz and 1T1R 5 GHz
- 1x 10/100 Mbps Ethernet
- 8x LED (GPIO-controlled), 2x button

Unverified:
- UART header on PCB (57600 8n1)

There are 2.4G and 5G LEDs in red and green which are controlled
separately.

MAC addresses
-------------

MAC address assignment has been done according to the RE200 v2.

The label MAC address matches the OpenWrt ethernet address.

Installation
------------

Web Interface
-------------

It is possible to upgrade to OpenWrt via the web interface. Simply flash
the -factory.bin from OEM. In contrast to a stock firmware, this will not
overwrite U-Boot.

Recovery
--------

Unfortunately, this devices does not offer a recovery mode or a tftp
installation method. If the web interface upgrade fails, you have to open
your device and attach serial console.

The device has not been opened for adding support. However, it is expected
that the behavior is similar to the RE200 v2. Instructions for serial console
and recovery may be checked out in commit 6d6f36ae787c ("ramips: add support
for TP-Link RE200 v2") or on the device's Wiki page.

Signed-off-by: Richard Fröhning <misanthropos@gmx.de>
[adjust commit title/message, sort support list]
Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
target/linux/ramips/dts/mt7628an_tplink_re200-v3.dts [new file with mode: 0644]
target/linux/ramips/image/mt76x8.mk
target/linux/ramips/mt76x8/base-files/etc/board.d/01_leds
target/linux/ramips/mt76x8/base-files/etc/board.d/02_network
tools/firmware-utils/src/tplink-safeloader.c

diff --git a/target/linux/ramips/dts/mt7628an_tplink_re200-v3.dts b/target/linux/ramips/dts/mt7628an_tplink_re200-v3.dts
new file mode 100644 (file)
index 0000000..21d2564
--- /dev/null
@@ -0,0 +1,70 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/dts-v1/;
+
+#include "mt7628an_tplink_re200.dtsi"
+
+/ {
+       compatible = "tplink,re200-v3", "mediatek,mt7628an-soc";
+       model = "TP-Link RE200 v3";
+
+       aliases {
+               led-boot = &led_power;
+               led-failsafe = &led_power;
+               led-running = &led_power;
+               led-upgrade = &led_power;
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               wps {
+                       label = "re200-v3:green:wps";
+                       gpios = <&gpio 5 GPIO_ACTIVE_LOW>;
+               };
+
+               wifi {
+                       label = "re200-v3:green:wifi";
+                       gpios = <&gpio 4 GPIO_ACTIVE_LOW>;
+               };
+
+               lan {
+                       label = "re200-v3:green:lan";
+                       gpios = <&gpio 39 GPIO_ACTIVE_LOW>;
+               };
+
+               led_power: power {
+                       label = "re200-v3:green:power";
+                       gpios = <&gpio 44 GPIO_ACTIVE_LOW>;
+               };
+
+               wifi2g_green {
+                       label = "re200-v3:green:wifi2g";
+                       gpios = <&gpio 41 GPIO_ACTIVE_LOW>;
+                       linux,default-trigger = "phy0tpt";
+               };
+
+               wifi5g_green {
+                       label = "re200-v3:green:wifi5g";
+                       gpios = <&gpio 42 GPIO_ACTIVE_LOW>;
+                       linux,default-trigger = "phy1tpt";
+               };
+
+               wifi2g_red {
+                       label = "re200-v3:red:wifi2g";
+                       gpios = <&gpio 43 GPIO_ACTIVE_LOW>;
+               };
+
+               wifi5g_red {
+                       label = "re200-v3:red:wifi5g";
+                       gpios = <&gpio 40 GPIO_ACTIVE_LOW>;
+               };
+       };
+};
+
+&state_default {
+       gpio {
+               groups = "p4led_an", "p3led_an", "p2led_an", "p1led_an",
+                               "p0led_an", "wled_an", "i2c", "wdt", "refclk";
+               function = "gpio";
+       };
+};
index 9ec469d32df5244edc2e2ec297d470499e602b8d..d170eaa065a03169d60a9326caab77a3a6f80189 100644 (file)
@@ -404,6 +404,16 @@ define Device/tplink_re200-v2
 endef
 TARGET_DEVICES += tplink_re200-v2
 
+define Device/tplink_re200-v3
+  $(Device/tplink-safeloader)
+  IMAGE_SIZE := 7808k
+  DEVICE_MODEL := RE200
+  DEVICE_VARIANT := v3
+  DEVICE_PACKAGES := kmod-mt76x0e
+  TPLINK_BOARD_ID := RE200-V3
+endef
+TARGET_DEVICES += tplink_re200-v3
+
 define Device/tplink_re220-v2
   $(Device/tplink-safeloader)
   IMAGE_SIZE := 7808k
index 1e478df4efa1c57cbaa3547462cadcb84f877ac6..94c5cb5d49ca01ca94c0f155086704c99df90773 100755 (executable)
@@ -69,6 +69,7 @@ tplink,archer-c50-v4)
        ucidef_set_led_wlan "wlan5g" "wlan5g" "$boardname:green:wlan5g" "phy1tpt"
        ;;
 tplink,re200-v2|\
+tplink,re200-v3|\
 tplink,re220-v2|\
 tplink,tl-mr3020-v3|\
 tplink,tl-wa801nd-v5)
index cf7e88ebf1b755ebc438378d11df753fd78b5d02..83437ea3646acb98f8afa6336553273c0d0577df 100755 (executable)
@@ -19,6 +19,7 @@ ramips_setup_interfaces()
        ravpower,rp-wd009|\
        tama,w06|\
        tplink,re200-v2|\
+       tplink,re200-v3|\
        tplink,re220-v2|\
        tplink,re305-v1|\
        tplink,tl-mr3020-v3|\
index 3f83f19d2de7e7353a4b1268998086d2ae70473c..a5f3ced16d871ed72d8cd5728605a802938184cc 100644 (file)
@@ -1562,6 +1562,50 @@ static struct device_info boards[] = {
                .last_sysupgrade_partition = "file-system"
        },
 
+  /** Firmware layout for the RE200 v3 */
+       {
+               .id     = "RE200-V3",
+               .vendor = "",
+               .support_list =
+                       "SupportList:\n"
+                       "{product_name:RE200,product_ver:3.0.0,special_id:00000000}\n"
+                       "{product_name:RE200,product_ver:3.0.0,special_id:41520000}\n"
+                       "{product_name:RE200,product_ver:3.0.0,special_id:41550000}\n"
+                       "{product_name:RE200,product_ver:3.0.0,special_id:42520000}\n"
+                       "{product_name:RE200,product_ver:3.0.0,special_id:43410000}\n"
+                       "{product_name:RE200,product_ver:3.0.0,special_id:45470000}\n"
+                       "{product_name:RE200,product_ver:3.0.0,special_id:45530000}\n"
+                       "{product_name:RE200,product_ver:3.0.0,special_id:45550000}\n"
+                       "{product_name:RE200,product_ver:3.0.0,special_id:49440000}\n"
+                       "{product_name:RE200,product_ver:3.0.0,special_id:4A500000}\n"
+                       "{product_name:RE200,product_ver:3.0.0,special_id:4B520000}\n"
+                       "{product_name:RE200,product_ver:3.0.0,special_id:52550000}\n"
+                       "{product_name:RE200,product_ver:3.0.0,special_id:54570000}\n"
+                       "{product_name:RE200,product_ver:3.0.0,special_id:55530000}\n",
+               .support_trail = '\x00',
+               .soft_ver = NULL,
+
+               .partitions = {
+                       {"fs-uboot", 0x00000, 0x20000},
+                       {"firmware", 0x20000, 0x7a0000},
+                       {"partition-table", 0x7c0000, 0x02000},
+                       {"default-mac", 0x7c2000, 0x00020},
+                       {"pin", 0x7c2100, 0x00020},
+                       {"product-info", 0x7c3100, 0x01000},
+                       {"soft-version", 0x7c4200, 0x01000},
+                       {"support-list", 0x7c5200, 0x01000},
+                       {"profile", 0x7c6200, 0x08000},
+                       {"config-info", 0x7ce200, 0x00400},
+                       {"user-config", 0x7d0000, 0x10000},
+                       {"default-config", 0x7e0000, 0x10000},
+                       {"radio", 0x7f0000, 0x10000},
+                       {NULL, 0, 0}
+               },
+
+               .first_sysupgrade_partition = "os-image",
+               .last_sysupgrade_partition = "file-system"
+       },
+
        /** Firmware layout for the RE220 v2 */
        {
                .id     = "RE220-V2",