]> git.ipfire.org Git - thirdparty/openwrt.git/commitdiff
ramips: mt76x8: add support for MERCUSYS MB130-4G v1 17819/head
authorSergii Shcherbakov <shchers@gmail.com>
Sat, 1 Feb 2025 01:24:28 +0000 (02:24 +0100)
committerHauke Mehrtens <hauke@hauke-m.de>
Thu, 10 Apr 2025 21:12:35 +0000 (23:12 +0200)
Specification:
SoC: MediaTek MT7628AN
RAM: 128 MB, Zentel A3R1GE40JBF-8E
Flash: 16MB, Winbond W25Q128JV
Switch: rt3050-esw, 2 ports 100 Mbps
WiFi: MediaTek mt7628-wmac 2.4GHz 802.11n and MediaTek MT7663 5GHz
  802.11ac (PCIe)
WWAN: Quectel EC200A-EL 4G modem (USB)
GPIO:
  * 1 button (Reset/WPS)
  * 6 LEDs (Power+WPS, LAN, 3xSignal)
  * USB port power controls
  * Modem reset
  * Modem programming switch
  * Internal/external antenna switch for 4G

Serial Interface:
  TP10 - 3.3V can be used for level shifter, if needed
  TP9 - TX
  TP8 - RX
  TP11 - GND
Interface properties: 115200, 8N1

Access to console using serial port for OEM firmware:
Username: admin
Password: 1234

Flashing via TFTP (no disassembling or soldering required):
1. Connect your PC and router to port LAN
2. Configure PC interface using static IP 192.168.1.225, mask
   255.255.255.0
3. Place OpenWRT firmware image (*-squashfs-tftp-recovery.bin) to TFTP
   root folder and renamed it to tp_recovery.bin
4. Unplug power from router
5. Press and hold Reset/WPS button
6. Power up the router
7. Wait until TFTP started uploading image (~10 seconds after power up)
   and release Reset/WPS button
8. Wait until image uploaded, i.e. until LAN LED start lighting
9. Enable DHCP address on PC interface and wait for assigning address
10. Use ssh (root@192.168.1.1) to configure router properties

Depends on patch for firmware-utils package:
https://github.com/openwrt/firmware-utils/commit/2051fe5b

Signed-off-by: Sergii Shcherbakov <shchers@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/17819
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
target/linux/ramips/dts/mt7628an_mercusys_mb130-4g-v1.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

diff --git a/target/linux/ramips/dts/mt7628an_mercusys_mb130-4g-v1.dts b/target/linux/ramips/dts/mt7628an_mercusys_mb130-4g-v1.dts
new file mode 100644 (file)
index 0000000..053de48
--- /dev/null
@@ -0,0 +1,239 @@
+// 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>
+#include <dt-bindings/leds/common.h>
+
+/ {
+       compatible = "mercusys,mb130-4g-v1", "mediatek,mt7628an-soc";
+       model = "MERCUSYS MB130-4G v1";
+
+       aliases {
+               led-boot = &led_power;
+               led-failsafe = &led_power;
+               led-running = &led_power;
+               led-upgrade = &led_power;
+               label-mac-device = &ethernet;
+       };
+
+       chosen {
+               bootargs = "console=ttyS0,115200";
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               wan {
+                       function = LED_FUNCTION_WAN;
+                       color = <LED_COLOR_ID_GREEN>;
+                       gpios = <&gpio 4 GPIO_ACTIVE_LOW>;
+               };
+
+               lan {
+                       function = LED_FUNCTION_LAN;
+                       color = <LED_COLOR_ID_GREEN>;
+                       gpios = <&gpio 5 GPIO_ACTIVE_LOW>;
+               };
+
+               led_power: power {
+                       function = LED_FUNCTION_POWER;
+                       color = <LED_COLOR_ID_GREEN>;
+                       gpios = <&gpio 39 GPIO_ACTIVE_LOW>;
+               };
+
+               wps {
+                       function = LED_FUNCTION_WPS;
+                       color = <LED_COLOR_ID_ORANGE>;
+                       gpios = <&gpio 40 GPIO_ACTIVE_LOW>;
+               };
+
+               signal1 {
+                       label = "green:signal1";
+                       gpios = <&gpio 41 GPIO_ACTIVE_LOW>;
+               };
+
+               signal2 {
+                       label = "green:signal2";
+                       gpios = <&gpio 42 GPIO_ACTIVE_LOW>;
+               };
+
+               signal3 {
+                       label = "green:signal3";
+                       gpios = <&gpio 43 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       keys {
+               compatible = "gpio-keys";
+
+               reset {
+                       label = "reset";
+                       gpios = <&gpio 38 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_RESTART>;
+               };
+
+               rfkill {
+                       label = "rfkill";
+                       gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_RFKILL>;
+               };
+       };
+
+       gpio_export {
+               compatible = "gpio-export";
+
+               out_atn {
+                       gpio-export,name = "out_atn";
+                       gpio-export,output = <0>;
+                       gpios = <&gpio 2 GPIO_ACTIVE_HIGH>;
+               };
+
+               usb_power {
+                       gpio-export,name = "usb_power";
+                       gpio-export,output = <1>;
+                       gpios = <&gpio 36 GPIO_ACTIVE_HIGH>;
+               };
+
+               usb_boot {
+                       gpio-export,name = "usb_boot";
+                       gpio-export,output = <0>;
+                       gpios = <&gpio 37 GPIO_ACTIVE_HIGH>;
+               };
+
+               usb_reset {
+                       gpio-export,name = "usb_reset";
+                       gpio-export,output = <0>;
+                       gpios = <&gpio 44 GPIO_ACTIVE_HIGH>;
+               };
+       };
+};
+
+&spi0 {
+       status = "okay";
+
+       flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+               spi-max-frequency = <50000000>;
+               m25p,fast-read;
+
+               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 0xe90000>;
+                       };
+
+                       partition@eb0000 {
+                               label = "ispconfig";
+                               reg = <0xeb0000 0x10000>;
+                               read-only;
+                       };
+
+                       partition@ec0000 {
+                               label = "romfile";
+                               reg = <0xec0000 0x10000>;
+                               read-only;
+
+                               nvmem-layout {
+                                       compatible = "fixed-layout";
+                                       #address-cells = <1>;
+                                       #size-cells = <1>;
+
+                                       macaddr_romfile_f100: macaddr@f100 {
+                                               compatible = "mac-base";
+                                               reg = <0xf100 0x6>;
+                                               #nvmem-cell-cells = <1>;
+                                       };
+                               };
+                       };
+
+                       partition@ed0000 {
+                               label = "config";
+                               reg = <0xed0000 0x10000>;
+                               read-only;
+                       };
+
+                       partition@ee0000 {
+                               label = "configbak";
+                               reg = <0xee0000 0x10000>;
+                               read-only;
+                       };
+
+                       partition@ef0000 {
+                               label = "radio";
+                               reg = <0xef0000 0x10000>;
+                               read-only;
+
+                               nvmem-layout {
+                                       compatible = "fixed-layout";
+                                       #address-cells = <1>;
+                                       #size-cells = <1>;
+
+                                       eeprom_radio_0: eeprom@0 {
+                                               reg = <0x0 0x400>;
+                                       };
+
+                                       eeprom_radio_8000: eeprom@8000 {
+                                               reg = <0x8000 0x200>;
+                                       };
+                               };
+                       };
+
+                       partition@f00000 {
+                               label = "userdata";
+                               reg = <0xf00000 0x100000>;
+                               read-only;
+                       };
+               };
+       };
+};
+
+&state_default {
+       gpio {
+               groups = "i2c", "p0led_an", "p1led_an", "p2led_an", "p3led_an", "p4led_an", "uart1", "wdt";
+               function = "gpio";
+       };
+};
+
+&wmac {
+       nvmem-cells = <&eeprom_radio_0>, <&macaddr_romfile_f100 0>;
+       nvmem-cell-names = "eeprom", "mac-address";
+       status = "okay";
+};
+
+&esw {
+       mediatek,portmap = <0x37>;
+       mediatek,portdisable = <0x33>;
+};
+
+&ethernet {
+       nvmem-cells = <&macaddr_romfile_f100 0>;
+       nvmem-cell-names = "mac-address";
+};
+
+&pcie {
+       status = "okay";
+};
+
+&pcie0 {
+       wifi@0,0 {
+               compatible = "mediatek,mt76";
+               reg = <0x0000 0 0 0 0>;
+               nvmem-cells = <&eeprom_radio_8000>, <&macaddr_romfile_f100 (-1)>;
+               nvmem-cell-names = "eeprom", "mac-address";
+               ieee80211-freq-limit = <5000000 6000000>;
+       };
+};
index f442148d9ecf1063357971a4e4ffcfefd0edf50e..3aa6132dcfa94845848e81c5e932624afce57557 100644 (file)
@@ -488,6 +488,20 @@ define Device/mercury_mac1200r-v2
 endef
 TARGET_DEVICES += mercury_mac1200r-v2
 
+define Device/mercusys_mb130-4g-v1
+$(Device/tplink-v2)
+  IMAGE_SIZE := 14912k
+  DEVICE_VENDOR := MERCUSYS
+  DEVICE_MODEL := MB130-4G
+  DEVICE_VARIANT := v1
+  DEVICE_PACKAGES := kmod-mt76x0e kmod-usb2 kmod-mt7663-firmware-ap kmod-mt7615e \
+                     kmod-usb-serial-option kmod-usb-net-cdc-ether
+  TPLINK_FLASHLAYOUT := 16MLmtk
+  IMAGES := sysupgrade.bin tftp-recovery.bin
+  IMAGE/tftp-recovery.bin := pad-extra 128k | $$(IMAGE/factory.bin)
+endef
+TARGET_DEVICES += mercusys_mb130-4g-v1
+
 define Device/minew_g1-c
   IMAGE_SIZE := 15744k
   DEVICE_VENDOR := Minew
index 79f78a2a459487b67fdfe10a2830d4818e8e1c60..846835bc5727a9c3744e54a6587a4f3207318934 100644 (file)
@@ -96,6 +96,7 @@ tplink,archer-mr200-v6)
        ucidef_set_led_netdev "lan" "lan" "white:lan" "eth0"
        ucidef_set_led_netdev "wan" "wan" "white:wan" "wwan0"
        ;;
+mercusys,mb130-4g-v1|\
 tplink,re200-v2|\
 tplink,re200-v3|\
 tplink,re200-v4|\
index 6e6e1310d3495f144f6fdae3f1a44b8a2ae1b77e..ca282a9eb182d9ac533b92ea167114ea5d379474 100644 (file)
@@ -156,6 +156,11 @@ ramips_setup_interfaces()
                ucidef_add_switch "switch0" \
                        "0:lan:1" "1:lan:2" "2:lan:3" "3:lan:4" "4:wan" "6@eth0"
                ;;
+       mercusys,mb130-4g-v1)
+               ucidef_add_switch "switch0" \
+                       "2:lan" "3:lan" "6@eth0"
+               ucidef_set_interface_wan "eth1"
+               ;;
        netgear,r6020|\
        netgear,r6080|\
        netgear,r6120|\