The Archer VR400 v1 is an EOL xDSL router with 802.11bgn/802.11ac wifi.

Hardware:
 - SoC: Broadcom BCM63167
 - CPU: dual core BMIPS4350 V8.0 @400MHz
 - RAM: 128 MB DDR2
 - Flash: 16 MB SPI NOR
 - Ethernet LAN: 3x 100Mbit
 - Ethernet WAN: 1x GbE
 - Wifi 2.4 GHz: SoC integrated BCM435F 802.11b/g/n 
 - WiFi 5 GHz: onboard BCM4352 802.11ac
 - USB: 1x 2.0
 - Buttons: 3x, 1 reset
 - LEDs: 10x, all green

Installation via UART serial console and TFTP:
 - Configure a static IP on the computer e.g: 192.168.1.7
 - Put the openwrt-factory.bin in a TFTP server in the computer
 - Power on the router with the serial console connected
 - While initializing the bootloader press any key to reach the CLI
 - At the CFE command line, execute the command:
   f 192.168.1.7:openwrt-factory.bin image
 - Wait until it finish.

Back to OEM firmware:
 - Stop the bootloader with the serial console
 - Flash the OEM firmware using the CFE web UI: http://192.168.1.1

Unsupported:
 - xDSL
 - Wifi 2.4 GHz
 - WiFi 5 GHz, BCM4352, might eventually get basic support.

Signed-off-by: Daniel González Cabanelas <dgcb...@gmail.com>
Signed-off-by: Artemii Karavashkin <artem.sid....@gmail.com>
---
Changes in v2:
 - added USB packages.

 .../bcm63xx/base-files/etc/board.d/01_leds    |   4 +
 .../bcm63xx/base-files/etc/board.d/02_network |   4 +
 .../dts/bcm63167-tplink-archer-vr400-v1.dts   | 177 ++++++++++++++++++
 target/linux/bcm63xx/image/bcm63xx.mk         |  14 ++
 .../patches-5.10/519-board_bcm63268.patch     |  52 ++++-
 ...31-board_bcm6348-bt-voyager-2500v-bb.patch |   2 +-
 .../patches-5.15/519-board_bcm63268.patch     |  52 ++++-
 ...31-board_bcm6348-bt-voyager-2500v-bb.patch |   2 +-
 8 files changed, 299 insertions(+), 8 deletions(-)
 create mode 100644 target/linux/bcm63xx/dts/bcm63167-tplink-archer-vr400-v1.dts

diff --git a/target/linux/bcm63xx/base-files/etc/board.d/01_leds 
b/target/linux/bcm63xx/base-files/etc/board.d/01_leds
index 75e8afef9d..92fb1bc408 100644
--- a/target/linux/bcm63xx/base-files/etc/board.d/01_leds
+++ b/target/linux/bcm63xx/base-files/etc/board.d/01_leds
@@ -94,6 +94,10 @@ sercomm,h500-s-vfes)
 telsey,cpva502plus)
        ucidef_set_led_netdev "lan" "LAN" "amber:link" "eth0"
        ;;
+tplink,archer-vr400-v1)
+       ucidef_set_led_netdev "wan" "WAN" "green:wan" "eth0.2"
+       ucidef_set_led_usbdev "usb" "USB" "green:usb" "1-1"
+       ;;
 esac
 
 board_config_flush
diff --git a/target/linux/bcm63xx/base-files/etc/board.d/02_network 
b/target/linux/bcm63xx/base-files/etc/board.d/02_network
index b48aa57d2e..32547bf448 100644
--- a/target/linux/bcm63xx/base-files/etc/board.d/02_network
+++ b/target/linux/bcm63xx/base-files/etc/board.d/02_network
@@ -159,6 +159,10 @@ sky,sr102)
        ucidef_add_switch "switch0" \
                "0:lan" "1:lan" "2:lan" "3:wan" "8t@eth0"
        ;;
+tplink,archer-vr400-v1)
+       ucidef_add_switch "switch0" \
+               "0:lan:3" "1:lan:2" "2:lan:1" "3:wan" "8t@eth0"
+       ;;
 *)
        ucidef_set_interfaces_lan_wan "eth1" "eth0"
        ;;
diff --git a/target/linux/bcm63xx/dts/bcm63167-tplink-archer-vr400-v1.dts 
b/target/linux/bcm63xx/dts/bcm63167-tplink-archer-vr400-v1.dts
new file mode 100644
index 0000000000..a3dbca7d78
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm63167-tplink-archer-vr400-v1.dts
@@ -0,0 +1,177 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Device Tree file for TP-Link Archer VR400 v1
+ *
+ * Copyright (C) 2022 Daniel González Cabanelas <dgcb...@gmail.com>
+ * Copyright (C) 2022 Artemii Karavashkin <artem.sid....@gmail.com>
+ */
+
+#include "bcm63268.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+       model = "TP-Link Archer VR400 v1";
+       compatible = "tplink,archer-vr400-v1", "brcm,bcm63167", "brcm,bcm63268";
+
+       aliases {
+               led-boot = &led_power_green;
+               led-failsafe = &led_power_green;
+               led-running = &led_power_green;
+               led-upgrade = &led_power_green;
+       };
+
+       chosen {
+               bootargs = "rootfstype=squashfs,jffs2 noinitrd 
console=ttyS0,115200";
+               stdout-path = "serial0:115200n8";
+       };
+
+       keys {
+               compatible = "gpio-keys";
+
+               reset {
+                       label = "reset";
+                       gpios = <&pinctrl 32 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_RESTART>;
+                       debounce-interval = <60>;
+               };
+
+               wps {
+                       label = "wps";
+                       gpios = <&pinctrl 33 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_WPS_BUTTON>;
+                       debounce-interval = <60>;
+               };
+
+               rfkill {
+                       label = "rfkill";
+                       gpios = <&pinctrl 35 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_RFKILL>;
+                       debounce-interval = <60>;
+               };
+       };
+
+       gpio-leds {
+               compatible = "gpio-leds";
+
+               wifi2g_green {
+                       label = "green:wifi2g";
+                       gpios = <&pinctrl 36 GPIO_ACTIVE_LOW>;
+               };
+       };
+};
+
+&leds {
+       status = "okay";
+
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_leds>;
+
+       usb_green {
+               reg = <1>;
+               active-low;
+               label = "green:usb";
+       };
+
+       wan_green {
+               reg = <8>;
+               active-low;
+               label = "green:wan";
+       };
+
+       ephy0_act {
+               reg = <9>;
+               brcm,hardware-controlled;
+       };
+
+       ephy1_act {
+               reg = <10>;
+               brcm,hardware-controlled;
+       };
+
+       ephy2_act {
+               reg = <11>;
+               brcm,hardware-controlled;
+       };
+
+       gphy0_act {
+               reg = <12>;
+               brcm,hardware-controlled;
+       };
+
+       wifi5g_green {
+               reg = <14>;
+               active-low;
+               label = "green:wifi5g";
+       };
+
+       led_power_green: power_green {
+               reg = <18>;
+               active-low;
+               label = "green:power";
+               default-state = "on";
+       };
+
+       dsl_green {
+               reg = <20>;
+               active-low;
+               label = "green:dsl";
+       };
+
+       wps_green {
+               reg = <22>;
+               active-low;
+               label = "green:wps";
+       };
+};
+
+&hsspi {
+       status = "okay";
+
+       flash@0 {
+               compatible = "jedec,spi-nor";
+               spi-max-frequency = <20000000>;
+               spi-tx-bus-width = <2>;
+               spi-rx-bus-width = <2>;
+               reg = <0>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       cfe@0 {
+                               reg = <0x000000 0x020000>;
+                               label = "cfe";
+                               read-only;
+                       };
+
+                       linux@10000 {
+                               reg = <0x020000 0xfa0000>;
+                               label = "linux";
+                               compatible = "tplink,firmware";
+                       };
+
+                       nvram@fc0000 {
+                               reg = <0xfc0000 0x040000>;
+                               label = "nvram";
+                       };
+               };
+       };
+};
+
+&pinctrl {
+       pinctrl_leds: leds {
+               function = "led";
+               pins = "gpio1", "gpio8",
+                      "gpio9", "gpio10",
+                      "gpio11", "gpio12",
+                      "gpio14", "gpio18",
+                      "gpio20", "gpio22";
+       };
+};
+
+&uart0 {
+       status = "okay";
+};
diff --git a/target/linux/bcm63xx/image/bcm63xx.mk 
b/target/linux/bcm63xx/image/bcm63xx.mk
index bbf4da6505..2fe4831ca5 100644
--- a/target/linux/bcm63xx/image/bcm63xx.mk
+++ b/target/linux/bcm63xx/image/bcm63xx.mk
@@ -1219,6 +1219,20 @@ endef
 TARGET_DEVICES += telsey_magic
 
 ### TP-Link ###
+define Device/tplink_archer-vr400-v1
+  $(Device/bcm63xx_tplink)
+  DEVICE_MODEL := Archer VR400
+  DEVICE_VARIANT := v1
+  TPLINK_HWID := 0x491dfa01
+  TPLINK_HWREV := 0x70
+  TPLINK_HWREVADD := 0x0
+  TPLINK_FLASHLAYOUT := 16Mqca
+  CHIP_ID := 63167
+  CFE_BIN_FILE := tplink,archer-vr400-v1/cfe63268.bin
+  DEVICE_PACKAGES := $(USB2_PACKAGES)
+endef
+TARGET_DEVICES += tplink_archer-vr400-v1
+
 define Device/tp-link_td-w8900gb
   $(Device/bcm63xx-legacy)
   DEVICE_VENDOR := TP-Link
diff --git a/target/linux/bcm63xx/patches-5.10/519-board_bcm63268.patch 
b/target/linux/bcm63xx/patches-5.10/519-board_bcm63268.patch
index 9693b4d3b0..1e49f17839 100644
--- a/target/linux/bcm63xx/patches-5.10/519-board_bcm63268.patch
+++ b/target/linux/bcm63xx/patches-5.10/519-board_bcm63268.patch
@@ -1,6 +1,6 @@
 --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
 +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -2697,6 +2697,273 @@ static struct board_info __initdata boar
+@@ -2697,6 +2697,317 @@ static struct board_info __initdata boar
  #endif /* CONFIG_BCM63XX_CPU_6368 */
  
  /*
@@ -227,6 +227,50 @@
 +      },
 +};
 +
++static struct board_info __initdata board_VR400 = {
++      .name = "963167TP",
++      .expected_cpu_id = 0x63268,
++
++      .has_pci = 1,
++      .has_ohci0 = 1,
++      .has_ehci0 = 1,
++      .num_usbh_ports = 1,
++
++      .has_enetsw = 1,
++      .enetsw = {
++              .used_ports = {
++                      [0] = {
++                              .used = 1,
++                              .phy_id = 1,
++                              .name = "LAN3",
++                      },
++                      [1] = {
++                              .used = 1,
++                              .phy_id = 2,
++                              .name = "LAN2",
++                      },
++                      [2] = {
++                              .used = 1,
++                              .phy_id = 3,
++                              .name = "LAN1",
++                      },
++                      [3] = {
++                              .used = 1,
++                              .phy_id = 4,
++                              .name = "LAN4/WAN",
++                      },
++              },
++      },
++
++      .use_fallback_sprom = 1,
++      .fallback_sprom = {
++              /* BCM4352 not supported */
++              //.type = SPROM_BCM4352,
++              .pci_bus = 1,
++              .pci_dev = 0,
++      },
++};
++
 +static struct board_info __initdata board_vw6339gu = {
 +      .name = "VW6339GU",
 +      .expected_cpu_id = 0x63268,
@@ -274,7 +318,7 @@
   * all boards
   */
  static const struct board_info __initconst *bcm963xx_boards[] = {
-@@ -2801,6 +3068,15 @@ static const struct board_info __initcon
+@@ -2801,6 +3112,16 @@ static const struct board_info __initcon
        &board_VR3026e,
        &board_WAP5813n,
  #endif /* CONFIG_BCM63XX_CPU_6368 */
@@ -285,12 +329,13 @@
 +      &board_H500s,
 +      &board_VG8050,
 +      &board_VR3032u,
++      &board_VR400,
 +      &board_vw6339gu,
 +#endif /* CONFIG_BCM63XX_CPU_63268 */
  };
  
  static struct of_device_id const bcm963xx_boards_dt[] = {
-@@ -2918,6 +3194,14 @@ static struct of_device_id const bcm963x
+@@ -2918,6 +3239,15 @@ static struct of_device_id const bcm963x
        { .compatible = "zyxel,p870hw-51a-v2", .data = &board_P870HW51A_V2, },
  #endif /* CONFIG_BCM63XX_CPU_6368 */
  #ifdef CONFIG_BCM63XX_CPU_63268
@@ -302,6 +347,7 @@
 +      { .compatible = "sercomm,h500-s-lowi", .data = &board_H500s, },
 +      { .compatible = "sercomm,h500-s-vfes", .data = &board_H500s, },
 +      { .compatible = "sky,sr102", .data = &board_BSKYB_63168, },
++      { .compatible = "tplink,archer-vr400-v1", .data = &board_VR400, },
  #endif /* CONFIG_BCM63XX_CPU_63268 */
  #endif /* CONFIG_OF */
        { },
diff --git 
a/target/linux/bcm63xx/patches-5.10/531-board_bcm6348-bt-voyager-2500v-bb.patch 
b/target/linux/bcm63xx/patches-5.10/531-board_bcm6348-bt-voyager-2500v-bb.patch
index 39728c45e4..b995b87626 100644
--- 
a/target/linux/bcm63xx/patches-5.10/531-board_bcm6348-bt-voyager-2500v-bb.patch
+++ 
b/target/linux/bcm63xx/patches-5.10/531-board_bcm6348-bt-voyager-2500v-bb.patch
@@ -1,6 +1,6 @@
 --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
 +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -3230,6 +3230,22 @@ void __init board_bcm963xx_init(void)
+@@ -3276,6 +3276,22 @@ void __init board_bcm963xx_init(void)
                val &= MPI_CSBASE_BASE_MASK;
        }
        boot_addr = (u8 *)KSEG1ADDR(val);
diff --git a/target/linux/bcm63xx/patches-5.15/519-board_bcm63268.patch 
b/target/linux/bcm63xx/patches-5.15/519-board_bcm63268.patch
index 9693b4d3b0..1e49f17839 100644
--- a/target/linux/bcm63xx/patches-5.15/519-board_bcm63268.patch
+++ b/target/linux/bcm63xx/patches-5.15/519-board_bcm63268.patch
@@ -1,6 +1,6 @@
 --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
 +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -2697,6 +2697,273 @@ static struct board_info __initdata boar
+@@ -2697,6 +2697,317 @@ static struct board_info __initdata boar
  #endif /* CONFIG_BCM63XX_CPU_6368 */
  
  /*
@@ -227,6 +227,50 @@
 +      },
 +};
 +
++static struct board_info __initdata board_VR400 = {
++      .name = "963167TP",
++      .expected_cpu_id = 0x63268,
++
++      .has_pci = 1,
++      .has_ohci0 = 1,
++      .has_ehci0 = 1,
++      .num_usbh_ports = 1,
++
++      .has_enetsw = 1,
++      .enetsw = {
++              .used_ports = {
++                      [0] = {
++                              .used = 1,
++                              .phy_id = 1,
++                              .name = "LAN3",
++                      },
++                      [1] = {
++                              .used = 1,
++                              .phy_id = 2,
++                              .name = "LAN2",
++                      },
++                      [2] = {
++                              .used = 1,
++                              .phy_id = 3,
++                              .name = "LAN1",
++                      },
++                      [3] = {
++                              .used = 1,
++                              .phy_id = 4,
++                              .name = "LAN4/WAN",
++                      },
++              },
++      },
++
++      .use_fallback_sprom = 1,
++      .fallback_sprom = {
++              /* BCM4352 not supported */
++              //.type = SPROM_BCM4352,
++              .pci_bus = 1,
++              .pci_dev = 0,
++      },
++};
++
 +static struct board_info __initdata board_vw6339gu = {
 +      .name = "VW6339GU",
 +      .expected_cpu_id = 0x63268,
@@ -274,7 +318,7 @@
   * all boards
   */
  static const struct board_info __initconst *bcm963xx_boards[] = {
-@@ -2801,6 +3068,15 @@ static const struct board_info __initcon
+@@ -2801,6 +3112,16 @@ static const struct board_info __initcon
        &board_VR3026e,
        &board_WAP5813n,
  #endif /* CONFIG_BCM63XX_CPU_6368 */
@@ -285,12 +329,13 @@
 +      &board_H500s,
 +      &board_VG8050,
 +      &board_VR3032u,
++      &board_VR400,
 +      &board_vw6339gu,
 +#endif /* CONFIG_BCM63XX_CPU_63268 */
  };
  
  static struct of_device_id const bcm963xx_boards_dt[] = {
-@@ -2918,6 +3194,14 @@ static struct of_device_id const bcm963x
+@@ -2918,6 +3239,15 @@ static struct of_device_id const bcm963x
        { .compatible = "zyxel,p870hw-51a-v2", .data = &board_P870HW51A_V2, },
  #endif /* CONFIG_BCM63XX_CPU_6368 */
  #ifdef CONFIG_BCM63XX_CPU_63268
@@ -302,6 +347,7 @@
 +      { .compatible = "sercomm,h500-s-lowi", .data = &board_H500s, },
 +      { .compatible = "sercomm,h500-s-vfes", .data = &board_H500s, },
 +      { .compatible = "sky,sr102", .data = &board_BSKYB_63168, },
++      { .compatible = "tplink,archer-vr400-v1", .data = &board_VR400, },
  #endif /* CONFIG_BCM63XX_CPU_63268 */
  #endif /* CONFIG_OF */
        { },
diff --git 
a/target/linux/bcm63xx/patches-5.15/531-board_bcm6348-bt-voyager-2500v-bb.patch 
b/target/linux/bcm63xx/patches-5.15/531-board_bcm6348-bt-voyager-2500v-bb.patch
index 39728c45e4..b995b87626 100644
--- 
a/target/linux/bcm63xx/patches-5.15/531-board_bcm6348-bt-voyager-2500v-bb.patch
+++ 
b/target/linux/bcm63xx/patches-5.15/531-board_bcm6348-bt-voyager-2500v-bb.patch
@@ -1,6 +1,6 @@
 --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
 +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -3230,6 +3230,22 @@ void __init board_bcm963xx_init(void)
+@@ -3276,6 +3276,22 @@ void __init board_bcm963xx_init(void)
                val &= MPI_CSBASE_BASE_MASK;
        }
        boot_addr = (u8 *)KSEG1ADDR(val);
-- 
2.38.1





_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to