1
0
mirror of https://git.openwrt.org/openwrt/openwrt.git synced 2024-10-18 21:48:23 +02:00

ramips: add support for Netcore NW5212

This patch adds support for Netcore NW5212, provided by some carrier in
China.

Specifications:
--------------

* SoC: Mediatek MT7620A
* RAM: 128MB DDR2
* Flash: 16MB SPI NOR flash (Winbond W25Q128BV)
* WiFi 2.4GHz: builtin
* Ethernet: builtin
* LED: Power, WAN, LAN 1-4, WiFi
* Buttons: Reset (GPIO 13)
* UART: Serial console (57600 8n1)
* USB: 1 x USB2

Installation:
------------

The router comes with OpenWrt 14.07 built with MTK SDK. However, as the
modem is provided by carriers, so the web interface is highly minimized and
only contains a static page with no interaction options.

There are two possible ways to gain the access.

1) Open the shell and use a UART2USB convert to gain TTY access. Please
   notice you have to remove resistance R54 at the back of the board
   otherwise you won't be able to input anything.
2) Use built-in backdoor. Access http://192.168.1.1/cgi-bin/_/testxst to
   start dropbear service at port 9122. Be warned the software is super
   old and only diffie-hellman-group1-sha1, diffie-hellman-group14-sha1,
   kexguess2@matt.ucc.asn.au is support, you may not be able to connect it
   with an up-to-date ssh client.

After you can control the device, flash the firmware as usual. Here are
some hints for that.

Option 1 (via original firmware):

1) Setup HTTP server on your computer, for example:
     python3 -m http.server
2) Connect to the route and flash:
     cd /tmp
     wget http://<your-computer-host>/<your-firmware-name>
     mtd -r write <your-firmware-name> firmware

Option 2 (replacing u-boot via breed):

1) Download breed-mt7620-reset13.bin from https://breed.hackpascal.net/
2) Setup HTTP server on your computer, for example:
     python3 -m http.server
   You can skip this step if your breed is already accessible from HTTP,
   since the original wget does not support HTTPS.
3) Connect to the route and flash breed:
     cd /tmp
     wget http://<your-computer-host>/breed-mt7620-reset13.bin
     mtd write breed-mt7620-reset13.bin Bootloader
4) Reboot. Hold reset key or press any key in TTY to enter breed.
5) Access breed web interface (http://192.168.1.1/). Choose the flash
   layout to be 0x50000 and flash new firmware.

MAC addresses:
-------------

There are three MACs stored in factory, as in MT7620A reference design:

source address   usage
   0x4 label     WLAN
  0x28 label     MAC 1
  0x2e label + 1 MAC 2

However, the OEM firmware only uses one single MAC (label) for all
interfaces, probably a misconfiguration.

Signed-off-by: David Yang <mmyangfl@gmail.com>
This commit is contained in:
David Yang 2021-06-06 22:42:49 +08:00 committed by Hauke Mehrtens
parent b00a02aaa0
commit 577f3fdbc9
4 changed files with 151 additions and 7 deletions

@ -0,0 +1,132 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
#include "mt7620a.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
/ {
compatible = "netcore,nw5212", "ralink,mt7620a-soc";
model = "Netcore NW5212";
aliases {
label-mac-device = &ethernet;
};
leds {
compatible = "gpio-leds";
lan4 {
label = "green:lan4";
gpios = <&gpio2 0 GPIO_ACTIVE_LOW>;
};
lan3 {
label = "green:lan3";
gpios = <&gpio2 1 GPIO_ACTIVE_LOW>;
};
lan2 {
label = "green:lan2";
gpios = <&gpio2 2 GPIO_ACTIVE_LOW>;
};
lan1 {
label = "green:lan1";
gpios = <&gpio2 3 GPIO_ACTIVE_LOW>;
};
wan {
label = "green:wan";
gpios = <&gpio2 4 GPIO_ACTIVE_LOW>;
};
wlan2g {
label = "green:wlan2g";
gpios = <&gpio3 0 GPIO_ACTIVE_LOW>;
linux,default-trigger = "phy0tpt";
};
};
keys {
compatible = "gpio-keys";
reset {
label = "reset";
gpios = <&gpio0 13 GPIO_ACTIVE_LOW>;
linux,code = <KEY_RESTART>;
};
};
};
&gpio2 {
status = "okay";
};
&gpio3 {
status = "okay";
};
&spi0 {
status = "okay";
flash@0 {
compatible = "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <70000000>;
m25p,fast-read;
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "u-boot";
reg = <0x0 0x30000>;
read-only;
};
partition@30000 {
label = "u-boot-env";
reg = <0x30000 0x10000>;
};
factory: partition@40000 {
label = "factory";
reg = <0x40000 0x10000>;
read-only;
};
partition@50000 {
compatible = "denx,uimage";
label = "firmware";
reg = <0x50000 0xfb0000>;
};
};
};
};
&state_default {
gpio {
groups = "uartf", "wled", "ephy";
function = "gpio";
};
};
&ethernet {
mtd-mac-address = <&factory 0x28>;
mediatek,portmap = "llllw";
};
&ehci {
status = "okay";
};
&ohci {
status = "okay";
};
&wmac {
ralink,mtd-eeprom = <&factory 0x0>;
};

@ -729,6 +729,16 @@ define Device/microduino_microwrt
endef
TARGET_DEVICES += microduino_microwrt
define Device/netcore_nw5212
SOC := mt7620a
IMAGE_SIZE := 16064k
BLOCKSIZE := 4k
DEVICE_VENDOR := Netcore
DEVICE_MODEL := NW5212
DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci
endef
TARGET_DEVICES += netcore_nw5212
define Device/netgear_ex2700
SOC := mt7620a
NETGEAR_HW_ID := 29764623+4+0+32+2x2+0

@ -160,6 +160,14 @@ lenovo,newifi-y1s)
ucidef_set_led_netdev "wifi5g" "WIFI5G" "blue:wifi" "wlan0"
ucidef_set_led_netdev "wan" "WAN" "blue:internet" "eth0.2" "tx rx"
;;
netcore,nw5212|\
netgear,jwnr2010-v5)
ucidef_set_led_switch "lan1" "lan1" "green:lan1" "switch0" "0x08"
ucidef_set_led_switch "lan2" "lan2" "green:lan2" "switch0" "0x04"
ucidef_set_led_switch "lan3" "lan3" "green:lan3" "switch0" "0x02"
ucidef_set_led_switch "lan4" "lan4" "green:lan4" "switch0" "0x01"
ucidef_set_led_switch "wan" "wan" "green:wan" "switch0" "0x10"
;;
netgear,ex2700|\
netgear,wn3000rp-v3|\
netgear,wn3100rp-v2)
@ -170,13 +178,6 @@ netgear,ex6130)
ucidef_set_led_netdev "wlan5g" "ROUTER (green)" "green:router" "wlan0"
ucidef_set_led_netdev "wlan2g" "DEVICE (green)" "green:device" "wlan1"
;;
netgear,jwnr2010-v5)
ucidef_set_led_switch "lan1" "lan1" "green:lan1" "switch0" "0x08"
ucidef_set_led_switch "lan2" "lan2" "green:lan2" "switch0" "0x04"
ucidef_set_led_switch "lan3" "lan3" "green:lan3" "switch0" "0x02"
ucidef_set_led_switch "lan4" "lan4" "green:lan4" "switch0" "0x01"
ucidef_set_led_switch "wan" "wan" "green:wan" "switch0" "0x10"
;;
netgear,pr2000)
ucidef_set_led_switch "internet" "internet" "green:internet" "switch0" "0x01"
;;

@ -111,6 +111,7 @@ ramips_setup_interfaces()
"0:lan" "6@eth0"
;;
dlink,dir-810l|\
netcore,nw5212|\
netgear,jwnr2010-v5|\
phicomm,k2-v22.4|\
phicomm,k2-v22.5|\