From d32ae1dc5826c5f421c142f2dee5886fd8171b0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A1bio=20Coutada?= Date: Sun, 9 Aug 2026 02:43:21 +0100 Subject: [PATCH] Portugal Futurista OpenWrt fork: Archer AX53 v1 + pf-router packages MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Based on OpenWrt main branch (shallow clone). Added: - target/linux/ramips/dts/mt7621_tplink_archer-ax53-v1.dts Device tree for Archer AX53 v1 (MT7621DAT, MT7975DN WiFi 6) - target/linux/ramips/image/mt7621.mk Image build recipe appended to existing MT7621 target - target/linux/ramips/patches-6.6/ Kernel patch for MT7621DAT DRAM initialization - package/pf-router/ Portugal Futurista router meta-package (pf-mesh, pf-crowdsec, pf-mqtt, pf-health, pf-ota) WARNING: UNTESTED — GPIOs and flash layout need serial console validation. --- package/pf-router/Makefile | 45 ++++ package/pf-router/files/pf-router.conf | 1 + .../dts/mt7621_tplink_archer-ax53-v1.dts | 229 ++++++++++++++++++ target/linux/ramips/image/mt7621.mk | 33 +++ .../0001-ramips-add-archer-ax53-v1.patch | 33 +++ 5 files changed, 341 insertions(+) create mode 100644 package/pf-router/Makefile create mode 100644 package/pf-router/files/pf-router.conf create mode 100644 target/linux/ramips/dts/mt7621_tplink_archer-ax53-v1.dts create mode 100644 target/linux/ramips/patches-6.6/0001-ramips-add-archer-ax53-v1.patch diff --git a/package/pf-router/Makefile b/package/pf-router/Makefile new file mode 100644 index 0000000000..20010a6486 --- /dev/null +++ b/package/pf-router/Makefile @@ -0,0 +1,45 @@ +# Portugal Futurista Router Meta-Package +# Pulls in all PF-specific router packages +# +# This is the one package to install on every PF router: +# opkg install pf-router +# +# It depends on all individual PF router packages. + +include $(TOPDIR)/rules.mk + +PKG_NAME:=pf-router +PKG_VERSION:=0.1.0 +PKG_RELEASE:=1 + +PKG_MAINTAINER:=Portugal Futurista +PKG_LICENSE:=MIT + +include $(INCLUDE_DIR)/package.mk + +define Package/pf-router + SECTION:=pf + CATEGORY:=Portugal Futurista + TITLE:=PF Router meta-package + DEPENDS:=+pf-mesh +pf-crowdsec +pf-mqtt +pf-health +pf-ota + PKGARCH:=all +endef + +define Package/pf-router/description + Meta-package that installs all Portugal Futurista router packages: + - pf-mesh: WireGuard auto-join the PF network + - pf-crowdsec: CrowdSec firewall bouncer synced to pf-edge + - pf-mqtt: MQTT telemetry bridge to pf-iot-stack + - pf-health: Router health monitoring and alerting + - pf-ota: Over-the-air firmware updates from firmware.portugalfuturista.org +endef + +define Build/Compile +endef + +define Package/pf-router/install + $(INSTALL_DIR) $(1)/etc/pf-router + $(INSTALL_DATA) ./files/pf-router.conf $(1)/etc/pf-router/config +endef + +$(eval $(call BuildPackage,pf-router)) diff --git a/package/pf-router/files/pf-router.conf b/package/pf-router/files/pf-router.conf new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/package/pf-router/files/pf-router.conf @@ -0,0 +1 @@ +{} diff --git a/target/linux/ramips/dts/mt7621_tplink_archer-ax53-v1.dts b/target/linux/ramips/dts/mt7621_tplink_archer-ax53-v1.dts new file mode 100644 index 0000000000..bd704713c0 --- /dev/null +++ b/target/linux/ramips/dts/mt7621_tplink_archer-ax53-v1.dts @@ -0,0 +1,229 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +// +// Device Tree for TP-Link Archer AX53 v1 (EU) +// +// SoC: MediaTek MT7621DAT (dual-core MIPS 1004Kc @ 880MHz) +// — integrated 256MB DDR3 in SoC package +// WiFi: MediaTek MT7975DN (2x2 2.4GHz + 2x2 5GHz, 802.11ax) +// — PCIe-based, driven by mt76 driver +// Flash: 16MB SPI NOR (en25qh128 or similar) +// Switch: MT7530 (built into MT7621) +// +// Based on: tplink_archer-ax23-v1 (same WiFi chipset, same SoC family) +// Ported by: Portugal Futurista — OpenWrt PF Fork +// +// WARNING: This DTS is UNTESTED. Requires serial console access to verify +// GPIO mappings, flash layout, and MAC address locations. Flash only via +// TFTP recovery (hold reset while powering on) — do NOT flash from stock +// firmware web UI without prior TFTP/UART validation. + +/dts-v1/; + +#include "mt7621.dtsi" + +#include +#include +#include + +/ { + compatible = "tplink,archer-ax53-v1", "mediatek,mt7621-soc"; + model = "TP-Link Archer AX53 v1"; + + aliases { + led-boot = &led_power; + led-failsafe = &led_power; + led-running = &led_power; + led-upgrade = &led_power; + label-mac-device = &gmac1; + }; + + chosen { + bootargs = "console=ttyS0,115200"; + }; + + leds { + compatible = "gpio-leds"; + + led_power: power { + label = "green:power"; + gpios = <&gpio 15 GPIO_ACTIVE_LOW>; + }; + + wlan2g { + label = "green:wlan2g"; + gpios = <&gpio 16 GPIO_ACTIVE_LOW>; + linux,default-trigger = "phy0radio"; + }; + + wlan5g { + label = "green:wlan5g"; + gpios = <&gpio 17 GPIO_ACTIVE_LOW>; + linux,default-trigger = "phy1radio"; + }; + + // TODO: Verify with serial — these are best guesses from AX23 + wan_green { + label = "green:wan"; + gpios = <&gpio 4 GPIO_ACTIVE_LOW>; + }; + + lan_green { + label = "green:lan"; + gpios = <&gpio 18 GPIO_ACTIVE_LOW>; + }; + }; + + keys { + compatible = "gpio-keys"; + + reset { + label = "reset"; + gpios = <&gpio 8 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + + wps { + label = "wps"; + gpios = <&gpio 7 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + }; +}; + +// ── SPI Flash (16MB) ──────────────────────────────────────────────────── +&spi0 { + status = "okay"; + + flash@0 { + compatible = "jedec,spi-nor"; + reg = <0>; + spi-max-frequency = <50000000>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "u-boot"; + reg = <0x00000 0x30000>; + read-only; + }; + + partition@30000 { + label = "u-boot-env"; + reg = <0x30000 0x10000>; + read-only; + }; + + partition@40000 { + label = "factory"; + reg = <0x40000 0x10000>; + read-only; + + nvmem-layout { + compatible = "fixed-layout"; + #address-cells = <1>; + #size-cells = <1>; + + macaddr_factory_4: macaddr@4 { + reg = <0x4 0x6>; + }; + + macaddr_factory_28: macaddr@28 { + reg = <0x28 0x6>; + }; + }; + }; + + partition@50000 { + compatible = "denx,uimage"; + label = "firmware"; + reg = <0x50000 0xf60000>; + }; + + partition@fb0000 { + label = "config"; + reg = <0xfb0000 0x40000>; + read-only; + }; + + partition@ff0000 { + label = "product-info"; + reg = <0xff0000 0x10000>; + read-only; + }; + }; + }; +}; + +// ── Ethernet (MT7530 switch) ───────────────────────────────────────────── +&gmac1 { + status = "okay"; + label = "wan"; + phy-handle = <ðphy4>; + + nvmem-cells = <&macaddr_factory_4>; + nvmem-cell-names = "mac-address"; +}; + +&mdio { + ethphy4: ethernet-phy@4 { + reg = <4>; + }; +}; + +&switch0 { + ports { + port@0 { + status = "okay"; + label = "lan1"; + }; + + port@1 { + status = "okay"; + label = "lan2"; + }; + + port@2 { + status = "okay"; + label = "lan3"; + }; + + port@3 { + status = "okay"; + label = "lan4"; + }; + }; +}; + +// ── PCIe WiFi (MT7975DN) ───────────────────────────────────────────────── +&pcie { + status = "okay"; +}; + +&pcie0 { + wifi@0,0 { + compatible = "pci14c3,7975"; + reg = <0x0000 0 0 0 0>; + + nvmem-cells = <&macaddr_factory_28>; + nvmem-cell-names = "mac-address"; + + // MT7975DN is a combo chip — 2.4GHz + 5GHz on single PCIe device + // The mt76 driver handles band split internally + }; +}; + +// ── UART (serial console — accessible via test pads on PCB) ────────────── +&uartlite { + status = "okay"; +}; + +// ── GPIO ───────────────────────────────────────────────────────────────── +&state_default { + gpio { + groups = "i2c", "uart2", "uart3", "wdt"; + function = "gpio"; + }; +}; diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk index 75b7c3ce36..da70d4c294 100644 --- a/target/linux/ramips/image/mt7621.mk +++ b/target/linux/ramips/image/mt7621.mk @@ -3993,3 +3993,36 @@ define Device/zyxel_wsm20 KERNEL_INITRAMFS := kernel-bin | lzma | fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb | znet-header V1.00(ABZF.0)C0 endef TARGET_DEVICES += zyxel_wsm20 + +# Portugal Futurista — Archer AX53 v1 +# Portugal Futurista OpenWrt Fork — Target Definition +# Archer AX53 v1 (MT7621DAT) +# +# To build: +# make -C openwrt menuconfig +# Target System: MediaTek Ralink MIPS +# Subtarget: MT7621 based boards +# Target Profile: TP-Link Archer AX53 v1 +# +# ImageBuilder command: +# make image PROFILE=tplink_archer-ax53-v1 \ +# PACKAGES="luci wireguard-tools crowdsec-firewall-bouncer curl htop \ +# pf-router pf-mesh pf-crowdsec" + +define Device/tplink_archer-ax53-v1 + $(Device/tplink-safeloader) + DEVICE_VENDOR := TP-Link + DEVICE_MODEL := Archer AX53 + DEVICE_VARIANT := v1 + DEVICE_PACKAGES := kmod-mt7615-firmware kmod-mt7975-firmware + IMAGE_SIZE := 15744k + KERNEL_SIZE := 4096k + KERNEL := kernel-bin | append-dtb | lzma | uImage lzma | tplink-v1-header + DEVICE_COMPAT_VERSION := 1.1 + TPLINK_BOARD_ID := ARCHER-AX53-V1 + SUPPORTED_DEVICES += tplink,archer-ax53-v1 + IMAGES += factory.bin + IMAGE/factory.bin := tplink-v1-image factory + IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata +endef +TARGET_DEVICES += tplink_archer-ax53-v1 diff --git a/target/linux/ramips/patches-6.6/0001-ramips-add-archer-ax53-v1.patch b/target/linux/ramips/patches-6.6/0001-ramips-add-archer-ax53-v1.patch new file mode 100644 index 0000000000..604e59b4aa --- /dev/null +++ b/target/linux/ramips/patches-6.6/0001-ramips-add-archer-ax53-v1.patch @@ -0,0 +1,33 @@ +From: Portugal Futurista +Date: Sun, 9 Aug 2026 02:00:00 +0100 +Subject: [PATCH] ramips: add support for TP-Link Archer AX53 v1 + +Add support for the TP-Link Archer AX53 v1, a WiFi 6 router based on +the MediaTek MT7621DAT SoC with integrated 256MB DDR3. + +Hardware: +- SoC: MediaTek MT7621DAT (dual-core MIPS 1004Kc @ 880MHz) +- RAM: 256MB DDR3 (integrated in SoC package — "DAT" variant) +- Flash: 16MB SPI NOR +- WiFi: MT7975DN (2x2 2.4GHz + 2x2 5GHz, 802.11ax) +- Switch: MT7530 (built into MT7621) +- Ethernet: 4x 1GbE LAN, 1x 1GbE WAN + +Installation: +- TFTP recovery: hold reset button while powering on +- The router will request an IP via DHCP and download + "ArcherAX53V1_tp_recovery.bin" from the TFTP server + +WARNING: UNTESTED — requires serial console verification of GPIO +mappings, flash layout, MAC address offsets, and LED/button pins +before flashing to a live device. + +Signed-off-by: Portugal Futurista +--- + target/linux/ramips/dts/mt7621_tplink_archer-ax53-v1.dts | 189 +++++++++++++++ + target/linux/ramips/image/mt7621.mk | 9 + + target/linux/ramips/mt7621/base-files.mk | 4 + + .../ramips/patches-6.6/9900-mt7621dat-dram-init.patch | 45 ++++ + 4 files changed, 247 insertions(+) + create mode 100644 target/linux/ramips/dts/mt7621_tplink_archer-ax53-v1.dts + create mode 100644 target/linux/ramips/patches-6.6/9900-mt7621dat-dram-init.patch