ramips: add support for TP-Link RE305 v3
authorMichal Kozuch <servitkar@gmail.com>
Fri, 19 Mar 2021 19:20:11 +0000 (20:20 +0100)
committerAdrian Schmutzler <freifunk@adrianschmutzler.de>
Sat, 30 Oct 2021 20:05:25 +0000 (22:05 +0200)
Specs (same as in v1):
- MT7628AN (575 MHz)
- 64MB RAM
- 8MB of flash (SPI NOR)
- 1x 10/100Mbps Ethernet (MT7628AN built-in switch with vlan)
- 1x 2.4GHz wifi (MT7628AN)
- 1x 5Ghz wifi (MT7612E)
- 4x LEDs (5 GPIO-controlled)
- 1x reset button
- 1x WPS button

The only and important difference between v1 & v3 is in flash memory
layout, so pls don't interchange these 2 builds!

Installation through web-ui (on OEM factory firmware):
1. Visit http://tplinkrepeater.net or the configured IP address of
   your RE305 v3 (default 192.168.0.254).
2. Log in with the password you've set during initial setup of the
   RE305 (there is no default password).
3. Go to Settings -> System Tools -> Firmware upgrade
4. Click Browse and select the OpenWRT image with factory.bin suffix
   (not sysupgrade.bin)
5. A window with a progress bar will appear. Wait until it completes.
6. The RE305 will reboot into OpenWRT and serve DHCP requests on the
   ethernet port.
7. Connect an RJ45 cable from the RE305 to your computer and access
   LuCI at http://192.168.1.1/ to configure (or use ssh).

Disassembly:
Just unscrew 4 screws in the corners & take off the back cover.
Serial is exposed to the right side of the main board (in the middle)
and marked with TX/RX/3V3/GND, but the holes are filled with solder.

Installation through serial:
1. connect trough serial (1n8, baudrate=57600)
2. setup the TFTP server and connect it via ethernet
   (ipaddr=192.168.0.254 of device, serverip=192.168.0.184 - your pc)
3. boot from a initramfs image first (choose 1 in the bootloader
   options)
4. test it a bit with that, then proceed to run sysupgrade build

MAC addresses as verified by OEM firmware:

  use  OpenWrt  address  reference
  LAN  eth0     *:d2     label
  2g   wlan0    *:d1     label - 1
  5g   wlan1    *:d0     label - 2

  The label MAC address can be found in config 0x2008.

Signed-off-by: Michal Kozuch <servitkar@gmail.com>
[redistribute WLAN node properties between DTS/DTSI, remove
 compatible on DTSI, fix indent/wrapping, split out firmware-utils
 change]
Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
target/linux/ramips/dts/mt7628an_tplink_re305-v1.dts
target/linux/ramips/dts/mt7628an_tplink_re305-v3.dts [new file with mode: 0644]
target/linux/ramips/dts/mt7628an_tplink_re305.dtsi [new file with mode: 0644]
target/linux/ramips/image/mt76x8.mk
target/linux/ramips/mt76x8/base-files/etc/board.d/02_network

index 6ac3730194a064bb990556493e4e047e2954b248..7948668b84781d8e8cf037e35511879030f1358d 100644 (file)
@@ -1,68 +1,10 @@
 // SPDX-License-Identifier: GPL-2.0-or-later OR MIT
 
 // SPDX-License-Identifier: GPL-2.0-or-later OR MIT
 
-#include "mt7628an.dtsi"
-
-#include <dt-bindings/gpio/gpio.h>
-#include <dt-bindings/input/input.h>
+#include "mt7628an_tplink_re305.dtsi"
 
 / {
        compatible = "tplink,re305-v1", "mediatek,mt7628an-soc";
        model = "TP-Link RE305 v1";
 
 / {
        compatible = "tplink,re305-v1", "mediatek,mt7628an-soc";
        model = "TP-Link RE305 v1";
-
-       aliases {
-               led-boot = &led_power;
-               led-failsafe = &led_power;
-               led-running = &led_power;
-               led-upgrade = &led_power;
-               label-mac-device = &ethernet;
-       };
-
-       keys {
-               compatible = "gpio-keys";
-
-               reset {
-                       label = "reset";
-                       gpios = <&gpio 37 GPIO_ACTIVE_LOW>;
-                       linux,code = <KEY_RESTART>;
-               };
-
-               wps {
-                       label = "wps";
-                       gpios = <&gpio 38 GPIO_ACTIVE_LOW>;
-                       linux,code = <KEY_WPS_BUTTON>;
-               };
-       };
-
-       leds {
-               compatible = "gpio-leds";
-
-               led_power: power {
-                       label = "blue:power";
-                       gpios = <&gpio 39 GPIO_ACTIVE_LOW>;
-               };
-
-               wlan2g {
-                       label = "blue:wlan2g";
-                       gpios = <&gpio 41 GPIO_ACTIVE_LOW>;
-                       linux,default-trigger = "phy0tpt";
-               };
-
-               wlan5g {
-                       label = "blue:wlan5g";
-                       gpios = <&gpio 40 GPIO_ACTIVE_LOW>;
-                       linux,default-trigger = "phy1tpt";
-               };
-
-               rssi1 {
-                       label = "red:rssi";
-                       gpios = <&gpio 43 GPIO_ACTIVE_LOW>;
-               };
-
-               rssi2 {
-                       label = "blue:rssi";
-                       gpios = <&gpio 42 GPIO_ACTIVE_LOW>;
-               };
-       };
 };
 
 &spi0 {
 };
 
 &spi0 {
        };
 };
 
        };
 };
 
-&state_default {
-       gpio {
-               groups = "refclk", "wdt", "p0led_an", "p1led_an", "p2led_an", "p3led_an", "p4led_an";
-               function = "gpio";
-       };
-};
-
-&pcie {
-       status = "okay";
-};
+&wlan5g {
+       mediatek,mtd-eeprom = <&radio 0x8000>;
 
 
-&pcie0 {
-       mt76@0,0 {
-               compatible = "mediatek,mt76";
-               reg = <0x0000 0 0 0 0>;
-               mediatek,mtd-eeprom = <&radio 0x8000>;
-               ieee80211-freq-limit = <5000000 6000000>;
-               nvmem-cells = <&macaddr_config_10008>;
-               nvmem-cell-names = "mac-address";
-               mac-address-increment = <2>;
-       };
+       nvmem-cells = <&macaddr_config_10008>;
+       nvmem-cell-names = "mac-address";
+       mac-address-increment = <2>;
 };
 
 &wmac {
 };
 
 &wmac {
-       status = "okay";
-
        mediatek,mtd-eeprom = <&radio 0x0>;
        mediatek,mtd-eeprom = <&radio 0x0>;
+
        nvmem-cells = <&macaddr_config_10008>;
        nvmem-cell-names = "mac-address";
        mac-address-increment = <1>;
        nvmem-cells = <&macaddr_config_10008>;
        nvmem-cell-names = "mac-address";
        mac-address-increment = <1>;
diff --git a/target/linux/ramips/dts/mt7628an_tplink_re305-v3.dts b/target/linux/ramips/dts/mt7628an_tplink_re305-v3.dts
new file mode 100644 (file)
index 0000000..652aebe
--- /dev/null
@@ -0,0 +1,79 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "mt7628an_tplink_re305.dtsi"
+
+/ {
+       compatible = "tplink,re305-v3", "mediatek,mt7628an-soc";
+       model = "TP-Link RE305 v3";
+};
+
+&spi0 {
+       status = "okay";
+
+       flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+               spi-max-frequency = <50000000>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       partition@0 {
+                               label = "u-boot";
+                               reg = <0x0 0x20000>;
+                               read-only;
+                       };
+
+                       partition@20000 {
+                               compatible = "tplink,firmware";
+                               label = "firmware";
+                               reg = <0x20000 0x7a0000>;
+                       };
+
+                       config: partition@7c0000 {
+                               label = "config";
+                               reg = <0x7c0000 0x30000>;
+                               read-only;
+                       };
+
+                       radio: partition@7f0000 {
+                               label = "radio";
+                               reg = <0x7f0000 0x10000>;
+                               read-only;
+                       };
+               };
+       };
+};
+
+&wlan5g {
+       mediatek,mtd-eeprom = <&radio 0x8000>;
+
+       nvmem-cells = <&macaddr_config_2008>;
+       nvmem-cell-names = "mac-address";
+       mac-address-increment = <(-2)>;
+};
+
+&wmac {
+       mediatek,mtd-eeprom = <&radio 0x0>;
+
+       nvmem-cells = <&macaddr_config_2008>;
+       nvmem-cell-names = "mac-address";
+       mac-address-increment = <(-1)>;
+};
+
+&ethernet {
+       nvmem-cells = <&macaddr_config_2008>;
+       nvmem-cell-names = "mac-address";
+};
+
+&config {
+       compatible = "nvmem-cells";
+       #address-cells = <1>;
+       #size-cells = <1>;
+
+       macaddr_config_2008: macaddr@2008 {
+               reg = <0x2008 0x6>;
+       };
+};
diff --git a/target/linux/ramips/dts/mt7628an_tplink_re305.dtsi b/target/linux/ramips/dts/mt7628an_tplink_re305.dtsi
new file mode 100644 (file)
index 0000000..029b955
--- /dev/null
@@ -0,0 +1,86 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "mt7628an.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+       aliases {
+               led-boot = &led_power;
+               led-failsafe = &led_power;
+               led-running = &led_power;
+               led-upgrade = &led_power;
+               label-mac-device = &ethernet;
+       };
+
+       keys {
+               compatible = "gpio-keys";
+
+               reset {
+                       label = "reset";
+                       gpios = <&gpio 37 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_RESTART>;
+               };
+
+               wps {
+                       label = "wps";
+                       gpios = <&gpio 38 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_WPS_BUTTON>;
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               led_power: power {
+                       label = "blue:power";
+                       gpios = <&gpio 39 GPIO_ACTIVE_LOW>;
+               };
+
+               wlan2g {
+                       label = "blue:wlan2g";
+                       gpios = <&gpio 41 GPIO_ACTIVE_LOW>;
+                       linux,default-trigger = "phy0tpt";
+               };
+
+               wlan5g {
+                       label = "blue:wlan5g";
+                       gpios = <&gpio 40 GPIO_ACTIVE_LOW>;
+                       linux,default-trigger = "phy1tpt";
+               };
+
+               rssi1 {
+                       label = "red:rssi";
+                       gpios = <&gpio 43 GPIO_ACTIVE_LOW>;
+               };
+
+               rssi2 {
+                       label = "blue:rssi";
+                       gpios = <&gpio 42 GPIO_ACTIVE_LOW>;
+               };
+       };
+};
+
+&state_default {
+       gpio {
+               groups = "refclk", "wdt", "p0led_an", "p1led_an", "p2led_an", "p3led_an", "p4led_an";
+               function = "gpio";
+       };
+};
+
+&pcie {
+       status = "okay";
+};
+
+&pcie0 {
+       wlan5g: mt76@0,0 {
+               compatible = "mediatek,mt76";
+               reg = <0x0000 0 0 0 0>;
+               ieee80211-freq-limit = <5000000 6000000>;
+       };
+};
+
+&wmac {
+       status = "okay";
+};
index 7862f7b7998742ace3c743603d8ee18a7a2ee2f1..5f5d281d5c01aa5717bfcb1f3ed7437e47598760 100644 (file)
@@ -512,6 +512,16 @@ define Device/tplink_re305-v1
 endef
 TARGET_DEVICES += tplink_re305-v1
 
 endef
 TARGET_DEVICES += tplink_re305-v1
 
+define Device/tplink_re305-v3
+  $(Device/tplink-safeloader)
+  IMAGE_SIZE := 7808k
+  DEVICE_MODEL := RE305
+  DEVICE_VARIANT := v3
+  DEVICE_PACKAGES := kmod-mt76x2
+  TPLINK_BOARD_ID := RE305-V3
+endef
+TARGET_DEVICES += tplink_re305-v3
+
 define Device/tplink_tl-mr3020-v3
   $(Device/tplink-v2)
   IMAGE_SIZE := 7808k
 define Device/tplink_tl-mr3020-v3
   $(Device/tplink-v2)
   IMAGE_SIZE := 7808k
index 7cdf27c00462070b11831ec191ccb09be5f87561..638b8f2181f9b8fc1297e1927e49fb066224d5f0 100644 (file)
@@ -25,6 +25,7 @@ ramips_setup_interfaces()
        tplink,re200-v4|\
        tplink,re220-v2|\
        tplink,re305-v1|\
        tplink,re200-v4|\
        tplink,re220-v2|\
        tplink,re305-v1|\
+       tplink,re305-v3|\
        tplink,tl-mr3020-v3|\
        tplink,tl-wr802n-v4|\
        tplink,tl-wa801nd-v5|\
        tplink,tl-mr3020-v3|\
        tplink,tl-wr802n-v4|\
        tplink,tl-wa801nd-v5|\