ramips: mt7620a: add support for LCX LCX-ZJ1200-03

Snapped All snappedall at hotmail.com
Sun Jan 4 18:58:44 PST 2026


Original date: Tue, 15 Apr 2025 11:32:36 -0400

This is a cheap (25$) WiFi repeater made by a company called Shenzen-LinChuangXun (LCX)
Mine's from Edtiske, but it's likely not a real company and simply a trademark for their amazon (an identical device is listed as "NeaLia").
Therefore, it's branded after the actual OEM (which specializes in networking equipment).

** SPECS: **

- MT7620a SoC w/2.4Ghz 802.11b/g/n
- MT7612e WLAN for 5Ghz 802.11ac (WiFi5)
- 128MB RAM
- 8MB MX25L6406E SPI NOR
- UART TXD/RXD, 57600
- 4 antennas (2 FAKE)

** Installation: **
This device ships with CleanWRT (u-boot_mt7620), a fork of pepe2k's ath79 u-boot_mod. Very bizarre.
However, this means that it's compatible with OpenWRT sysupgrade.

- Hold WPS/Reset button right after connecting to power
- Set static IP to 192.168.1.2, netmask 255.255.255.0, gateway 192.168.1.1
- Access CleanWRT page at 192.168.1.1
- Upload sysupgrade.bin file and flash

** TFTP recovery: **
You shouldn't ever need this since CleanWRT's httpd is built into u-boot.
However, if for whatever reason (eg. different bootloader) this doesn't work, you'll need the serial console. (57600 baudrate)

- Rename the initramfs-kernel.bin to test.bin and serve it via tftp (eg. using tftpd-hpa, serving at /srv/tftp, file in /srv/tftp/test.bin)
- Repeat static IP steps from regular CleanWRT method.
- Then hold "4" while booting until you dropdown to a console.
- Run the command "tftpboot" and then you'll boot into OpenWRT.

Now you can run sysupgrade from OpenWRT.

** Extra: **
Stock firmware is unknown and seems to redirect to some suspicious chinese websites.
No interaction with it is required to flash OpenWRT, though it may be a future venue for firmware flashing on certain firmwares.
Signed-off-by: Rayan Farzaneh <snappedall at hotmail.com>
---
 .../ramips/dts/mt7620a_lcx_lcx-zj1200-03.dts  | 159 ++++++++++++++++++
 target/linux/ramips/image/mt7620.mk           |   9 +
 .../mt7620/base-files/etc/board.d/02_network  |   1 +
 3 files changed, 169 insertions(+)
 create mode 100644 target/linux/ramips/dts/mt7620a_lcx_lcx-zj1200-03.dts

diff --git a/target/linux/ramips/dts/mt7620a_lcx_lcx-zj1200-03.dts b/target/linux/ramips/dts/mt7620a_lcx_lcx-zj1200-03.dts
new file mode 100644
index 0000000000..3c7afb892e
--- /dev/null
+++ b/target/linux/ramips/dts/mt7620a_lcx_lcx-zj1200-03.dts
@@ -0,0 +1,159 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "mt7620a.dtsi"
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/leds/common.h>
+
+/ {
+    compatible = "lcx,lcx-zj1200-03", "ralink,mt7620a-soc";
+    model = "LCX LCX-ZJ1200-03";
+
+    aliases {
+        led-boot = &led_power;
+        led-failsafe = &led_power;
+        led-running = &led_power;
+        led-upgrade = &led_power;
+    };
+
+    keys {
+        compatible = "gpio-keys";
+
+        wps {
+            label = "wps";
+            gpios = <&gpio0 17 GPIO_ACTIVE_LOW>;
+            linux,code = <KEY_WPS_BUTTON>;
+        };
+    };
+
+    leds {
+        compatible = "gpio-leds";
+
+        led_power: led_internet {
+            function = LED_FUNCTION_POWER;
+            label = "green:internet";
+            gpios = <&gpio0 0 GPIO_ACTIVE_LOW>;
+        };
+
+        led_wlan1 {
+            function = LED_FUNCTION_WLAN_5GHZ;
+            label = "green:wlan1";
+            gpios = <&gpio0 1 GPIO_ACTIVE_LOW>;
+            linux,default-trigger = "phy0tpt";
+        };
+
+        led_wlan2 {
+            function = LED_FUNCTION_WLAN_2GHZ;
+            label = "green:wlan2";
+            gpios = <&gpio0 2 GPIO_ACTIVE_LOW>;
+            linux,default-trigger = "phy1tpt";
+        };
+
+    };
+};
+
+&spi0 {
+    status = "okay";
+
+    mx25l6406e at 0 {
+        compatible = "jedec,spi-nor";
+        reg = <0>;
+        spi-max-frequency = <50000000>;
+
+        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;
+
+                nvmem-layout {
+                    compatible = "fixed-layout";
+                    #address-cells = <1>;
+                    #size-cells = <1>;
+
+                    macaddr_factory_4: macaddr at 4 {
+                        reg = <0x4 0x6>;
+                    };
+
+                    macaddr_factory_2e: macaddr at 2e {
+                        reg = <0x2e 0x6>;
+                    };
+
+                    eeprom_radio_0: eeprom at 0 {
+                        reg = <0x0 0x200>;
+                    };
+
+                    eeprom_radio_8000: eeprom at 8000 {
+                        reg = <0x8000 0x200>;
+                    };
+                };
+            };
+
+            partition at 50000 {
+                compatible = "denx,uimage";
+                label = "firmware";
+                reg = <0x50000 0x7a0000>;
+            };
+
+            partition at 7f0000 {
+                label = "backup_config";
+                reg = <0x7f0000 0x10000>;
+                read-only;
+            };
+        };
+    };
+};
+
+&ethernet {
+        pinctrl-names = "default";
+        pinctrl-0 = <&rgmii2_pins>, <&ephy_pins>, <&mdio_pins>;
+
+        nvmem-cells = <&macaddr_factory_4>;
+        nvmem-cell-names = "mac-address";
+};
+
+&pcie {
+    status = "okay";
+};
+
+&pcie0 {
+    mt76 at 0,0 {
+        compatible = "mediatek,mt76";
+        reg = <0x0000 0 0 0 0>;
+        nvmem-cells = <&eeprom_radio_8000>;
+        nvmem-cell-names = "eeprom";
+        ieee80211-freq-limit = <5000000 6000000>;
+    };
+};
+
+&gsw {
+    mediatek,port4-gmac;
+};
+
+&wmac {
+    nvmem-cells = <&eeprom_radio_0>;
+    nvmem-cell-names = "eeprom";
+};
+
+&state_default {
+    gpio {
+        groups = "i2c", "uartf";
+        function = "gpio";
+    };
+};
diff --git a/target/linux/ramips/mt7620/base-files/etc/board.d/02_network b/target/linux/ramips/mt7620/base-files/etc/board.d/02_network
index 208cb64..1212603 100644
--- a/target/linux/ramips/mt7620/base-files/etc/board.d/02_network
+++ b/target/linux/ramips/mt7620/base-files/etc/board.d/02_network
@@ -171,6 +171,7 @@ ramips_setup_interfaces()
                        "5:lan" "6 at eth0"
                ucidef_add_switch_attr "switch1" "enable" "false"
                ;;
+       lcx,lcx-zj1200-03|\
        fon,fon2601|\
        vonets,var11n-300)
                ucidef_add_switch "switch0" \
--
2.43.0



More information about the openwrt-devel mailing list