[openwrt/openwrt] ramips: mt76x8: add support for MERCUSYS MB130-4G v1

LEDE Commits lede-commits at lists.infradead.org
Thu Apr 10 14:14:19 PDT 2025


hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/b8eba7514643cc6b64d93e3fa7048d6721efbc17

commit b8eba7514643cc6b64d93e3fa7048d6721efbc17
Author: Sergii Shcherbakov <shchers at gmail.com>
AuthorDate: Sat Feb 1 02:24:28 2025 +0100

    ramips: mt76x8: add support for MERCUSYS MB130-4G v1
    
    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 at 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 at gmail.com>
    Link: https://github.com/openwrt/openwrt/pull/17819
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
 .../ramips/dts/mt7628an_mercusys_mb130-4g-v1.dts   | 239 +++++++++++++++++++++
 target/linux/ramips/image/mt76x8.mk                |  14 ++
 .../ramips/mt76x8/base-files/etc/board.d/01_leds   |   1 +
 .../mt76x8/base-files/etc/board.d/02_network       |   5 +
 4 files changed, 259 insertions(+)

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
index 0000000000..053de48d79
--- /dev/null
+++ b/target/linux/ramips/dts/mt7628an_mercusys_mb130-4g-v1.dts
@@ -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 = ðernet;
+	};
+
+	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 at 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 at 0 {
+				label = "u-boot";
+				reg = <0x0 0x20000>;
+				read-only;
+			};
+
+			partition at 20000 {
+				compatible = "tplink,firmware";
+				label = "firmware";
+				reg = <0x20000 0xe90000>;
+			};
+
+			partition at eb0000 {
+				label = "ispconfig";
+				reg = <0xeb0000 0x10000>;
+				read-only;
+			};
+
+			partition at ec0000 {
+				label = "romfile";
+				reg = <0xec0000 0x10000>;
+				read-only;
+
+				nvmem-layout {
+					compatible = "fixed-layout";
+					#address-cells = <1>;
+					#size-cells = <1>;
+
+					macaddr_romfile_f100: macaddr at f100 {
+						compatible = "mac-base";
+						reg = <0xf100 0x6>;
+						#nvmem-cell-cells = <1>;
+					};
+				};
+			};
+
+			partition at ed0000 {
+				label = "config";
+				reg = <0xed0000 0x10000>;
+				read-only;
+			};
+
+			partition at ee0000 {
+				label = "configbak";
+				reg = <0xee0000 0x10000>;
+				read-only;
+			};
+
+			partition at ef0000 {
+				label = "radio";
+				reg = <0xef0000 0x10000>;
+				read-only;
+
+				nvmem-layout {
+					compatible = "fixed-layout";
+					#address-cells = <1>;
+					#size-cells = <1>;
+
+					eeprom_radio_0: eeprom at 0 {
+						reg = <0x0 0x400>;
+					};
+
+					eeprom_radio_8000: eeprom at 8000 {
+						reg = <0x8000 0x200>;
+					};
+				};
+			};
+
+			partition at 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 at 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>;
+	};
+};
diff --git a/target/linux/ramips/image/mt76x8.mk b/target/linux/ramips/image/mt76x8.mk
index f442148d9e..3aa6132dcf 100644
--- a/target/linux/ramips/image/mt76x8.mk
+++ b/target/linux/ramips/image/mt76x8.mk
@@ -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
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 79f78a2a45..846835bc57 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
@@ -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|\
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 6e6e1310d3..ca282a9eb1 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
@@ -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 at eth0"
 		;;
+	mercusys,mb130-4g-v1)
+		ucidef_add_switch "switch0" \
+			"2:lan" "3:lan" "6 at eth0"
+		ucidef_set_interface_wan "eth1"
+		;;
 	netgear,r6020|\
 	netgear,r6080|\
 	netgear,r6120|\




More information about the lede-commits mailing list