[openwrt/openwrt] ramips: mt76x8: add Teltonika RUT951/RUT901 support

LEDE Commits lede-commits at lists.infradead.org
Sun Jun 8 09:57:21 PDT 2025


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

commit 7264a913a39ea161ddfcf9d263150a089880c402
Author: Simonas Tamošaitis <simsasss at gmail.com>
AuthorDate: Wed Jun 4 21:39:18 2025 +0300

    ramips: mt76x8: add Teltonika RUT951/RUT901 support
    
    Specification:
    - MediaTek MT7628AN SoC
    - 128 MB of RAM EtronTech EM68C16CWQG-25IH
    - 16MB of Flash Winbond W25Q128 SPI
    - 4x 10/100 Mbps Ethernet, with passive PoE support on LAN1
    - MediaTek MT7628AN 2.4 GHz 802.11n WiFi
    - Quectel EC25-EUX 4G cat 4 modem (RUT951) or Quectel EC200A-EU 4G cat 4 modem (RUT901)
    - 1x Digital input
    - 1x Digital output
    - 2x SIM slot (can be swapped via GPIO)
    - eSIM (depends on hardware configuration, can be swapped via GPIO)
    
    GPIO:
     - 1 button (Reset)
     - 7 LEDs (power, status green/red, RSSI 1,2,3,4,5)
     - 5 Modem control (power button, reset, status, SIM select, eSIM select)
     - 1 Digital input
     - 1 Digital output
    
    Flashing via OEM WebUI:
    1. Download the firmware image *-squashfs-factory.bin
    2. Upload firmware image via OEM WebUI firmware update, do not keep settings
    
    To revert back to OEM firmware:
    https://wiki.teltonika-networks.com/view/Bootloader_menu
    
    Mobile data connection:
    Quectel EC200A-EU send command to modem:
        echo -ne 'AT+QNETDEVCTL=3,1\r\n' > /dev/ttyUSB2
        Create DHCP interface with usb0 device.
    Quectel EC25-EUX create proto qmi interface.
    
    Signed-off-by: Simonas Tamošaitis <simsasss at gmail.com>
    Link: https://github.com/openwrt/openwrt/pull/18788
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
 target/linux/ramips/dts/mt7628an_teltonika_rut9x1.dts  |  8 ++++++++
 target/linux/ramips/image/mt76x8.mk                    | 18 ++++++++++++++++++
 .../linux/ramips/mt76x8/base-files/etc/board.d/01_leds |  1 +
 .../ramips/mt76x8/base-files/etc/board.d/02_network    |  1 +
 .../mt76x8/base-files/etc/board.d/03_gpio_switches     |  7 +++++++
 5 files changed, 35 insertions(+)

diff --git a/target/linux/ramips/dts/mt7628an_teltonika_rut9x1.dts b/target/linux/ramips/dts/mt7628an_teltonika_rut9x1.dts
new file mode 100644
index 0000000000..4523be2c4f
--- /dev/null
+++ b/target/linux/ramips/dts/mt7628an_teltonika_rut9x1.dts
@@ -0,0 +1,8 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "mt7628an_teltonika_rut9xx.dtsi"
+
+/ {
+	compatible = "teltonika,rut9x1", "mediatek,mt7628an-soc";
+	model = "Teltonika RUT951/RUT901";
+};
diff --git a/target/linux/ramips/image/mt76x8.mk b/target/linux/ramips/image/mt76x8.mk
index fb5298cb61..9826c3e9f7 100644
--- a/target/linux/ramips/image/mt76x8.mk
+++ b/target/linux/ramips/image/mt76x8.mk
@@ -638,6 +638,24 @@ define Device/tama_w06
 endef
 TARGET_DEVICES += tama_w06
 
+define Device/teltonika_rut9x1
+  DEVICE_VENDOR := Teltonika
+  DEVICE_MODEL := RUT951
+  DEVICE_ALT0_VENDOR := Teltonika
+  DEVICE_ALT0_MODEL := RUT901
+  IMAGE_SIZE := 15424k
+  BLOCKSIZE := 64k
+  DEVICE_PACKAGES := uqmi kmod-mt76x2 kmod-usb2 kmod-usb-ohci \
+	kmod-usb-serial-option kmod-spi-gpio kmod-gpio-nxp-74hc164 \
+	kmod-i2c-mt7628 kmod-usb-net-cdc-ether
+  IMAGES += factory.bin
+  IMAGE/factory.bin := append-kernel | pad-to $$$$(BLOCKSIZE) | \
+	append-rootfs | pad-rootfs | check-size | append-teltonika-metadata rut9m \
+	"mod1":"2c7c_6005" "mod2":"TLA2021" "mod3":"CH343" "mod4":"esim" "mod5":"ala440"
+  IMAGE/sysupgrade.bin := append-kernel | pad-to $$$$(BLOCKSIZE) | append-rootfs | pad-rootfs | check-size | append-metadata
+endef
+TARGET_DEVICES += teltonika_rut9x1
+
 define Device/teltonika_rut9x6
   DEVICE_VENDOR := Teltonika
   DEVICE_MODEL := RUT956
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 67f9819083..ffa64f50f8 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
@@ -82,6 +82,7 @@ teltonika,rut241)
 	ucidef_set_led_switch "lan" "lan" "green:lan" "switch0" "0x02"
 	ucidef_set_led_switch "wan" "wan" "green:wan" "switch0" "0x01"
 	;;
+teltonika,rut9x1|\
 teltonika,rut9x6)
 	ucidef_set_led_switch "lan1" "lan1" "green:lan-1" "switch0" "0x1"
 	ucidef_set_led_switch "lan2" "lan2" "green:lan-2" "switch0" "0x2"
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 d8fcfc68b6..cd9199a7d1 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
@@ -179,6 +179,7 @@ ramips_setup_interfaces()
 		ucidef_add_switch "switch0" \
 			"0:wan" "1:lan" "2:lan" "3:lan" "4:lan" "6t at eth0"
 		;;
+	teltonika,rut9x1|\
 	teltonika,rut9x6)
 		ucidef_add_switch "switch0" \
 			"0:lan" "1:lan" "2:lan" "4:wan" "6t at eth0"
diff --git a/target/linux/ramips/mt76x8/base-files/etc/board.d/03_gpio_switches b/target/linux/ramips/mt76x8/base-files/etc/board.d/03_gpio_switches
index 34d73da447..fc9f20d9d2 100644
--- a/target/linux/ramips/mt76x8/base-files/etc/board.d/03_gpio_switches
+++ b/target/linux/ramips/mt76x8/base-files/etc/board.d/03_gpio_switches
@@ -15,6 +15,13 @@ teltonika,rut241)
 	ucidef_add_gpio_switch "modem_power" "Modem power" "modem_power" "1"
 	ucidef_add_gpio_switch "modem_reset" "Modem reset" "modem_reset" "0"
 	;;
+teltonika,rut9x1)
+	ucidef_add_gpio_switch "digital_output" "Digital output 1" "digital_output1" "0"
+	ucidef_add_gpio_switch "modem_power" "Modem power button" "modem_power" "1"
+	ucidef_add_gpio_switch "modem_reset" "Modem reset" "modem_reset" "0"
+	ucidef_add_gpio_switch "sim_sel" "SIM select" "sim_sel" "0"
+	ucidef_add_gpio_switch "esim_sel" "eSIM select" "esim_sel" "0"
+	;;
 teltonika,rut9x6)
 	ucidef_add_gpio_switch "digital_output" "Digital output 1" "digital_output1" "0"
 	ucidef_add_gpio_switch "digital_output" "Digital output 2" "digital_output2" "0"




More information about the lede-commits mailing list