kiddin9 2 年之前
父节点
当前提交
af7fa8683d

+ 5 - 1
.github/workflows/Openwrt-AutoBuild.yml

@@ -75,6 +75,8 @@ jobs:
             echo "MTARGET=mipsel_24kc" >> $GITHUB_ENV
         elif [[ ${{matrix.target}} == "ath79_nand" ]]; then
             echo "MTARGET=mips_24kc" >> $GITHUB_ENV
+        elif [[ ${{matrix.target}} == "ipq50xx_arm" ]]; then
+            echo "MTARGET=arm_cortex-a7" >> $GITHUB_ENV
         elif [[ ${{matrix.target}} =~ (ipq40xx_generic|bcm27xx_bcm2709|sunxi_cortexa7) ]]; then
             echo "MTARGET=arm_cortex-a7_neon-vfpv4" >> $GITHUB_ENV
         elif [[ ${{matrix.target}} == "meson_meson8b" ]]; then
@@ -148,11 +150,13 @@ jobs:
             python3 setup.py -c configs/config-mt798x-7.6.6.1.yml
             ln -sf gl-infra-builder/mt7981 ../openwrt
             cd -
-        elif [ ! "${{ env.REPO_BRANCH }}" ]; then
+        elif [[ ! "${{ env.REPO_BRANCH }}" && "$REPO_URL" == "https://github.com/openwrt/openwrt" ]]; then
           REPO_BRANCH="$((curl -gs -H 'Content-Type: application/json' \
            -H "Authorization: Bearer ${{ secrets.REPO_TOKEN }}" \
            -X POST -d '{ "query": "query {repository(owner: \"openwrt\", name: \"openwrt\") {refs(refPrefix: \"refs/tags/\", last: 4, orderBy: {field: TAG_COMMIT_DATE, direction: ASC}) {edges {node {name}}}}}"}' https://api.github.com/graphql) | jq -r '.data.repository.refs.edges[].node.name' | grep v22 | tail -n 1)"
            git clone $REPO_URL -b $REPO_BRANCH openwrt
+        elif [[ ! "${{ env.REPO_BRANCH }}" ]]; then
+            git clone $REPO_URL openwrt
         else
             git clone $REPO_URL -b ${{ env.REPO_BRANCH }} openwrt
             echo "git clone $REPO_URL -b ${{ env.REPO_BRANCH }} openwrt"

+ 5 - 0
.github/workflows/repo-dispatcher.yml

@@ -122,6 +122,11 @@ jobs:
           -X POST https://api.github.com/repos/${{ github.repository }}/dispatches \
           -H "Accept: application/vnd.github.everest-preview+json" \
           -H "Authorization: token ${{ secrets.REPO_TOKEN }}" \
+          -d '{"event_type": "ipq50xx_arm ${{ github.event.inputs.param }}", "client_payload": {"target": "ipq50xx_arm"}}'
+          curl \
+          -X POST https://api.github.com/repos/${{ github.repository }}/dispatches \
+          -H "Accept: application/vnd.github.everest-preview+json" \
+          -H "Authorization: token ${{ secrets.REPO_TOKEN }}" \
           -d '{"event_type": "mediatek_mt7986 ${{ github.event.inputs.param }}", "client_payload": {"target": "mediatek_mt7986"}}'
           curl \
           -X POST https://api.github.com/repos/${{ github.repository }}/dispatches \

+ 3 - 4
devices/armvirt_64/.config

@@ -1,13 +1,12 @@
 CONFIG_TARGET_armvirt=y
 CONFIG_TARGET_armvirt_64=y
-CONFIG_TARGET_armvirt_64_DEVICE_n1=y
-CONFIG_TARGET_ROOTFS_EXT4FS=y
-CONFIG_TARGET_ROOTFS_SQUASHFS=n
+CONFIG_TARGET_armvirt_64_DEVICE_box=y
 CONFIG_PACKAGE_kmod-brcmfmac=y
 CONFIG_BRCMFMAC_SDIO=y
 CONFIG_TARGET_ROOTFS_TARGZ=y
 
-CONFIG_TARGET_ROOTFS_INITRAMFS=n
+CONFIG_TARGET_ROOTFS_EXT4FS=y
+CONFIG_TARGET_ROOTFS_SQUASHFS=n
 
 CONFIG_PACKAGE_luci-ssl=n # uhttpd服务
 CONFIG_PACKAGE_luci-ssl-nginx=y # nginx

+ 0 - 37
devices/armvirt_64/diy/target/linux/armvirt/image/Makefile

@@ -1,37 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0-only
-#
-# Copyright (C) 2012-2019 OpenWrt.org
-# Copyright (C) 2016-2017 LEDE project
-
-include $(TOPDIR)/rules.mk
-include $(INCLUDE_DIR)/image.mk
-
-define Build/Compile
-	$(CP) $(LINUX_DIR)/COPYING $(KDIR)/COPYING.linux
-endef
-
-### Devices ###
-define Device/Default
-  KERNEL := kernel-bin
-endef
-
-define Device/box
-  DEVICE_VENDOR := 
-  DEVICE_MODEL := 电视盒子全系列 / N1
-  DEVICE_PACKAGES :=
-endef
-TARGET_DEVICES += box
-
-define Image/Build
-	export BIN_DIR=$(BIN_DIR); \
-	export DATE=$(DATE); \
-	cd /www/wwwroot/op.supes.top/bcache/armvirt/64/amlogic-s9xxx-openwrt; \
-	. ../modify_amlogic.sh; \
-	./make -k 5.15.100 -b $(MORE) -s $(shell echo $$(($(ROOTFS_PARTSIZE)/1024/1024))) || true
-endef
-
-$(eval $(call BuildImage))
-
-# SPDX-License-Identifier: GPL-2.0-only
-#
-# Copyright (C) 2020 Tobias Maedel

+ 37 - 1
devices/armvirt_64/patches/rootfs.patch

@@ -1,11 +1,47 @@
 --- a/include/image.mk
 +++ b/include/image.mk
-@@ -770,5 +770,7 @@
+@@ -728,8 +769,10 @@ endef
+ define Device
    $(call Device/InitProfile,$(1))
    $(call Device/Init,$(1))
 +  $(call Device/Init,$(PROFILE_SANITIZED))
    $(call Device/Default,$(1))
+   $(call Device/$(1),$(1))
 +  $(call Device/$(PROFILE_SANITIZED),$(1))
    $(call Device/Check,$(1))
    $(call Device/$(if $(DUMP),Dump,Build),$(1))
+ 
 
+--- a/target/linux/armvirt/image/Makefile
++++ b/target/linux/armvirt/image/Makefile
+@@ -23,10 +23,30 @@ endef
+ 
+ $(eval $(call Image/gzip-ext4-padded-squashfs))
+ 
++define Device/box
++  DEVICE_VENDOR := 
++  DEVICE_MODEL := 电视盒子全系列 / N1
++  DEVICE_PACKAGES :=
++endef
++TARGET_DEVICES += box
++
++define Device/armvirt
++  DEVICE_MODEL := QEMU ARM virt machine
++  DEVICE_PACKAGES :=
++endef
++TARGET_DEVICES += armvirt
++
+ define Image/Build
+ 	$(call Image/Build/$(1))
+ 	$(CP) $(KDIR)/root.$(1) $(BIN_DIR)/$(IMG_ROOTFS)-$(1).img
+ 	$(call Image/Build/gzip/$(1))
++	if [ "$(PROFILE_SANITIZED)" == "box" ]; then \
++	export BIN_DIR=$(BIN_DIR); \
++	export DATE=$(DATE); \
++	cd /www/wwwroot/op.supes.top/bcache/armvirt/64/amlogic-s9xxx-openwrt; \
++	. ../modify_amlogic.sh; \
++	./make -k 5.15.100 -b $(MORE) -s $(shell echo $$(($(ROOTFS_PARTSIZE)/1024/1024))) || true; \
++	fi
+ endef
+ 
+ $(eval $(call BuildImage))

+ 2 - 0
devices/common/.config

@@ -91,6 +91,8 @@ CONFIG_PACKAGE_kmod-sprd_pcie=n
 
 CONFIG_PACKAGE_kmod-pcie_mhi=n
 
+CONFIG_PACKAGE_kmod-mii=n
+
 
 
 

+ 3 - 1
devices/common/kernel_5.15.sh

@@ -24,11 +24,13 @@ svn export --force  https://github.com/openwrt/packages/trunk/net/xtables-addons
 svn co https://github.com/coolsnowwolf/lede/trunk/target/linux/generic/hack-5.15 target/linux/generic/hack-5.15
 svn co https://github.com/coolsnowwolf/lede/trunk/target/linux/generic/backport-5.15 target/linux/generic/backport-5.15
 find target/linux/generic/backport-5.15 -name "[0-9][0-9][0-9]-[a-z][a-z]*" -exec rm -f {} \;
-rm -rf target/linux/generic/backport-5.15/{802-v6.1-nvmem*,803-v5.19-nvmem*,733-v6.2-02-net-mediatek-sgmii-ensure*,733-v6.2-03-net-mediatek*,733-v6.2-04-mtk_sgmii-enable*,730-11-v6.3-net-ethernet-mtk_eth*,775-v5.16-net-phylink*,776-v5.16-net-ethernet-*,612-v6.3-skbuff-Fix*}
+rm -rf target/linux/generic/backport-5.15/{799-v6.0-net-mii*,802-v6.1-nvmem*,803-v5.19-nvmem*,733-v6.2-02-net-mediatek-sgmii-ensure*,733-v6.2-03-net-mediatek*,733-v6.2-04-mtk_sgmii-enable*,730-11-v6.3-net-ethernet-mtk_eth*,775-v5.16-net-phylink*,776-v5.16-net-ethernet-*,612-v6.3-skbuff-Fix*}
 curl -sfL https://raw.githubusercontent.com/coolsnowwolf/lede/master/target/linux/generic/pending-5.15/613-netfilter_optional_tcp_window_check.patch -o target/linux/generic/pending-5.15/613-netfilter_optional_tcp_window_check.patch
 
 sed -i "s/tty\(0\|1\)::askfirst/tty\1::respawn/g" target/linux/*/base-files/etc/inittab
 
+sed -i "s/CONFIG_WERROR=y/CONFIG_WERROR=n/" target/linux/generic/config-5.15
+
 echo "
 CONFIG_TESTING_KERNEL=y
 CONFIG_PACKAGE_kmod-ipt-coova=n

+ 21 - 37
devices/common/patches/fix.patch

@@ -45,7 +45,7 @@
  ifdef CONFIG_TARGET_ROOTFS_CPIOGZ
    define Image/Build/cpiogz
  	( cd $(TARGET_DIR); find . | $(STAGING_DIR_HOST)/bin/cpio -o -H newc -R 0:0 | gzip -9n >$(BIN_DIR)/$(IMG_ROOTFS).cpio.gz )
-@@ -367,12 +405,13 @@ define Device/Init
+@@ -367,6 +405,7 @@ define Device/Init
    DEVICE_IMG_PREFIX := $(IMG_PREFIX)-$(1)
    DEVICE_IMG_NAME = $$(DEVICE_IMG_PREFIX)-$$(1)-$$(2)
    IMAGE_SIZE :=
@@ -53,41 +53,6 @@
    KERNEL_PREFIX = $$(DEVICE_IMG_PREFIX)
    KERNEL_SUFFIX := -kernel.bin
    KERNEL_INITRAMFS_SUFFIX = $$(KERNEL_SUFFIX)
-   KERNEL_IMAGE = $$(KERNEL_PREFIX)$$(KERNEL_SUFFIX)
-   KERNEL_INITRAMFS_PREFIX = $$(DEVICE_IMG_PREFIX)-initramfs
--  KERNEL_INITRAMFS_IMAGE = $$(KERNEL_INITRAMFS_PREFIX)$$(KERNEL_INITRAMFS_SUFFIX)
-+  KERNEL_INITRAMFS_IMAGE = $(subst $(IMG_PREFIX_EXTRA),,$(IMG_PREFIX))-$(1)-initramfs$$(KERNEL_INITRAMFS_SUFFIX)
-   KERNEL_INITRAMFS_NAME = $$(KERNEL_NAME)-initramfs
-   KERNEL_INSTALL :=
-   KERNEL_NAME := vmlinux
-@@ -472,7 +511,6 @@ define Device/Check
-   endif
- endef
- 
--ifndef IB
- define Device/Build/initramfs
-   $(call Device/Export,$(KDIR)/tmp/$$(KERNEL_INITRAMFS_IMAGE),$(1))
-   $$(_TARGET): $$(if $$(KERNEL_INITRAMFS),$(BIN_DIR)/$$(KERNEL_INITRAMFS_IMAGE) \
-@@ -483,9 +521,11 @@ define Device/Build/initramfs
-   $(BIN_DIR)/$$(KERNEL_INITRAMFS_IMAGE): $(KDIR)/tmp/$$(KERNEL_INITRAMFS_IMAGE)
- 	cp $$^ $$@
- 
-+  ifndef IB
-   $(KDIR)/tmp/$$(KERNEL_INITRAMFS_IMAGE): $(KDIR)/$$(KERNEL_INITRAMFS_NAME) $(CURDIR)/Makefile $$(KERNEL_DEPENDS) image_prepare
- 	@rm -f $$@
- 	$$(call concat_cmd,$$(KERNEL_INITRAMFS))
-+  endif
- 
-   $(call Device/Export,$(BUILD_DIR)/json_info_files/$$(KERNEL_INITRAMFS_IMAGE).json,$(1))
- 
-@@ -519,7 +559,6 @@ define Device/Build/initramfs
- 	SUPPORTED_DEVICES="$$(SUPPORTED_DEVICES)" \
- 	$(TOPDIR)/scripts/json_add_image_info.py $$@
- endef
--endif
- 
- define Device/Build/compile
-   $$(_COMPILE_TARGET): $(KDIR)/$(1)
 @@ -568,7 +607,7 @@ define Device/Build/kernel
  endef
  
@@ -97,7 +62,15 @@
    $$(_TARGET): $(if $(CONFIG_JSON_OVERVIEW_IMAGE_INFO), \
  	  $(BUILD_DIR)/json_info_files/$(call DEVICE_IMG_NAME,$(1),$(2)).json, \
  	  $(BIN_DIR)/$(call DEVICE_IMG_NAME,$(1),$(2))$$(GZ_SUFFIX))
-@@ -678,6 +717,8 @@ define Device/Build
+@@ -606,6 +645,7 @@ define Device/Build/image
+ 	FILE_TYPE=$(word 1,$(subst ., ,$(2))) \
+ 	FILE_FILESYSTEM="$(1)" \
+ 	DEVICE_IMG_PREFIX="$(DEVICE_IMG_PREFIX)" \
++	KERNEL_INITRAMFS_IMAGE="$(subst $(IMG_PREFIX_EXTRA),,$(KERNEL_INITRAMFS_IMAGE))" \
+ 	DEVICE_VENDOR="$(DEVICE_VENDOR)" \
+ 	DEVICE_MODEL="$(DEVICE_MODEL)" \
+ 	DEVICE_VARIANT="$(DEVICE_VARIANT)" \
+@@ -678,6 +718,8 @@ define Device/Build
    $(if $(CONFIG_TARGET_ROOTFS_INITRAMFS),$(call Device/Build/initramfs,$(1)))
    $(call Device/Build/kernel,$(1))
  
@@ -126,3 +99,14 @@
          ],
          stdout=PIPE,
          stderr=PIPE,
+
+--- a/scripts/json_add_image_info.py
++++ b/scripts/json_add_image_info.py
+@@ -55,6 +55,7 @@ def get_titles():
+     "profiles": {
+         device_id: {
+             "image_prefix": getenv("DEVICE_IMG_PREFIX"),
++            "image_initramfs": getenv("KERNEL_INITRAMFS_IMAGE"),
+             "images": [
+                 {
+                     "type": getenv("FILE_TYPE"),

+ 2 - 19
devices/common/patches/imagebuilder.patch

@@ -1,14 +1,5 @@
 --- a/target/imagebuilder/Makefile
 +++ b/target/imagebuilder/Makefile
-@@ -26,7 +26,7 @@ all: compile
- 
- $(BIN_DIR)/$(IB_NAME).tar.xz: clean
- 	rm -rf $(PKG_BUILD_DIR)
--	mkdir -p $(IB_KDIR) $(IB_LDIR) $(PKG_BUILD_DIR)/staging_dir/host/lib \
-+	mkdir -p $(IB_KDIR)/tmp $(IB_LDIR) $(PKG_BUILD_DIR)/staging_dir/host/lib \
- 		$(PKG_BUILD_DIR)/target $(PKG_BUILD_DIR)/scripts $(IB_DTSDIR)
- 	-cp $(TOPDIR)/.config $(PKG_BUILD_DIR)/.config
- 	$(SED) 's/^CONFIG_BINARY_FOLDER=.*/# CONFIG_BINARY_FOLDER is not set/' $(PKG_BUILD_DIR)/.config
 @@ -38,13 +38,16 @@ $(BIN_DIR)/$(IB_NAME).tar.xz: clean
  		./files/repositories.conf \
  		$(TMP_DIR)/.targetinfo \
@@ -29,14 +20,6 @@
  
  	$(INSTALL_DIR) $(PKG_BUILD_DIR)/packages
  	# create an empty package index so `opkg` doesn't report an error
-@@ -79,6 +82,7 @@ ifneq ($(CONFIG_SIGNATURE_CHECK),)
- endif
- 
- 	$(CP) -L $(TOPDIR)/target/linux $(PKG_BUILD_DIR)/target/
-+	$(CP) -L $(KERNEL_BUILD_DIR)/tmp/*initramfs* $(IB_KDIR)/tmp/ || true
- 	if [ -d $(TOPDIR)/staging_dir/host/lib/grub ]; then \
- 		$(CP) $(TOPDIR)/staging_dir/host/lib/grub/ $(PKG_BUILD_DIR)/staging_dir/host/lib; \
- 	fi
 
 --- a/target/imagebuilder/files/Makefile
 +++ b/target/imagebuilder/files/Makefile
@@ -68,7 +51,7 @@
  	$(MAKE) -s build_image
  	$(MAKE) -s json_overview_image_info
  	$(MAKE) -s checksum
-+	rm -rf $(KERNEL_BUILD_DIR)/tmp/openwrt-20.*
++	rm -rf $(KERNEL_BUILD_DIR)/tmp
 +	rm -rf $(KERNEL_BUILD_DIR)/root.*
  
  _call_manifest: FORCE
@@ -105,4 +88,4 @@
 +	nice -n 19 $(NO_TRACE_MAKE) -C target/linux/$(BOARD)/image install TARGET_BUILD=1 IB=1 EXTRA_IMAGE_NAME="$(EXTRA_IMAGE_NAME)" \
  		$(if $(USER_PROFILE),PROFILE="$(USER_PROFILE)")
  
- $(BIN_DIR)/profiles.json: FORCE
+ $(BIN_DIR)/profiles.json: FORCE

+ 47 - 0
devices/ipq50xx_arm/.config

@@ -0,0 +1,47 @@
+
+CONFIG_TARGET_ipq50xx=y
+CONFIG_TARGET_ipq50xx_arm=y
+CONFIG_TARGET_MULTI_PROFILE=y
+CONFIG_TARGET_ALL_PROFILES=y
+
+CONFIG_PACKAGE_luci-ssl=y # uhttpd服务
+
+CONFIG_PACKAGE_kmod-mdio-netlink=n
+CONFIG_PACKAGE_kmod-jool-netfilter=n
+CONFIG_PACKAGE_perf=n
+
+CONFIG_PACKAGE_kmod-netem=n
+CONFIG_PACKAGE_kmod-sched=n
+CONFIG_PACKAGE_kmod-sched-act-vlan=n
+CONFIG_PACKAGE_kmod-sched-bpf=n
+CONFIG_PACKAGE_kmod-sched-cake=n
+CONFIG_PACKAGE_kmod-sched-connmark=n
+CONFIG_PACKAGE_kmod-sched-core=n
+CONFIG_PACKAGE_kmod-sched-ctinfo=n
+CONFIG_PACKAGE_kmod-sched-flower=n
+CONFIG_PACKAGE_kmod-sched-ipset=n
+CONFIG_PACKAGE_kmod-sched-mqprio=n
+
+CONFIG_PACKAGE_kmod-qca-nss-drv-igs=n
+CONFIG_PACKAGE_kmod-qca-nss-drv-mirror=n
+CONFIG_PACKAGE_kmod-qca-nss-drv-qdisc=n
+
+CONFIG_PACKAGE_kmod-qca-nss-drv-capwapmgr=n
+CONFIG_PACKAGE_kmod-qca-nss-drv-clmapmgr=n
+CONFIG_PACKAGE_kmod-qca-nss-drv-dtlsmgr=n
+CONFIG_PACKAGE_kmod-qca-nss-drv-eogremgr=n
+CONFIG_PACKAGE_kmod-qca-nss-drv-gre=n
+CONFIG_PACKAGE_kmod-qca-nss-drv-ipsecmgr=n
+CONFIG_PACKAGE_kmod-qca-nss-drv-l2tpv2=n
+CONFIG_PACKAGE_kmod-qca-nss-drv-lag-mgr=n
+CONFIG_PACKAGE_kmod-qca-nss-drv-map-t=n
+CONFIG_PACKAGE_kmod-qca-nss-drv-match=n
+CONFIG_PACKAGE_kmod-qca-nss-drv-netlink=n
+CONFIG_PACKAGE_kmod-qca-nss-drv-pppoe=n
+CONFIG_PACKAGE_kmod-qca-nss-drv-pptp=n
+CONFIG_PACKAGE_kmod-qca-nss-drv-profile=n
+CONFIG_PACKAGE_kmod-qca-nss-drv-pvxlanmgr=n
+CONFIG_PACKAGE_kmod-qca-nss-drv-tun6rd=n
+CONFIG_PACKAGE_kmod-qca-nss-drv-tunipip6=n
+CONFIG_PACKAGE_kmod-qca-nss-drv-vxlanmgr=n
+

+ 21 - 0
devices/ipq50xx_arm/diy.sh

@@ -0,0 +1,21 @@
+#!/bin/bash
+
+shopt -s extglob
+
+SHELL_FOLDER=$(dirname $(readlink -f "$0"))
+
+sed -i '/postgres=5432/d' feeds/packages.index
+sed -i '/postgres=5432/d' feeds/packages/net/gnunet/Makefile
+./scripts/feeds install -a
+
+sed -i "s/make-ext4fs missing-macros/make-ext4fs meson missing-macros/" tools/Makefile
+curl -sfL https://raw.githubusercontent.com/openwrt/openwrt/openwrt-22.03/include/meson.mk -o include/meson.mk
+svn co https://github.com/openwrt/openwrt/branches/openwrt-22.03/tools/meson tools/meson
+
+rm -rf package/feeds/kiddin9/rtl* feeds/kiddin9/{shortcut-fe,fullconenat-nft} package/kernel/mt76 package/kernel/exfat package/feeds/packages/fuse*
+
+rm -rf devices/common/patches/{fix.patch,iptables.patch,kernel-defaults.patch,targets.patch}
+
+rm -rf toolchain/musl
+
+svn co https://github.com/openwrt/openwrt/branches/openwrt-22.03/toolchain/musl toolchain/musl

+ 4 - 0
devices/ipq50xx_arm/feeds.conf

@@ -0,0 +1,4 @@
+src-git packages https://git.openwrt.org/feed/packages.git;openwrt-22.03
+src-git luci https://git.openwrt.org/project/luci.git;openwrt-22.03
+src-git routing https://git.openwrt.org/feed/routing.git;openwrt-22.03
+src-git kiddin9 https://github.com/kiddin9/openwrt-packages.git;master

+ 11 - 0
devices/ipq50xx_arm/patches/cr880x.patch

@@ -0,0 +1,11 @@
+--- a/target/linux/ipq50xx/image/Makefile
++++ b/target/linux/ipq50xx/image/Makefile
+@@ -35,6 +35,8 @@ define Device/redmi_ax3000
+   SOC := ipq5000
+   DEVICE_VENDOR := Redmi
+   DEVICE_MODEL := AX3000
++  DEVICE_ALT0_VENDOR := Xiaomi
++  DEVICE_ALT0_MODEL := CR880X
+   BLOCKSIZE := 128k
+   PAGESIZE := 2048
+   DEVICE_DTS_CONFIG := [email protected]

+ 41 - 0
devices/ipq50xx_arm/patches/fix.patch

@@ -0,0 +1,41 @@
+--- a/include/image.mk
++++ b/include/image.mk
+@@ -609,6 +609,7 @@ define Device/Build/image
+ 	IMAGE_TYPE=$(word 1,$(subst ., ,$(2))) \
+ 	IMAGE_FILESYSTEM="$(1)" \
+ 	IMAGE_PREFIX="$(IMAGE_PREFIX)" \
++	KERNEL_INITRAMFS_IMAGE="$(subst $(IMG_PREFIX_EXTRA),,$(KERNEL_INITRAMFS_IMAGE))" \
+ 	DEVICE_VENDOR="$(DEVICE_VENDOR)" \
+ 	DEVICE_MODEL="$(DEVICE_MODEL)" \
+ 	DEVICE_VARIANT="$(DEVICE_VARIANT)" \
+
+--- a/scripts/json_add_image_info.py
++++ b/scripts/json_add_image_info.py
+@@ -48,6 +48,7 @@ def get_titles():
+     "profiles": {
+         device_id: {
+             "image_prefix": getenv("IMAGE_PREFIX"),
++            "image_initramfs": getenv("KERNEL_INITRAMFS_IMAGE"),
+             "images": [
+                 {
+                     "type": getenv("IMAGE_TYPE"),
+
+--- a/scripts/json_overview_image_info.py
++++ b/scripts/json_overview_image_info.py
+@@ -47,7 +47,7 @@ def get_initial_output(image_info):
+ 
+ 
+ if output:
+-    default_packages, output["arch_packages"] = run(
++    default_packages, output["arch_packages"], output["kernel_version"] = run(
+         [
+             "make",
+             "--no-print-directory",
+@@ -55,6 +55,7 @@ def get_initial_output(image_info):
+             "target/linux/",
+             "val.DEFAULT_PACKAGES",
+             "val.ARCH_PACKAGES",
++            "val.LINUX_VERSION",
+         ],
+         stdout=PIPE,
+         stderr=PIPE,

+ 40 - 0
devices/ipq50xx_arm/patches/iptables-mod-socket.patch

@@ -0,0 +1,40 @@
+--- a/package/network/utils/iptables/Makefile
++++ b/package/network/utils/iptables/Makefile
+@@ -388,6 +388,19 @@ iptables extension for triggering a LED.
+ 
+ endef
+ 
++define Package/iptables-mod-socket
++$(call Package/iptables/Module, +kmod-ipt-socket)
++  TITLE:=Socket match iptables extensions
++endef
++
++define Package/iptables-mod-socket/description
++Socket match iptables extensions.
++
++ Matches:
++  - socket
++
++endef
++
+ define Package/iptables-mod-tproxy
+ $(call Package/iptables/Module, +kmod-ipt-tproxy)
+   TITLE:=Transparent proxy iptables extensions
+@@ -396,9 +409,6 @@ endef
+ define Package/iptables-mod-tproxy/description
+ Transparent proxy iptables extensions.
+ 
+- Matches:
+-  - socket
+-
+  Targets:
+   - TPROXY
+ 
+@@ -721,6 +731,7 @@ $(eval $(call BuildPlugin,iptables-mod-ulog,$(IPT_ULOG-m)))
+ $(eval $(call BuildPlugin,iptables-mod-hashlimit,$(IPT_HASHLIMIT-m)))
+ $(eval $(call BuildPlugin,iptables-mod-rpfilter,$(IPT_RPFILTER-m)))
+ $(eval $(call BuildPlugin,iptables-mod-led,$(IPT_LED-m)))
++$(eval $(call BuildPlugin,iptables-mod-socket,$(IPT_SOCKET-m)))
+ $(eval $(call BuildPlugin,iptables-mod-tproxy,$(IPT_TPROXY-m)))
+ $(eval $(call BuildPlugin,iptables-mod-tee,$(IPT_TEE-m)))
+ $(eval $(call BuildPlugin,iptables-mod-u32,$(IPT_U32-m)))

+ 10 - 0
devices/ipq50xx_arm/patches/kernel-defaults.patch

@@ -0,0 +1,10 @@
+--- a/include/kernel-defaults.mk
++++ b/include/kernel-defaults.mk
+@@ -115,6 +115,7 @@ endef
+ 
+ define Kernel/CompileModules/Default
+ 	rm -f $(LINUX_DIR)/vmlinux $(LINUX_DIR)/System.map
++	+$(KERNEL_MAKE) olddefconfig
+ 	+$(KERNEL_MAKE) modules
+ endef
+ 

+ 21 - 0
devices/ipq50xx_arm/patches/targets.patch

@@ -0,0 +1,21 @@
+--- a/include/target.mk
++++ b/include/target.mk
+@@ -51,7 +51,17 @@ DEFAULT_PACKAGES.router:=\
+ 	odhcp6c \
+ 	odhcpd-ipv6only \
+ 	ppp \
+-	ppp-mod-pppoe
++	ppp-mod-pppoe \
++	kmod-ipt-nat \
++	kmod-ipt-nat6
++
++ifeq ($(ARCH),arm)
++  DEFAULT_PACKAGES+=luci-app-cpufreq
++endif
++
++ifeq ($(ARCH),aarch64)
++  DEFAULT_PACKAGES+=luci-app-cpufreq
++endif
+ 
+ ifneq ($(DUMP),)
+   all: dumpinfo

+ 2 - 0
devices/ipq50xx_arm/settings.ini

@@ -0,0 +1,2 @@
+REPO_URL="https://github.com/hzyitc/openwrt-redmi-ax3000"
+REPO_BRANCH=""

+ 40 - 0
devices/ipq807x_generic/diy/target/linux/ipq807x/files/arch/arm64/boot/dts/qcom/ipq8072-ax9000.dts

@@ -422,6 +422,46 @@
 	};
 };
 
+&dp1 {
+	status = "okay";
+	phy-handle = <&qca8075_0>;
+	label = "lan4";
+	nvmem-cells = <&macaddr_dp1>;
+	nvmem-cell-names = "mac-address";
+};
+
+&dp2 {
+	status = "okay";
+	phy-handle = <&qca8075_1>;
+	label = "lan3";
+	nvmem-cells = <&macaddr_dp2>;
+	nvmem-cell-names = "mac-address";
+};
+
+&dp3 {
+	status = "okay";
+	phy-handle = <&qca8075_2>;
+	label = "lan2";
+	nvmem-cells = <&macaddr_dp3>;
+	nvmem-cell-names = "mac-address";
+};
+
+&dp4 {
+	status = "okay";
+	phy-handle = <&qca8075_3>;
+	label = "lan1";
+	nvmem-cells = <&macaddr_dp4>;
+	nvmem-cell-names = "mac-address";
+};
+
+&dp5 {
+	status = "okay";
+	phy-handle = <&qca8081>;
+	label = "wan";
+	nvmem-cells = <&macaddr_dp5>;
+	nvmem-cell-names = "mac-address";
+};
+
 &edma {
 	status = "okay";
 };

+ 4 - 0
devices/ipq807x_ipq60xx/.config

@@ -8,6 +8,10 @@ CONFIG_TARGET_DEVICE_ipq807x_ipq60xx_DEVICE_glinet_ax1800=y
 CONFIG_CCACHE=n
 
 CONFIG_PACKAGE_dockerd=n
+CONFIG_PACKAGE_kmod-mdio-netlink=n
+CONFIG_PACKAGE_kmod-jool-netfilter=n
+CONFIG_PACKAGE_kmod-ovpn-dco=n
+
 CONFIG_PACKAGE_kmod-dm-raid=n
 CONFIG_PACKAGE_kmod-dm=n
 CONFIG_PACKAGE_kmod-siit=n

+ 6 - 0
devices/ipq807x_ipq60xx/diy.sh

@@ -12,8 +12,14 @@ rm -rf package/feeds
 ./scripts/feeds install -a -p wifi_ax -f
 ./scripts/feeds install -a -p gl_feeds_common -f
 ./scripts/feeds install -a -p kiddin9 -f
+sed -i '/postgres=5432/d' feeds/packages.index
+sed -i '/postgres=5432/d' feeds/packages/net/gnunet/Makefile
 ./scripts/feeds install -a
 
+sed -i "s/make-ext4fs missing-macros/make-ext4fs meson missing-macros/" tools/Makefile
+curl -sfL https://raw.githubusercontent.com/openwrt/openwrt/openwrt-22.03/include/meson.mk -o include/meson.mk
+svn co https://github.com/openwrt/openwrt/branches/openwrt-22.03/tools/meson tools/meson
+
 echo "
 CONFIG_FEED_gl_feeds_common=n
 CONFIG_FEED_ipq807x=n

+ 19 - 37
devices/ipq807x_ipq60xx/patches/fix.patch

@@ -1,42 +1,24 @@
 --- a/include/image.mk
 +++ b/include/image.mk
-@@ -371,7 +370,7 @@ define Device/Init
-   KERNEL_INITRAMFS_SUFFIX = $$(KERNEL_SUFFIX)
-   KERNEL_IMAGE = $$(KERNEL_PREFIX)$$(KERNEL_SUFFIX)
-   KERNEL_INITRAMFS_PREFIX = $$(IMAGE_PREFIX)-initramfs
--  KERNEL_INITRAMFS_IMAGE = $$(KERNEL_INITRAMFS_PREFIX)$$(KERNEL_INITRAMFS_SUFFIX)
-+  KERNEL_INITRAMFS_IMAGE = $(subst $(IMG_PREFIX_EXTRA),,$(IMG_PREFIX))-$(1)-initramfs$$(KERNEL_INITRAMFS_SUFFIX)
-   KERNEL_INITRAMFS_NAME = $$(KERNEL_NAME)-initramfs
-   KERNEL_INSTALL :=
-   KERNEL_NAME := vmlinux
-@@ -469,7 +468,6 @@ define Device/Check
-   endif
- endef
- 
--ifndef IB
- define Device/Build/initramfs
-   $(call Device/Export,$(KDIR)/tmp/$$(KERNEL_INITRAMFS_IMAGE),$(1))
-   $$(_TARGET): $$(if $$(KERNEL_INITRAMFS),$(BIN_DIR)/$$(KERNEL_INITRAMFS_IMAGE) \
-@@ -479,9 +477,11 @@ define Device/Build/initramfs
-   $(BIN_DIR)/$$(KERNEL_INITRAMFS_IMAGE): $(KDIR)/tmp/$$(KERNEL_INITRAMFS_IMAGE)
- 	cp $$^ $$@
- 
-+  ifndef IB
-   $(KDIR)/tmp/$$(KERNEL_INITRAMFS_IMAGE): $(KDIR)/$$(KERNEL_INITRAMFS_NAME) $(CURDIR)/Makefile $$(KERNEL_DEPENDS) image_prepare
- 	@rm -f $$@
- 	$$(call concat_cmd,$$(KERNEL_INITRAMFS))
-+  endif
- 
-   $(call Device/Export,$(BUILD_DIR)/json_info_files/$$(KERNEL_INITRAMFS_IMAGE).json,$(1))
- 
-@@ -515,7 +515,6 @@ define Device/Build/initramfs
- 	SUPPORTED_DEVICES="$$(SUPPORTED_DEVICES)" \
- 	$(TOPDIR)/scripts/json_add_image_info.py $$@
- endef
--endif
- 
- define Device/Build/compile
-   $$(_COMPILE_TARGET): $(KDIR)/$(1)
+@@ -609,6 +609,7 @@ define Device/Build/image
+ 	IMAGE_TYPE=$(word 1,$(subst ., ,$(2))) \
+ 	IMAGE_FILESYSTEM="$(1)" \
+ 	IMAGE_PREFIX="$(IMAGE_PREFIX)" \
++	KERNEL_INITRAMFS_IMAGE="$(subst $(IMG_PREFIX_EXTRA),,$(KERNEL_INITRAMFS_IMAGE))" \
+ 	DEVICE_VENDOR="$(DEVICE_VENDOR)" \
+ 	DEVICE_MODEL="$(DEVICE_MODEL)" \
+ 	DEVICE_VARIANT="$(DEVICE_VARIANT)" \
+
+--- a/scripts/json_add_image_info.py
++++ b/scripts/json_add_image_info.py
+@@ -48,6 +48,7 @@ def get_titles():
+     "profiles": {
+         device_id: {
+             "image_prefix": getenv("IMAGE_PREFIX"),
++            "image_initramfs": getenv("KERNEL_INITRAMFS_IMAGE"),
+             "images": [
+                 {
+                     "type": getenv("IMAGE_TYPE"),
 
 --- a/scripts/json_overview_image_info.py
 +++ b/scripts/json_overview_image_info.py

+ 4 - 1
devices/mediatek_mt7981/.config

@@ -7,6 +7,7 @@ CONFIG_TARGET_DEVICE_mediatek_mt7981_DEVICE_glinet_gl-mt3000=y
 CONFIG_TARGET_DEVICE_mediatek_mt7981_DEVICE_glinet_gl-x3000=y
 CONFIG_TARGET_DEVICE_mediatek_mt7981_DEVICE_glinet_gl-xe3000=y
 CONFIG_TARGET_DEVICE_mediatek_mt7981_DEVICE_mt7981-360-t7-108M=y
+CONFIG_TARGET_DEVICE_mediatek_mt7981_DEVICE_xiaomi_wr30u-112M=y
 
 CONFIG_VERSION_DIST="OpenWrt"
 CONFIG_PACKAGE_kmod-nft-fullcone=n
@@ -26,10 +27,12 @@ CONFIG_PACKAGE_kmod-sched-ctinfo=n
 CONFIG_PACKAGE_kmod-sched-flower=n
 CONFIG_PACKAGE_kmod-sched-ipset=n
 CONFIG_PACKAGE_kmod-sched-mqprio=n
-CONFIG_PACKAGE_dockerd=n
 
 CONFIG_PACKAGE_kmod-i40e-vendor=n
 
+CONFIG_PACKAGE_kmod-mdio-netlink=n
+CONFIG_PACKAGE_kmod-jool-netfilter=n
+
 CONFIG_MTK_ACK_CTS_TIMEOUT_SUPPORT=y
 CONFIG_MTK_AIR_MONITOR=y
 CONFIG_MTK_AMPDU_CONF_SUPPORT=y

+ 9 - 1
devices/mediatek_mt7981/diy.sh

@@ -4,9 +4,17 @@ shopt -s extglob
 
 SHELL_FOLDER=$(dirname $(readlink -f "$0"))
 
+sed -i '/postgres=5432/d' feeds/packages.index
+sed -i '/postgres=5432/d' feeds/packages/net/gnunet/Makefile
+./scripts/feeds install -a
+
+sed -i "s/make-ext4fs missing-macros/make-ext4fs meson missing-macros/" tools/Makefile
+curl -sfL https://raw.githubusercontent.com/openwrt/openwrt/openwrt-22.03/include/meson.mk -o include/meson.mk
+svn co https://github.com/openwrt/openwrt/branches/openwrt-22.03/tools/meson tools/meson
+
 rm -rf package/feeds/kiddin9/rtl*
 
-rm -rf devices/common/patches/{glinet,fix.patch,iptables.patch,kernel-defaults.patch,targets.patch}
+rm -rf devices/common/patches/{fix.patch,iptables.patch,kernel-defaults.patch,targets.patch}
 
 sed -i "s/PKG_SOURCE_DATE:=.*/PKG_SOURCE_DATE:=2024-12-06/" package/network/config/netifd/Makefile
 

+ 19 - 37
devices/mediatek_mt7981/patches/fix.patch

@@ -1,42 +1,24 @@
 --- a/include/image.mk
 +++ b/include/image.mk
-@@ -371,7 +370,7 @@ define Device/Init
-   KERNEL_INITRAMFS_SUFFIX = $$(KERNEL_SUFFIX)
-   KERNEL_IMAGE = $$(KERNEL_PREFIX)$$(KERNEL_SUFFIX)
-   KERNEL_INITRAMFS_PREFIX = $$(IMAGE_PREFIX)-initramfs
--  KERNEL_INITRAMFS_IMAGE = $$(KERNEL_INITRAMFS_PREFIX)$$(KERNEL_INITRAMFS_SUFFIX)
-+  KERNEL_INITRAMFS_IMAGE = $(subst $(IMG_PREFIX_EXTRA),,$(IMG_PREFIX))-$(1)-initramfs$$(KERNEL_INITRAMFS_SUFFIX)
-   KERNEL_INITRAMFS_NAME = $$(KERNEL_NAME)-initramfs
-   KERNEL_INSTALL :=
-   KERNEL_NAME := vmlinux
-@@ -469,7 +468,6 @@ define Device/Check
-   endif
- endef
- 
--ifndef IB
- define Device/Build/initramfs
-   $(call Device/Export,$(KDIR)/tmp/$$(KERNEL_INITRAMFS_IMAGE),$(1))
-   $$(_TARGET): $$(if $$(KERNEL_INITRAMFS),$(BIN_DIR)/$$(KERNEL_INITRAMFS_IMAGE) \
-@@ -479,9 +477,11 @@ define Device/Build/initramfs
-   $(BIN_DIR)/$$(KERNEL_INITRAMFS_IMAGE): $(KDIR)/tmp/$$(KERNEL_INITRAMFS_IMAGE)
- 	cp $$^ $$@
- 
-+  ifndef IB
-   $(KDIR)/tmp/$$(KERNEL_INITRAMFS_IMAGE): $(KDIR)/$$(KERNEL_INITRAMFS_NAME) $(CURDIR)/Makefile $$(KERNEL_DEPENDS) image_prepare
- 	@rm -f $$@
- 	$$(call concat_cmd,$$(KERNEL_INITRAMFS))
-+  endif
- 
-   $(call Device/Export,$(BUILD_DIR)/json_info_files/$$(KERNEL_INITRAMFS_IMAGE).json,$(1))
- 
-@@ -515,7 +515,6 @@ define Device/Build/initramfs
- 	SUPPORTED_DEVICES="$$(SUPPORTED_DEVICES)" \
- 	$(TOPDIR)/scripts/json_add_image_info.py $$@
- endef
--endif
- 
- define Device/Build/compile
-   $$(_COMPILE_TARGET): $(KDIR)/$(1)
+@@ -609,6 +609,7 @@ define Device/Build/image
+ 	IMAGE_TYPE=$(word 1,$(subst ., ,$(2))) \
+ 	IMAGE_FILESYSTEM="$(1)" \
+ 	IMAGE_PREFIX="$(IMAGE_PREFIX)" \
++	KERNEL_INITRAMFS_IMAGE="$(subst $(IMG_PREFIX_EXTRA),,$(KERNEL_INITRAMFS_IMAGE))" \
+ 	DEVICE_VENDOR="$(DEVICE_VENDOR)" \
+ 	DEVICE_MODEL="$(DEVICE_MODEL)" \
+ 	DEVICE_VARIANT="$(DEVICE_VARIANT)" \
+
+--- a/scripts/json_add_image_info.py
++++ b/scripts/json_add_image_info.py
+@@ -48,6 +48,7 @@ def get_titles():
+     "profiles": {
+         device_id: {
+             "image_prefix": getenv("IMAGE_PREFIX"),
++            "image_initramfs": getenv("KERNEL_INITRAMFS_IMAGE"),
+             "images": [
+                 {
+                     "type": getenv("IMAGE_TYPE"),
 
 --- a/scripts/json_overview_image_info.py
 +++ b/scripts/json_overview_image_info.py

+ 520 - 0
devices/mediatek_mt7981/patches/wr30u.patch

@@ -0,0 +1,520 @@
+From 2d50fec513fa86b93942881186526e27d00dde0c Mon Sep 17 00:00:00 2001
+From: upnd <[email protected]>
+Date: Thu, 6 Apr 2023 16:22:04 +0800
+Subject: [PATCH] mediatek: add support for Xiaomi WR30U
+
+---
+ target/linux/mediatek/base-files/sbin/smp.sh  |   1 +
+ .../dts/mediatek/mt7981-xiaomi-wr30u-112M.dts |  64 +++++
+ .../mediatek/mt7981-xiaomi-wr30u-base.dtsi    | 223 ++++++++++++++++++
+ .../boot/dts/mediatek/mt7981-xiaomi-wr30u.dts |  79 +++++++
+ target/linux/mediatek/image/mt7981.mk         |  34 +++
+ .../mt7981/base-files/etc/board.d/01_leds     |   5 +
+ .../mt7981/base-files/etc/board.d/02_network  |   9 +
+ .../mt7981/base-files/lib/upgrade/platform.sh |   2 +
+ 8 files changed, 417 insertions(+)
+ create mode 100644 target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-xiaomi-wr30u-112M.dts
+ create mode 100644 target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-xiaomi-wr30u-base.dtsi
+ create mode 100644 target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-xiaomi-wr30u.dts
+
+diff --git a/target/linux/mediatek/base-files/sbin/smp.sh b/target/linux/mediatek/base-files/sbin/smp.sh
+index 5cdb7e5eb4d..8ccef249f50 100755
+--- a/target/linux/mediatek/base-files/sbin/smp.sh
++++ b/target/linux/mediatek/base-files/sbin/smp.sh
+@@ -713,6 +713,7 @@ setup_model()
+ 	*7986*)
+ 		MT7986_whnat $num_of_wifi
+ 		;;
++        *wr30u* |\
+ 	*mt3000* |\
+ 	*x3000* |\
+ 	*xe3000* |\
+diff --git a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-xiaomi-wr30u-112M.dts b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-xiaomi-wr30u-112M.dts
+new file mode 100644
+index 00000000000..9c73b3b0fc0
+--- /dev/null
++++ b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-xiaomi-wr30u-112M.dts
+@@ -0,0 +1,64 @@
++/dts-v1/;
++#include "mt7981-xiaomi-wr30u-base.dtsi"
++
++/ {
++        nmbm_spim_nand {
++                compatible = "generic,nmbm";
++                #address-cells = <1>;
++                #size-cells = <1>;
++
++                lower-mtd-device = <&spi_nand>;
++                forced-create;
++
++                partitions {
++                        compatible = "fixed-partitions";
++                        #address-cells = <0x01>;
++                        #size-cells = <0x01>;
++
++                        partition@0 {
++                                label = "BL2";
++                                reg = <0x00 0x100000>;
++                        };
++
++                        partition@100000 {
++                                label = "Nvram";
++                                reg = <0x100000 0x40000>;
++                        };
++
++                        partition@140000 {
++                                label = "Bdata";
++                                reg = <0x140000 0x40000>;
++                        };
++
++                        partition@180000 {
++                                label = "Factory";
++                                reg = <0x180000 0x200000>;
++                        };
++
++                        partition@380000 {
++                                label = "FIP";
++                                reg = <0x380000 0x200000>;
++                        };
++
++                        partition@580000 {
++                                label = "crash";
++                                reg = <0x580000 0x40000>;
++                        };
++
++                        partition@5c0000 {
++                                label = "crash_log";
++                                reg = <0x5c0000 0x40000>;
++                        };
++
++                        partition@600000 {
++                                label = "ubi";
++                                reg = <0x600000 0x7000000>;
++                        };
++
++                        partition@7600000 {
++                                label = "KF";
++                                reg = <0x7600000 0x40000>;
++                        };
++                };
++        };
++};
+diff --git a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-xiaomi-wr30u-base.dtsi b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-xiaomi-wr30u-base.dtsi
+new file mode 100644
+index 00000000000..5d13117a21f
+--- /dev/null
++++ b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-xiaomi-wr30u-base.dtsi
+@@ -0,0 +1,223 @@
++/dts-v1/;
++#include "mt7981.dtsi"
++
++/ {
++        model = "Xiaomi WR30U";
++        compatible = "xiaomi,wr30u", "mediatek,mt7981";
++
++        chosen {
++                bootargs = "console=ttyS0,115200n1 loglevel=8 earlycon=uart8250,mmio32,0x11002000";
++        };
++
++        memory {
++                reg = <0 0x40000000 0 0x10000000>;
++        };
++
++        leds {
++                compatible = "gpio-leds";
++
++                led_sys_blue {
++                        label = "led_blue";
++                        gpios = <&pio 9 GPIO_ACTIVE_LOW>;
++                        default-state = "off";
++                };
++
++                led_sys_yellow {
++                        label = "led_yellow";
++                        gpios = <&pio 10 GPIO_ACTIVE_LOW>;
++                        default-state = "on";
++                };
++
++                led_net_blue {
++                        label = "net_blue";
++                        gpios = <&pio 11 GPIO_ACTIVE_LOW>;
++                        default-state = "off";
++                };
++
++                led_net_yellow {
++                        label = "net_yellow";
++                        gpios = <&pio 12 GPIO_ACTIVE_LOW>;
++                        default-state = "off";
++                };
++        };
++
++        gpio-keys {
++                compatible = "gpio-keys";
++                        reset {
++                                label = "reset";
++                                linux,code = <KEY_RESTART>;
++                                gpios = <&pio 1 GPIO_ACTIVE_LOW>;
++                        };
++
++                        mesh {
++                                label = "mesh";
++                                linux,code = <BTN_9>;
++                                gpios = <&pio 0 GPIO_ACTIVE_LOW>;
++                        };
++        };
++
++        gsw: gsw@0 {
++                compatible = "mediatek,mt753x";
++                mediatek,ethsys = <&ethsys>;
++                #address-cells = <1>;
++                #size-cells = <0>;
++        };
++};
++
++&uart0 {
++        status = "okay";
++};
++
++&watchdog {
++        status = "okay";
++};
++
++&eth {
++        status = "okay";
++
++        gmac0: mac@0 {
++                compatible = "mediatek,eth-mac";
++                reg = <0>;
++                phy-mode = "2500base-x";
++
++                fixed-link {
++                        speed = <2500>;
++                        full-duplex;
++                        pause;
++                };
++        };
++
++        gmac1: mac@1 {
++                compatible = "mediatek,eth-mac";
++                reg = <1>;
++                phy-mode = "2500base-x";
++
++                fixed-link {
++                        speed = <2500>;
++                        full-duplex;
++                        pause;
++                };
++        };
++
++        mdio: mdio-bus {
++                #address-cells = <1>;
++                #size-cells = <0>;
++        };
++};
++
++&gsw {
++        mediatek,mdio = <&mdio>;
++        mediatek,mdio_master_pinmux = <0>;
++        reset-gpios = <&pio 39 0>;
++        interrupt-parent = <&pio>;
++        interrupts = <38 IRQ_TYPE_LEVEL_HIGH>;
++        status = "okay";
++
++        port5: port@5 {
++                compatible = "mediatek,mt753x-port";
++                reg = <5>;
++                phy-mode = "sgmii";
++
++                fixed-link {
++                        speed = <2500>;
++                        full-duplex;
++                };
++        };
++
++        port6: port@6 {
++                compatible = "mediatek,mt753x-port";
++                mediatek,ssc-on;
++                reg = <6>;
++                phy-mode = "sgmii";
++
++                fixed-link {
++                        speed = <2500>;
++                        full-duplex;
++                };
++        };
++};
++
++&hnat {
++        mtketh-wan = "eth1";
++        mtketh-lan = "eth0";
++        mtketh-max-gmac = <2>;
++        status = "okay";
++};
++
++&spi0 {
++        pinctrl-names = "default";
++        pinctrl-0 = <&spi0_flash_pins>;
++        status = "okay";
++
++        spi_nand: 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>; /* 'SPINAND' */
++                spi-cal-addrlen = <5>;
++                spi-cal-addr = /bits/ 32 <0x0 0x0 0x0 0x0 0x0>;
++        };
++};
++
++&pio {
++        pwm0_pin: pwm0-pin-g0 {
++                mux {
++                        function = "pwm";
++                        groups = "pwm0_0";
++                };
++        };
++
++        pwm1_pin: pwm1-pin-g0 {
++                mux {
++                        function = "pwm";
++                        groups = "pwm1_0";
++                };
++        };
++
++        pwm2_pin: pwm2-pin {
++                mux {
++                        function = "pwm";
++                        groups = "pwm2";
++                };
++        };
++
++        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_8mA>;
++                        bias-pull-up = <MTK_PUPD_SET_R1R0_11>;
++                };
++
++                conf-pd {
++                        pins = "SPI0_CLK", "SPI0_MOSI", "SPI0_MISO";
++                        drive-strength = <MTK_DRIVE_8mA>;
++                        bias-pull-down = <MTK_PUPD_SET_R1R0_11>;
++                };
++        };
++
++        uart1_pins: uart1-pins-g1 {
++                mux {
++                        function = "uart";
++                        groups = "uart1_1";
++                };
++        };
++
++        uart2_pins: uart2-pins-g1 {
++                mux {
++                        function = "uart";
++                        groups = "uart2_1";
++                };
++        };
++};
+diff --git a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-xiaomi-wr30u.dts b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-xiaomi-wr30u.dts
+new file mode 100644
+index 00000000000..78271f10aea
+--- /dev/null
++++ b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-xiaomi-wr30u.dts
+@@ -0,0 +1,79 @@
++/dts-v1/;
++#include "mt7981-xiaomi-wr30u-base.dtsi"
++
++/ {
++        nmbm_spim_nand {
++                compatible = "generic,nmbm";
++                #address-cells = <1>;
++                #size-cells = <1>;
++
++                lower-mtd-device = <&spi_nand>;
++                forced-create;
++
++                partitions {
++                        compatible = "fixed-partitions";
++                        #address-cells = <0x01>;
++                        #size-cells = <0x01>;
++
++                        partition@0 {
++                                label = "BL2";
++                                reg = <0x00 0x100000>;
++                        };
++
++                        partition@100000 {
++                                label = "Nvram";
++                                reg = <0x100000 0x40000>;
++                        };
++
++                        partition@140000 {
++                                label = "Bdata";
++                                reg = <0x140000 0x40000>;
++                        };
++
++                        partition@180000 {
++                                label = "Factory";
++                                reg = <0x180000 0x200000>;
++                        };
++
++                        partition@380000 {
++                                label = "FIP";
++                                reg = <0x380000 0x200000>;
++                        };
++
++                        partition@580000 {
++                                label = "crash";
++                                reg = <0x580000 0x40000>;
++                        };
++
++                        partition@5c0000 {
++                                label = "crash_log";
++                                reg = <0x5c0000 0x40000>;
++                        };
++
++                        partition@600000 {
++                                label = "ubi";
++                                reg = <0x600000 0x2200000>;
++                        };
++
++                        partition@2800000 {
++                                label = "ubi1";
++                                reg = <0x2800000 0x2200000>;
++                        };
++
++                        partition@4a00000 {
++                                label = "overlay";
++                                reg = <0x4a00000 0x2000000>;
++                        };
++
++                        partition@6a00000 {
++                                label = "data";
++                                reg = <0x6a00000 0xc00000>;
++                        };
++
++                        partition@7600000 {
++                                label = "KF";
++                                reg = <0x7600000 0x40000>;
++                        };
++                };
++        };
++};
+diff --git a/target/linux/mediatek/image/mt7981.mk b/target/linux/mediatek/image/mt7981.mk
+index af070ebc017..86c05aec8c6 100644
+--- a/target/linux/mediatek/image/mt7981.mk
++++ b/target/linux/mediatek/image/mt7981.mk
+@@ -255,3 +255,37 @@ define Device/glinet_gl-mt2500
+   IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
+ endef
+ TARGET_DEVICES += glinet_gl-mt2500
++
++define Device/xiaomi_wr30u
++  DEVICE_VENDOR := Xiaomi
++  DEVICE_MODEL := WR30U
++  DEVICE_DTS := mt7981-xiaomi-wr30u
++  DEVICE_DTS_DIR := $(DTS_DIR)/mediatek
++  SUPPORTED_DEVICES := xiaomi,wr30u
++  UBINIZE_OPTS := -E 5
++  BLOCKSIZE := 128k
++  PAGESIZE := 2048
++  IMAGE_SIZE := 34816k
++  KERNEL_IN_UBI := 1
++  IMAGES += factory.bin
++  IMAGE/factory.bin := append-ubi | check-size $$$$(IMAGE_SIZE)
++  IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
++endef
++TARGET_DEVICES += xiaomi_wr30u
++
++define Device/xiaomi_wr30u-112M
++  DEVICE_VENDOR := Xiaomi
++  DEVICE_MODEL := WR30U (with 112M ubi)
++  DEVICE_DTS := mt7981-xiaomi-wr30u-112M
++  DEVICE_DTS_DIR := $(DTS_DIR)/mediatek
++  SUPPORTED_DEVICES := xiaomi,wr30u
++  UBINIZE_OPTS := -E 5
++  BLOCKSIZE := 128k
++  PAGESIZE := 2048
++  IMAGE_SIZE := 114688k
++  KERNEL_IN_UBI := 1
++  IMAGES += factory.bin
++  IMAGE/factory.bin := append-ubi | check-size $$$$(IMAGE_SIZE)
++  IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
++endef
++TARGET_DEVICES += xiaomi_wr30u-112M
+diff --git a/target/linux/mediatek/mt7981/base-files/etc/board.d/01_leds b/target/linux/mediatek/mt7981/base-files/etc/board.d/01_leds
+index e2bc027cbc6..7190778e545 100755
+--- a/target/linux/mediatek/mt7981/base-files/etc/board.d/01_leds
++++ b/target/linux/mediatek/mt7981/base-files/etc/board.d/01_leds
+@@ -12,6 +12,11 @@ case "$(board_name)" in
+ 	ucidef_set_led_default "green" "GREEN" "360t7:green" "1"
+ 	ucidef_set_led_default "red" "RED" "360t7:red" "0"
+ 	;;
++*wr30u*)
++        ucidef_set_led_default "sys_blue" "BLUE" "led_blue" "1"
++        ucidef_set_led_default "sys_yellow" "YELLOW" "led_yellow" "0"
++        ucidef_set_led_netdev "net_blue" "NET_BLUE" "net_blue" "eth1"
++	;;
+ esac
+ board_config_flush
+ 
+diff --git a/target/linux/mediatek/mt7981/base-files/etc/board.d/02_network b/target/linux/mediatek/mt7981/base-files/etc/board.d/02_network
+index a27b30b1183..f3b5c848963 100755
+--- a/target/linux/mediatek/mt7981/base-files/etc/board.d/02_network
++++ b/target/linux/mediatek/mt7981/base-files/etc/board.d/02_network
+@@ -33,6 +33,11 @@ mediatek_setup_interfaces()
+ 	*mt2500*)
+ 		ucidef_set_interfaces_lan_wan "eth1" "eth0"
+ 		;;
++        *wr30u*)
++                ucidef_set_interfaces_lan_wan "eth0" "eth1"
++                ucidef_add_switch "switch0" \
++                        "1:lan" "2:lan" "3:lan" "0:wan" "6u@eth0" "5u@eth1"
++                ;;
+ 	*)
+ 		ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4" eth1
+ 		;;
+@@ -86,6 +91,10 @@ mediatek_setup_macs()
+ 	wan_mac=$(mtd_get_mac_binary $part_name $wan_mac_offset)
+ 
+ 	case $board in
++        *wr30u*)
++                wan_mac=$(dd if=/dev/mtd3ro bs=1 count=256 2>/dev/null |grep "^ethaddr_wan=" | awk -F '=' '{print $2}')
++                lan_mac=$(dd if=/dev/mtd3ro bs=1 count=256 2>/dev/null |grep "^ethaddr=" | awk -F '=' '{print $2}')
++                ;;
+ 	*mt3000*)
+ 		wan_mac=$(mtd_get_mac_binary $part_name 0x0a)
+ 		lan_mac=$(macaddr_add "$wan_mac" 1)
+diff --git a/target/linux/mediatek/mt7981/base-files/lib/upgrade/platform.sh b/target/linux/mediatek/mt7981/base-files/lib/upgrade/platform.sh
+index 2babdc0b75a..b34d0f9e000 100644
+--- a/target/linux/mediatek/mt7981/base-files/lib/upgrade/platform.sh
++++ b/target/linux/mediatek/mt7981/base-files/lib/upgrade/platform.sh
+@@ -4,6 +4,7 @@ platform_do_upgrade() {
+ 	local board=$(board_name)
+ 
+ 	case "$board" in
++        *wr30u* |\
+ 	*mt3000* |\
+ 	*x3000* |\
+ 	*xe3000* |\
+@@ -30,6 +31,7 @@ platform_check_image() {
+ 	[ "$#" -gt 1 ] && return 1
+ 
+ 	case "$board" in
++        *wr30u* |\
+ 	*mt3000* |\
+ 	*x3000* |\
+ 	*xe3000* |\

+ 4 - 1
devices/mediatek_mt7986/.config

@@ -5,6 +5,7 @@ CONFIG_TARGET_MULTI_PROFILE=y
 CONFIG_TARGET_DEVICE_mediatek_mt7986_DEVICE_xiaomi_redmi-router-ax6000=y
 CONFIG_TARGET_DEVICE_mediatek_mt7986_DEVICE_xiaomi_redmi-router-ax6000-stock=y
 
+
 CONFIG_VERSION_DIST="OpenWrt"
 CONFIG_PACKAGE_kmod-nft-fullcone=n
 CONFIG_PACKAGE_kmod-ax25=n
@@ -23,10 +24,12 @@ CONFIG_PACKAGE_kmod-sched-ctinfo=n
 CONFIG_PACKAGE_kmod-sched-flower=n
 CONFIG_PACKAGE_kmod-sched-ipset=n
 CONFIG_PACKAGE_kmod-sched-mqprio=n
-CONFIG_PACKAGE_dockerd=n
 
 CONFIG_PACKAGE_kmod-i40e-vendor=n
 
+CONFIG_PACKAGE_kmod-mdio-netlink=n
+CONFIG_PACKAGE_kmod-jool-netfilter=n
+
 CONFIG_MTK_ACK_CTS_TIMEOUT_SUPPORT=y
 CONFIG_MTK_AIR_MONITOR=y
 CONFIG_MTK_AMPDU_CONF_SUPPORT=y

+ 8 - 0
devices/mediatek_mt7986/diy.sh

@@ -4,6 +4,14 @@ shopt -s extglob
 
 SHELL_FOLDER=$(dirname $(readlink -f "$0"))
 
+sed -i '/postgres=5432/d' feeds/packages.index
+sed -i '/postgres=5432/d' feeds/packages/net/gnunet/Makefile
+./scripts/feeds install -a
+
+sed -i "s/make-ext4fs missing-macros/make-ext4fs meson missing-macros/" tools/Makefile
+curl -sfL https://raw.githubusercontent.com/openwrt/openwrt/openwrt-22.03/include/meson.mk -o include/meson.mk
+svn co https://github.com/openwrt/openwrt/branches/openwrt-22.03/tools/meson tools/meson
+
 rm -rf package/feeds/kiddin9/rtl*
 
 sed -i "s/PKG_SOURCE_DATE:=.*/PKG_SOURCE_DATE:=2024-12-06/" package/network/config/netifd/Makefile

+ 19 - 37
devices/mediatek_mt7986/patches/fix.patch

@@ -1,42 +1,24 @@
 --- a/include/image.mk
 +++ b/include/image.mk
-@@ -371,7 +370,7 @@ define Device/Init
-   KERNEL_INITRAMFS_SUFFIX = $$(KERNEL_SUFFIX)
-   KERNEL_IMAGE = $$(KERNEL_PREFIX)$$(KERNEL_SUFFIX)
-   KERNEL_INITRAMFS_PREFIX = $$(IMAGE_PREFIX)-initramfs
--  KERNEL_INITRAMFS_IMAGE = $$(KERNEL_INITRAMFS_PREFIX)$$(KERNEL_INITRAMFS_SUFFIX)
-+  KERNEL_INITRAMFS_IMAGE = $(subst $(IMG_PREFIX_EXTRA),,$(IMG_PREFIX))-$(1)-initramfs$$(KERNEL_INITRAMFS_SUFFIX)
-   KERNEL_INITRAMFS_NAME = $$(KERNEL_NAME)-initramfs
-   KERNEL_INSTALL :=
-   KERNEL_NAME := vmlinux
-@@ -469,7 +468,6 @@ define Device/Check
-   endif
- endef
- 
--ifndef IB
- define Device/Build/initramfs
-   $(call Device/Export,$(KDIR)/tmp/$$(KERNEL_INITRAMFS_IMAGE),$(1))
-   $$(_TARGET): $$(if $$(KERNEL_INITRAMFS),$(BIN_DIR)/$$(KERNEL_INITRAMFS_IMAGE) \
-@@ -479,9 +477,11 @@ define Device/Build/initramfs
-   $(BIN_DIR)/$$(KERNEL_INITRAMFS_IMAGE): $(KDIR)/tmp/$$(KERNEL_INITRAMFS_IMAGE)
- 	cp $$^ $$@
- 
-+  ifndef IB
-   $(KDIR)/tmp/$$(KERNEL_INITRAMFS_IMAGE): $(KDIR)/$$(KERNEL_INITRAMFS_NAME) $(CURDIR)/Makefile $$(KERNEL_DEPENDS) image_prepare
- 	@rm -f $$@
- 	$$(call concat_cmd,$$(KERNEL_INITRAMFS))
-+  endif
- 
-   $(call Device/Export,$(BUILD_DIR)/json_info_files/$$(KERNEL_INITRAMFS_IMAGE).json,$(1))
- 
-@@ -515,7 +515,6 @@ define Device/Build/initramfs
- 	SUPPORTED_DEVICES="$$(SUPPORTED_DEVICES)" \
- 	$(TOPDIR)/scripts/json_add_image_info.py $$@
- endef
--endif
- 
- define Device/Build/compile
-   $$(_COMPILE_TARGET): $(KDIR)/$(1)
+@@ -609,6 +609,7 @@ define Device/Build/image
+ 	IMAGE_TYPE=$(word 1,$(subst ., ,$(2))) \
+ 	IMAGE_FILESYSTEM="$(1)" \
+ 	IMAGE_PREFIX="$(IMAGE_PREFIX)" \
++	KERNEL_INITRAMFS_IMAGE="$(subst $(IMG_PREFIX_EXTRA),,$(KERNEL_INITRAMFS_IMAGE))" \
+ 	DEVICE_VENDOR="$(DEVICE_VENDOR)" \
+ 	DEVICE_MODEL="$(DEVICE_MODEL)" \
+ 	DEVICE_VARIANT="$(DEVICE_VARIANT)" \
+
+--- a/scripts/json_add_image_info.py
++++ b/scripts/json_add_image_info.py
+@@ -48,6 +48,7 @@ def get_titles():
+     "profiles": {
+         device_id: {
+             "image_prefix": getenv("IMAGE_PREFIX"),
++            "image_initramfs": getenv("KERNEL_INITRAMFS_IMAGE"),
+             "images": [
+                 {
+                     "type": getenv("IMAGE_TYPE"),
 
 --- a/scripts/json_overview_image_info.py
 +++ b/scripts/json_overview_image_info.py

+ 1 - 1
devices/rockchip_armv8/diy.sh

@@ -11,7 +11,7 @@ rm -rf target/linux/rockchip/!(Makefile|patches-5.15)
 svn co https://github.com/coolsnowwolf/lede/trunk/target/linux/rockchip target/linux/rockchip
 rm -rf target/linux/rockchip/{.svn,patches-5.15/.svn}
 svn co https://github.com/coolsnowwolf/lede/trunk/target/linux/rockchip/patches-5.15 target/linux/rockchip/patches-5.15
-rm -rf target/linux/rockchip/patches-5.15/{002-net-usb*,003-dt-bindings*,006-rockchip-rk3399*}
+rm -rf target/linux/rockchip/patches-5.15/{002-net-usb*,204-rockchip-rk3328*,003-dt-bindings*,006-rockchip-rk3399*,072-v6.2-net-phy*,073-v6.2-net-phy*,074-v6.3-net-phy*,075-v6.3-net-phy*,076-v6.3-net-phy*,077-v6.3-net-phy*,078-v6.3-net-phy*,079-v6.3-net-phy*}
 
 curl -sfL https://raw.githubusercontent.com/coolsnowwolf/lede/master/package/kernel/linux/modules/video.mk -o package/kernel/linux/modules/video.mk