summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDonghyun Ko2025-11-12 20:02:47 +0000
committerHauke Mehrtens2025-11-20 22:10:11 +0000
commit05a597efd6784b6b2abad4821ba3936f7885a043 (patch)
tree2c549f80039bbc2d3a0dfcb98637d5d716c17f6f
parentb8742b1ae0f1dc0bc8412fe852a006ea538e6943 (diff)
downloadopenwrt-05a597efd6784b6b2abad4821ba3936f7885a043.tar.gz
mediatek: add support for ipTIME AX3000SE
Specification ------------- - SoC : MediaTek MT7981BA dual-core ARM Cortex-A53 1.3GHz - RAM : DDR3 256Mbytes, ESMT M15T2G16128A - Flash : 128Mbytes NAND Flash, ESMT F50L1G41LB - WLAN : MediaTek MT7976CN dual-band Wi-Fi 6 - 2.4GHz : b/g/n/ax, MU-MIMO - 5GHz : a/n/ac/ax, MU-MIMO - Ethernet : MediaTek MT7531AE - LAN : 10/100/1000 Mbps x4 - WAN : 10/100/1000 Mbps x1 - UART : 1x4 pin header hole on PCB - 3.3V, RX, GND, TX (115200, 8N1) - Buttons : WPS, Reset - LEDs : 1x CPU (Amber/Blue) 1x Wi-Fi (Amber/Blue) 1x WAN activity (Amber/Blue) 4x LAN activity (Amber/Blue) - Power : 12VDC, 1A (Center positive polarity) Note: The LED color is amber or blue, depending on your router's color (black/white). MAC address ----------- +-----------+-------------------+-----------+ | Interface | MAC | Algorithm | +-----------+-------------------+-----------+ | WLAN 2.4G | B0:38:6C:xx:xx:xx | label | | WLAN 5G | B2:38:6C:4x:xx:xx | | | WAN | B0:38:6C:xx:xx:xx | label + 1 | | LAN | B0:38:6C:xx:xx:xx | label + 3 | +-----------+-------------------+-----------+ The WLAN 2.4G MAC address was found in 'Factory' partition, 0x4 Installation ------------ 1. Download the OEM recovery software (ipTIME Firmware Wizard (11ac)) from the manufacturer's website 2. Download the *squashfs-factory.bin file from the OpenWrt website 3. Press a reset button, and power up the router (keep pressing the reset button) 4. Wait more than 10 seconds until the CPU LED stop blinking 5. Connect the router (LAN port) to the PC 6. Run the OEM recovery software and follow the instructions 7. Select the *squashfs-factory.bin file during the router recovery process 8. Wait for the router to boot from *squashfs-factory.bin Limitation: Triggering the WLAN LED for activity on both phy0 (2.4GHz) and phy1 (5GHz) ---------- Currently, the UCI doesn't support triggering a single LED for activity on multiple WLAN interfaces. As a temporary workaround, the LED is configured to only indicate activity on `phy1`. If you wish to monitor `phy0` instead, you must change the device from `phy1-ap0` to `phy0-ap0` in the LuCI LED configuration. Signed-off-by: Donghyun Ko <nyankosoftware@gmail.com> Link: https://github.com/openwrt/openwrt/pull/20771 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
-rw-r--r--target/linux/mediatek/dts/mt7981b-iptime-ax3000se.dts264
-rw-r--r--target/linux/mediatek/filogic/base-files/etc/board.d/01_leds3
-rw-r--r--target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac1
-rw-r--r--target/linux/mediatek/image/filogic.mk20
4 files changed, 288 insertions, 0 deletions
diff --git a/target/linux/mediatek/dts/mt7981b-iptime-ax3000se.dts b/target/linux/mediatek/dts/mt7981b-iptime-ax3000se.dts
new file mode 100644
index 0000000000..788bd8aa5f
--- /dev/null
+++ b/target/linux/mediatek/dts/mt7981b-iptime-ax3000se.dts
@@ -0,0 +1,264 @@
+// SPDX-License-Identifier: GPL-2.0-only OR MIT
+
+/dts-v1/;
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
+
+#include "mt7981b.dtsi"
+
+/ {
+ model = "ipTIME AX3000SE";
+ compatible = "iptime,ax3000se", "mediatek,mt7981";
+
+ aliases {
+ serial0 = &uart0;
+ label-mac-device = &wan;
+ led-boot = &led_cpu;
+ led-failsafe = &led_cpu;
+ led-running = &led_cpu;
+ led-upgrade = &led_cpu;
+ };
+
+ chosen {
+ stdout-path = "serial0:115200n8";
+ };
+
+ gpio-keys {
+ compatible = "gpio-keys";
+
+ button-0 {
+ label = "wps";
+ gpios = <&pio 0 GPIO_ACTIVE_LOW>;
+ linux,code = <KEY_WPS_BUTTON>;
+ debounce-interval = <60>;
+ };
+
+ button-1 {
+ label = "reset";
+ gpios = <&pio 1 GPIO_ACTIVE_LOW>;
+ linux,code = <KEY_RESTART>;
+ debounce-interval = <60>;
+ };
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ led_cpu: led-0 {
+ color = <LED_COLOR_ID_BLUE>;
+ function = LED_FUNCTION_CPU;
+ gpios = <&pio 9 GPIO_ACTIVE_LOW>;
+ };
+
+ led-1 {
+ color = <LED_COLOR_ID_BLUE>;
+ function = LED_FUNCTION_WLAN;
+ gpios = <&pio 7 GPIO_ACTIVE_LOW>;
+ };
+ };
+};
+
+&eth {
+ status = "okay";
+
+ gmac0: mac@0 {
+ compatible = "mediatek,eth-mac";
+ reg = <0>;
+ phy-mode = "2500base-x";
+
+ nvmem-cell-names = "mac-address";
+ nvmem-cells = <&macaddr_factory_4 (3)>;
+
+ fixed-link {
+ speed = <2500>;
+ full-duplex;
+ pause;
+ };
+ };
+};
+
+&mdio_bus {
+ switch: switch@1f {
+ compatible = "mediatek,mt7531";
+ reg = <0x1f>;
+ reset-gpios = <&pio 39 GPIO_ACTIVE_HIGH>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ interrupt-parent = <&pio>;
+ interrupts = <38 IRQ_TYPE_LEVEL_HIGH>;
+ };
+};
+
+&spi0 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&spi0_flash_pins>;
+ status = "okay";
+
+ spi_nand@0 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "spi-nand";
+ reg = <0>;
+
+ spi-max-frequency = <52000000>;
+ spi-tx-buswidth = <4>;
+ spi-rx-buswidth = <4>;
+
+ spi-cal-enable;
+ spi-cal-mode = "read-data";
+ spi-cal-datalen = <7>;
+ spi-cal-data = /bits/ 8 <0x53 0x50 0x49 0x4e 0x41 0x4e 0x44>;
+ spi-cal-addrlen = <5>;
+ spi-cal-addr = /bits/ 32 <0x0 0x0 0x0 0x0 0x0>;
+
+ mediatek,nmbm;
+ mediatek,bmt-max-ratio = <1>;
+ mediatek,bmt-max-reserved-blocks = <64>;
+
+ partitions {
+ compatible = "fixed-partitions";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ partition@0 {
+ label = "BL2";
+ reg = <0x0 0x100000>;
+ read-only;
+ };
+
+ partition@100000 {
+ label = "u-boot-env";
+ reg = <0x100000 0x80000>;
+ };
+
+ partition@180000 {
+ label = "Factory";
+ reg = <0x180000 0x200000>;
+ read-only;
+
+ nvmem-layout {
+ compatible = "fixed-layout";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ eeprom_factory_0: eeprom@0 {
+ reg = <0x0 0x1000>;
+ };
+
+ macaddr_factory_4: macaddr@4 {
+ compatible = "mac-base";
+ reg = <0x4 0x6>;
+ #nvmem-cell-cells = <1>;
+ };
+ };
+ };
+
+ partition@380000 {
+ label = "FIP";
+ reg = <0x380000 0x200000>;
+ read-only;
+ };
+
+ partition@580000 {
+ label = "ubi";
+ reg = <0x580000 0x6E00000>;
+ };
+ };
+ };
+};
+
+&switch {
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ wan: port@0 {
+ reg = <0>;
+ label = "wan";
+ nvmem-cell-names = "mac-address";
+ nvmem-cells = <&macaddr_factory_4 (1)>;
+ };
+
+ port@1 {
+ reg = <1>;
+ label = "lan4";
+ };
+
+ port@2 {
+ reg = <2>;
+ label = "lan3";
+ };
+
+ port@3 {
+ reg = <3>;
+ label = "lan2";
+ };
+
+ port@4 {
+ reg = <4>;
+ label = "lan1";
+ };
+
+ port@6 {
+ reg = <6>;
+ ethernet = <&gmac0>;
+ phy-mode = "2500base-x";
+
+ fixed-link {
+ speed = <2500>;
+ full-duplex;
+ pause;
+ };
+ };
+ };
+};
+
+&pio {
+ spi0_flash_pins: spi0-pins {
+ mux {
+ function = "spi";
+ groups = "spi0", "spi0_wp_hold";
+ };
+
+ conf-pu {
+ pins = "SPI0_CS", "SPI0_HOLD", "SPI0_WP";
+ drive-strength = <MTK_DRIVE_4mA>;
+ bias-pull-up = <MTK_PUPD_SET_R1R0_11>;
+ };
+
+ conf-pd {
+ pins = "SPI0_CLK", "SPI0_MOSI", "SPI0_MISO";
+ drive-strength = <MTK_DRIVE_4mA>;
+ bias-pull-down = <MTK_PUPD_SET_R1R0_11>;
+ };
+ };
+};
+
+&uart0 {
+ status = "okay";
+};
+
+&watchdog {
+ status = "okay";
+};
+
+&wifi {
+ status = "okay";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ nvmem-cell-names = "eeprom";
+ nvmem-cells = <&eeprom_factory_0>;
+
+ band@0 {
+ reg = <0>;
+ nvmem-cells = <&macaddr_factory_4 (0)>;
+ nvmem-cell-names = "mac-address";
+ };
+
+ band@1 {
+ reg = <1>;
+ nvmem-cells = <&macaddr_factory_4 (0)>;
+ nvmem-cell-names = "mac-address";
+ };
+};
diff --git a/target/linux/mediatek/filogic/base-files/etc/board.d/01_leds b/target/linux/mediatek/filogic/base-files/etc/board.d/01_leds
index 549489766c..a5efac7e22 100644
--- a/target/linux/mediatek/filogic/base-files/etc/board.d/01_leds
+++ b/target/linux/mediatek/filogic/base-files/etc/board.d/01_leds
@@ -92,6 +92,9 @@ huasifei,wh3000)
iptime,ax3000q)
ucidef_set_led_netdev "wan" "WAN" "amber:wan" "wan" "link tx rx"
;;
+iptime,ax3000se)
+ ucidef_set_led_netdev "wlan" "WLAN" "blue:wlan" "phy1-ap0"
+ ;;
iptime,ax3000sm)
ucidef_set_led_netdev "wan" "wan" "amber:wan" "eth1" "link tx rx"
;;
diff --git a/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac b/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac
index 86e0a02932..0058aabd53 100644
--- a/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac
+++ b/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac
@@ -121,6 +121,7 @@ case "$board" in
[ "$PHYNBR" = "1" ] && macaddr_setbit_la $addr > /sys${DEVPATH}/macaddress
;;
iptime,ax3000m|\
+ iptime,ax3000se|\
iptime,ax3000sm)
addr=$(mtd_get_mac_binary "Factory" 0x4)
[ "$PHYNBR" = "1" ] && macaddr_setbit_la $(macaddr_unsetbit $(macaddr_unsetbit $(macaddr_unsetbit $(macaddr_setbit $addr 26) 25) 27) 28) > \
diff --git a/target/linux/mediatek/image/filogic.mk b/target/linux/mediatek/image/filogic.mk
index ac3b6dc5a0..32e79ec5de 100644
--- a/target/linux/mediatek/image/filogic.mk
+++ b/target/linux/mediatek/image/filogic.mk
@@ -1428,6 +1428,26 @@ define Device/iptime_ax3000q
endef
TARGET_DEVICES += iptime_ax3000q
+define Device/iptime_ax3000se
+ DEVICE_VENDOR := ipTIME
+ DEVICE_MODEL := AX3000SE
+ DEVICE_DTS := mt7981b-iptime-ax3000se
+ DEVICE_DTS_DIR := ../dts
+ BLOCKSIZE := 128k
+ PAGESIZE := 2048
+ IMAGE_SIZE := 32768k
+ KERNEL := kernel-bin | lzma | fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb
+ KERNEL_INITRAMFS := kernel-bin | lzma | \
+ fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb with-initrd | pad-to 64k
+ IMAGES := sysupgrade.bin
+ IMAGES := factory.bin sysupgrade.bin
+ IMAGE/factory.bin := sysupgrade-tar | append-metadata | check-size | iptime-crc32 ax3kse
+ IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
+ DEVICE_PACKAGES := kmod-mt7915e kmod-mt7981-firmware mt7981-wo-firmware
+ SUPPORTED_DEVICES += mediatek,mt7981-spim-snand-rfb
+endef
+TARGET_DEVICES += iptime_ax3000se
+
define Device/iptime_ax3000sm
DEVICE_VENDOR := ipTIME
DEVICE_MODEL := AX3000SM