[PATCH] ramips: add support for Wavlink WL-WN576A2

Thomas Aldrian dev.aldrian at gmail.com
Fri Jul 16 10:37:36 PDT 2021


The WN575A2 shares many of the same internals with the WN576A2 (same
SoC and same wifi chip). However, I do not think it would be
appropriate to add it as an alternative vendor as the default
configuration would be suboptimal.

The WN576A2 has only one ethernet port, while I believe your device has
two. Also, I cannot imagine the GPIOs to be correct. The WN576A2 has
more LEDs, and probably uses them for different purposes. Ofc this does
not necessarily make an image incompatible, it just may lead to
slightly unexpected behaviour. Maybe the WN578A2 profile would be
better suited?

At least that's my oppinion. If anyone else wants to advise, go ahead.

Regards,
Thomas 

On Thu, 2021-07-15 at 10:32 +0200, Birger Koblitz wrote:
> Hi,
> 
> I tested this on a Renkforce WS-WN575A2 and it works nicely.
> What I looked at was partitioning, GPIOs, WiFi and Switch setup.
> Would it be possible to add an ALT1_VENDOR for this Renkforce device?
> You may add a "Tested-by".
> 
> Cheers,
>    Birger
> 
> On 05/07/2021 18:12, dev.aldrian at gmail.com wrote:
> > From: Thomas Aldrian <dev.aldrian at gmail.com>
> > 
> > This commit adds support for the Wavlink WL-WN576A2 wall-plug
> > wireles
> > repeater / router. It is also sold under the name SilverCrest SWV
> > 733 B1.
> > 
> > Device specs:
> > 
> > - CPU: MediaTek MT7628AN
> > - Flash: 8MB
> > - RAM: 64MB
> > - Bootloader: U-Boot
> > - Ethernet: 1x 10/100 Mbps
> > - 2.4 GHz: b/g/n SoC
> > - 5 GHz: a/n/ac MT7610EN
> > - Buttons: WPS, reset, sliding switch (ap/repeater)
> > - LEDs: 5x wifi status, 1x LAN/WAN, 1x WPS
> > 
> > Flashing:
> > 
> > U-Boot launches a TFTP client if WPS button is held during boot.
> > 
> > - Server IP: 192.168.10.100
> > - Firmware file name: firmware.bin
> > 
> > Device will reboot automatically. First boot takes about 90s.
> > 
> > Coelner is the original author, but I have made some fixes. He does
> > not
> > wish to sign off using his real name.
> > 
> > Signed-off-by: Thomas Aldrian <dev.aldrian at gmail.com>
> > Co-authored-by: coelner <waenger at gmail.com>
> > ---
> >   .../dts/mt7628an_wavlink_wl-wn576a2.dts       | 171
> > ++++++++++++++++++
> >   target/linux/ramips/image/mt76x8.mk           |  10 +
> >   .../mt76x8/base-files/etc/board.d/01_leds     |   3 +
> >   .../mt76x8/base-files/etc/board.d/02_network  |   2 +
> >   4 files changed, 186 insertions(+)
> >   create mode 100644 target/linux/ramips/dts/mt7628an_wavlink_wl-
> > wn576a2.dts
> > 
> > diff --git a/target/linux/ramips/dts/mt7628an_wavlink_wl-
> > wn576a2.dts b/target/linux/ramips/dts/mt7628an_wavlink_wl-
> > wn576a2.dts
> > new file mode 100644
> > index 0000000000..333a7dc950
> > --- /dev/null
> > +++ b/target/linux/ramips/dts/mt7628an_wavlink_wl-wn576a2.dts
> > @@ -0,0 +1,171 @@
> > +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
> > +
> > +#include "mt7628an.dtsi"
> > +
> > +#include <dt-bindings/input/input.h>
> > +#include <dt-bindings/gpio/gpio.h>
> > +
> > +/ {
> > +       compatible = "wavlink,wl-wn576a2", "mediatek,mt7628an-soc";
> > +       model = "Wavlink WL-WN576A2";
> > +
> > +       aliases {
> > +               led-boot = &led_wps;
> > +               led-failsafe = &led_wps;
> > +               led-running = &led_wps;
> > +               led-upgrade = &led_wps;
> > +       };
> > +
> > +       keys {
> > +               compatible = "gpio-keys";
> > +
> > +               reset {
> > +                       label = "reset";
> > +                       gpios = <&gpio 43 GPIO_ACTIVE_LOW>;
> > +                       linux,code = <KEY_RESTART>;
> > +               };
> > +
> > +               wps {
> > +                       label = "wps";
> > +                       gpios = <&gpio 38 GPIO_ACTIVE_LOW>;
> > +                       linux,code = <KEY_WPS_BUTTON>;
> > +               };
> > +
> > +               ap {
> > +                       label = "ap";
> > +                       gpios = <&gpio 41 GPIO_ACTIVE_LOW>;
> > +                       linux,code = <BTN_0>;
> > +                       linux,input-type = <EV_SW>;
> > +               };
> > +
> > +               repeater {
> > +                       label = "repeater";
> > +                       gpios = <&gpio 42 GPIO_ACTIVE_LOW>;
> > +                       linux,code = <BTN_1>;
> > +                       linux,input-type = <EV_SW>;
> > +               };
> > +       };
> > +
> > +       leds {
> > +               compatible = "gpio-leds";
> > +
> > +               wifi-high {
> > +                       label = "blue:wifi-high";
> > +                       gpios = <&gpio 37 GPIO_ACTIVE_LOW>;
> > +               };
> > +
> > +               wifi-mediumhigh {
> > +                       label = "blue:wifi-mediumhigh";
> > +                       gpios = <&gpio 11 GPIO_ACTIVE_LOW>;
> > +               };
> > +
> > +               wifi-medium {
> > +                       label = "blue:wifi-medium";
> > +                       gpios = <&gpio 44 GPIO_ACTIVE_LOW>;
> > +               };
> > +
> > +               wifi-mediumlow {
> > +                       label = "blue:wifi-mediumlow";
> > +                       gpios = <&gpio 39 GPIO_ACTIVE_LOW>;
> > +               };
> > +
> > +               wifi-low {
> > +                       label = "blue:wifi-low";
> > +                       gpios = <&gpio 40 GPIO_ACTIVE_LOW>;
> > +               };
> > +
> > +               lan {
> > +                       label = "blue:lan";
> > +                       gpios = <&gpio 2 GPIO_ACTIVE_LOW>;
> > +               };
> > +
> > +               led_wps: wps {
> > +                       label = "blue:wps";
> > +                       gpios = <&gpio 4 GPIO_ACTIVE_LOW>;
> > +               };
> > +       };
> > +};
> > +
> > +&state_default {
> > +       gpio {
> > +               groups = "i2c", "i2s", "wdt", "wled_an",
> > "p0led_an", "p1led_an",
> > +                       "p2led_an", "p3led_an", "p4led_an",
> > "refclk", "gpio";
> > +               function = "gpio";
> > +       };
> > +};
> > +
> > +&pcie {
> > +       status = "okay";
> > +};
> > +
> > +&pcie0 {
> > +       wifi at 0,0 {
> > +               reg = <0x0000 0 0 0 0>;
> > +               mediatek,mtd-eeprom = <&factory 0x8000>;
> > +               ieee80211-freq-limit = <5000000 6000000>;
> > +       };
> > +};
> > +
> > +&spi0 {
> > +       status = "okay";
> > +
> > +       flash at 0 {
> > +               compatible = "jedec,spi-nor";
> > +               reg = <0>;
> > +               spi-max-frequency = <40000000>;
> > +
> > +               partitions {
> > +                       compatible = "fixed-partitions";
> > +                       #address-cells = <1>;
> > +                       #size-cells = <1>;
> > +
> > +                       partition at 0 {
> > +                               label = "u-boot";
> > +                               reg = <0x0 0x30000>;
> > +                               read-only;
> > +                       };
> > +
> > +                       partition at 30000 {
> > +                               label = "u-boot-env";
> > +                               reg = <0x30000 0x10000>;
> > +                               read-only;
> > +                       };
> > +
> > +                       factory: partition at 40000 {
> > +                               label = "factory";
> > +                               reg = <0x40000 0x10000>;
> > +                               read-only;
> > +                       };
> > +
> > +                       partition at 50000 {
> > +                               compatible = "denx,uimage";
> > +                               label = "firmware";
> > +                               reg = <0x50000 0x7b0000>;
> > +                       };
> > +               };
> > +       };
> > +};
> > +
> > +&wmac {
> > +       status = "okay";
> > +};
> > +
> > +&ethernet {
> > +       mtd-mac-address = <&factory 0x28>;
> > +};
> > +
> > +&esw {
> > +       mediatek,portmap = <0x2f>;
> > +};
> > +
> > +&usbphy {
> > +       status = "disabled";
> > +};
> > +
> > +&ehci {
> > +       status = "disabled";
> > +};
> > +
> > +&ohci {
> > +       status = "disabled";
> > +};
> > diff --git a/target/linux/ramips/image/mt76x8.mk
> > b/target/linux/ramips/image/mt76x8.mk
> > index 3ba4d658be..00cca7c9f1 100644
> > --- a/target/linux/ramips/image/mt76x8.mk
> > +++ b/target/linux/ramips/image/mt76x8.mk
> > @@ -724,6 +724,16 @@ define Device/wavlink_wl-wn575a3
> >   endef
> >   TARGET_DEVICES += wavlink_wl-wn575a3
> >   
> > +define Device/wavlink_wl-wn576a2
> > +  IMAGE_SIZE := 7872k
> > +  DEVICE_VENDOR := Wavlink
> > +  DEVICE_MODEL := WL-WN576A2
> > +  DEVICE_ALT0_VENDOR := Silvercrest
> > +  DEVICE_ALT0_MODEL := SWV 733 B1
> > +  DEVICE_PACKAGES := kmod-mt76x0e
> > +endef
> > +TARGET_DEVICES += wavlink_wl-wn576a2
> > +
> >   define Device/wavlink_wl-wn577a2
> >     IMAGE_SIZE := 7872k
> >     DEVICE_VENDOR := Wavlink
> > diff --git a/target/linux/ramips/mt76x8/base-
> > files/etc/board.d/01_leds b/target/linux/ramips/mt76x8/base-
> > files/etc/board.d/01_leds
> > index e2fb44c81e..a426715dab 100644
> > --- a/target/linux/ramips/mt76x8/base-files/etc/board.d/01_leds
> > +++ b/target/linux/ramips/mt76x8/base-files/etc/board.d/01_leds
> > @@ -129,6 +129,9 @@ wavlink,wl-wn575a3)
> >         ucidef_set_led_rssi "wifi-med" "wifi-med" "green:wifi-med"
> > "wlan1" "50" "84"
> >         ucidef_set_led_rssi "wifi-high" "wifi-high" "green:wifi-
> > high" "wlan1" "85" "100"
> >         ;;
> > +wavlink,wl-wn576a2)
> > +       ucidef_set_led_switch "lan" "lan" "blue:lan" "switch0"
> > "0x10"
> > +       ;;
> >   wavlink,wl-wn577a2|\
> >   wavlink,wl-wn578a2)
> >         ucidef_set_led_switch "lan" "lan" "green:lan" "switch0"
> > "0x8"
> > diff --git a/target/linux/ramips/mt76x8/base-
> > files/etc/board.d/02_network b/target/linux/ramips/mt76x8/base-
> > files/etc/board.d/02_network
> > index 703936f217..faae347f66 100644
> > --- a/target/linux/ramips/mt76x8/base-files/etc/board.d/02_network
> > +++ b/target/linux/ramips/mt76x8/base-files/etc/board.d/02_network
> > @@ -122,6 +122,7 @@ ramips_setup_interfaces()
> >                 ucidef_add_switch "switch0" \
> >                         "0:lan" "1:lan" "2:lan" "3:wan" "6 at eth0"
> >                 ;;
> > +       wavlink,wl-wn576a2|\
> >         tplink,tl-wr902ac-v3)
> >                 ucidef_add_switch "switch0" \
> >                         "4:lan" "6 at eth0"
> > @@ -170,6 +171,7 @@ ramips_setup_macs()
> >         cudy,wr1000|\
> >         hilink,hlk-7628n|\
> >         hilink,hlk-7688a|\
> > +       wavlink,wl-wn576a2|\
> >         wavlink,wl-wn577a2|\
> >         wavlink,wl-wn578a2)
> >                 wan_mac=$(mtd_get_mac_binary factory 0x2e)
> > 





More information about the openwrt-devel mailing list