kiddin9 2 ani în urmă
părinte
comite
b9be49cb85

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

@@ -114,7 +114,7 @@ jobs:
       run: |
         ( sudo -E apt-get -qq update
         sudo -E apt-get -qq install build-essential clang flex g++ gawk gcc-multilib gettext \
-        git libncurses5-dev libssl-dev python3-distutils rsync unzip zlib1g-dev swig libpython3-dev aria2 jq subversion qemu-utils ccache rename libelf-dev
+        git libncurses5-dev libssl-dev python3-distutils rsync unzip zlib1g-dev swig libpython3-dev aria2 jq subversion qemu-utils ccache rename libelf-dev device-tree-compiler
         sudo -E apt-get -qq purge azure-cli ghc* zulu* hhvm llvm* firefox powershell openjdk* dotnet* google* mysql* php* android*
         sudo rm -rf /etc/apt/sources.list.d/* /usr/share/dotnet /usr/local/lib/android /opt/ghc
         sudo -E apt-get -qq autoremove --purge
@@ -130,6 +130,9 @@ jobs:
         echo "date2=$(date +'%m/%d %Y')" >> $GITHUB_ENV
         VERSION="$(echo "${{github.event.action}}" | grep -Eo " [0-9.]+" | sed -e 's/ //')" || true
         [ "$VERSION" ] && echo "VERSION=$VERSION" >> $GITHUB_ENV || echo "VERSION=$(date +'%m.%d')" >> $GITHUB_ENV
+        if [[ ${{ contains(github.event.action, 'nocache') }} || ! -f openwrt/staging_dir/*${{ env.MTARGET }}*/bin ]]; then
+           echo "NOCACHE=true" >> $GITHUB_ENV
+        fi
 
     - name: Clone source code
       working-directory: /workdir
@@ -208,7 +211,7 @@ jobs:
       uses: klever1988/cachewrtbuild@main
       with:
         ccache: 'true'
-        clean: ${{ contains(github.event.action, 'nocache') }}
+        clean: ${{ env.NOCACHE }}
         prefix: ${{ github.workspace }}/openwrt
     
     - name: Check space usage

+ 1 - 1
devices/bcm27xx_bcm2708/diy.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-sed -i 's/DEFAULT_PACKAGES +=/DEFAULT_PACKAGES += fdisk lsblk kmod-usb-net-asix-ax88179 kmod-usb-net-rtl8152/' target/linux/bcm27xx/Makefile
+sed -i 's/DEFAULT_PACKAGES +=/DEFAULT_PACKAGES += fdisk lsblk kmod-usb-net-asix-ax88179 kmod-usb-net-rtl8152-vendor/' target/linux/bcm27xx/Makefile
 
 sed -i 's/factory.img.gz //' target/linux/bcm27xx/image/Makefile
 

+ 1 - 1
devices/bcm27xx_bcm2709/diy.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-sed -i 's/DEFAULT_PACKAGES +=/DEFAULT_PACKAGES += fdisk lsblk kmod-usb-net-asix-ax88179 kmod-usb-net-rtl8152/' target/linux/bcm27xx/Makefile
+sed -i 's/DEFAULT_PACKAGES +=/DEFAULT_PACKAGES += fdisk lsblk kmod-usb-net-asix-ax88179 kmod-usb-net-rtl8152-vendor/' target/linux/bcm27xx/Makefile
 
 sed -i 's/factory.img.gz //' target/linux/bcm27xx/image/Makefile
 

+ 1 - 1
devices/bcm27xx_bcm2710/diy.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-sed -i 's/DEFAULT_PACKAGES +=/DEFAULT_PACKAGES += fdisk lsblk kmod-usb-net-asix-ax88179 kmod-usb-net-rtl8152/' target/linux/bcm27xx/Makefile
+sed -i 's/DEFAULT_PACKAGES +=/DEFAULT_PACKAGES += fdisk lsblk kmod-usb-net-asix-ax88179 kmod-usb-net-rtl8152-vendor/' target/linux/bcm27xx/Makefile
 
 sed -i 's/factory.img.gz //' target/linux/bcm27xx/image/Makefile
 

+ 1 - 1
devices/bcm27xx_bcm2711/diy.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-sed -i 's/DEFAULT_PACKAGES +=/DEFAULT_PACKAGES += fdisk lsblk kmod-usb-net-asix-ax88179 kmod-usb-net-rtl8152/' target/linux/bcm27xx/Makefile
+sed -i 's/DEFAULT_PACKAGES +=/DEFAULT_PACKAGES += fdisk lsblk kmod-usb-net-asix-ax88179 kmod-usb-net-rtl8152-vendor/' target/linux/bcm27xx/Makefile
 
 sed -i 's/factory.img.gz //' target/linux/bcm27xx/image/Makefile
 

+ 1 - 1
devices/bcm53xx/patches/k3.patch

@@ -282,7 +282,7 @@
    DEVICE_VENDOR := PHICOMM
    DEVICE_MODEL := K3
 -  DEVICE_PACKAGES := $(BRCMFMAC_4366C0) $(USB3_PACKAGES)
-+  DEVICE_PACKAGES := $(IEEE8021X) kmod-brcmfmac k3wifi $(USB3_PACKAGES) k3screenctrl
++  DEVICE_PACKAGES := $(IEEE8021X) kmod-brcmfmac k3wifi $(USB3_PACKAGES) k3screenctrl wireless-tools
    IMAGES := trx
  endef
  TARGET_DEVICES += phicomm_k3

+ 1 - 0
devices/common/.config

@@ -81,6 +81,7 @@ CONFIG_PACKAGE_ca-bundle=y
 
 CONFIG_PACKAGE_dockerd=m
 
+CONFIG_PACKAGE_kmod-usb-net-rtl8152=n
 CONFIG_PACKAGE_kmod-hermes-pci=n
 CONFIG_PACKAGE_kmod-hermes-pcmcia=n
 CONFIG_PACKAGE_kmod-hermes-plx=n

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

@@ -16,7 +16,6 @@ kernel_v="$(cat include/kernel-5.15 | grep LINUX_KERNEL_HASH-* | cut -f 2 -d - |
 echo "KERNEL=${kernel_v}" >> $GITHUB_ENV || true
 sed -i "s?targets/%S/.*'?targets/%S/$kernel_v'?" include/feeds.mk
 
-sh -c "curl -sfL https://github.com/coolsnowwolf/lede/commit/06fcdca1bb9c6de6ccd0450a042349892b372220.patch | patch -d './' -p1 --forward"
 svn export --force https://github.com/openwrt/packages/trunk/kernel feeds/packages/kernel
 svn export --force  https://github.com/openwrt/packages/trunk/net/xtables-addons feeds/packages/net/xtables-addons
 

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

@@ -39,7 +39,7 @@
  	echo
  	rm -rf $(TARGET_DIR) $(TARGET_DIR_ORIG)
  	mkdir -p $(TARGET_DIR) $(BIN_DIR) $(TMP_DIR) $(DL_DIR)
-+	if [[ "$(USER_PROFILE)" =~ (DEVICE_phicomm_k2p|DEVICE_asus_rt-n56u-b1|DEVICE_thunder_timecloud|DEVICE_youku_yk-l2|DEVICE_youhua_wr1200js|DEVICE_oraybox_x3a|DEVICE_netgear_wndr3700-v5|DEVICE_xiaomi_mi-router-4a-gigabit|DEVICE_xiaomi_mi-router-3g-v2|DEVICE_asus_rt-ac1200|DEVICE_asus_rt-ac1200-v2|DEVICE_glinet_gl-mt300n-v2|DEVICE_glinet_microuter-n300|DEVICE_hiwifi_hc5661a|DEVICE_hiwifi_hc5761a|DEVICE_hiwifi_hc5861b|DEVICE_netgear_r6120|DEVICE_xiaomi_miwifi-nano|DEVICE_jcg_y2|DEVICE_glinet_gl-mt300a|DEVICE_glinet_gl-mt750|DEVICE_hiwifi_hc5661|DEVICE_hiwifi_hc5761|DEVICE_hiwifi_hc5861|DEVICE_lenovo_newifi-y1|DEVICE_lenovo_newifi-y1s|DEVICE_xiaomi_miwifi-mini|DEVICE_youku_yk-l1c) ]]; then \
++	if [[ "$(USER_PROFILE)" =~ (DEVICE_phicomm_k2p|DEVICE_asus_rt-n56u-b1|DEVICE_thunder_timecloud|DEVICE_youku_yk-l2|DEVICE_youhua_wr1200js|DEVICE_oraybox_x3a|DEVICE_netgear_wndr3700-v5|DEVICE_xiaomi_mi-router-4a-gigabit|DEVICE_xiaomi_mi-router-3g-v2|DEVICE_asus_rt-ac1200|DEVICE_asus_rt-ac1200-v2|DEVICE_glinet_gl-mt300n-v2|DEVICE_glinet_microuter-n300|DEVICE_hiwifi_hc5661a|DEVICE_hiwifi_hc5761a|DEVICE_hiwifi_hc5861b|DEVICE_netgear_r6120|DEVICE_xiaomi_miwifi-nano|DEVICE_jcg_y2|DEVICE_glinet_gl-mt300a|DEVICE_glinet_gl-mt750|DEVICE_hiwifi_hc5661|DEVICE_hiwifi_hc5761|DEVICE_hiwifi_hc5861|DEVICE_lenovo_newifi-y1|DEVICE_lenovo_newifi-y1s|DEVICE_xiaomi_miwifi-mini|DEVICE_youku_yk-l1c|DEVICE_jdcloud_luban) ]]; then \
 +		echo "src/gz openwrt_smflash https://op.supes.top/packages/mipsel_24kc/small_flash" >>$(TOPDIR)/repositories.conf; \
 +	else \
 +		sed -i "/smflash/d" $(TOPDIR)/repositories.conf; \
@@ -75,7 +75,7 @@
  		) \
  	)
  	$(call prepare_rootfs,$(TARGET_DIR),$(USER_FILES),$(DISABLED_SERVICES))
-+	if [[ "$(USER_PROFILE)" =~ (DEVICE_phicomm_k2p|DEVICE_asus_rt-n56u-b1|DEVICE_thunder_timecloud|DEVICE_youku_yk-l2|DEVICE_youhua_wr1200js|DEVICE_oraybox_x3a|DEVICE_netgear_wndr3700-v5|DEVICE_xiaomi_mi-router-4a-gigabit|DEVICE_xiaomi_mi-router-3g-v2|DEVICE_asus_rt-ac1200|DEVICE_asus_rt-ac1200-v2|DEVICE_glinet_gl-mt300n-v2|DEVICE_glinet_microuter-n300|DEVICE_hiwifi_hc5661a|DEVICE_hiwifi_hc5761a|DEVICE_hiwifi_hc5861b|DEVICE_netgear_r6120|DEVICE_xiaomi_miwifi-nano|DEVICE_jcg_y2|DEVICE_glinet_gl-mt300a|DEVICE_glinet_gl-mt750|DEVICE_hiwifi_hc5661|DEVICE_hiwifi_hc5761|DEVICE_hiwifi_hc5861|DEVICE_lenovo_newifi-y1|DEVICE_lenovo_newifi-y1s|DEVICE_xiaomi_miwifi-mini|DEVICE_youku_yk-l1c) ]]; then \
++	if [[ "$(USER_PROFILE)" =~ (DEVICE_phicomm_k2p|DEVICE_asus_rt-n56u-b1|DEVICE_thunder_timecloud|DEVICE_youku_yk-l2|DEVICE_youhua_wr1200js|DEVICE_oraybox_x3a|DEVICE_netgear_wndr3700-v5|DEVICE_xiaomi_mi-router-4a-gigabit|DEVICE_xiaomi_mi-router-3g-v2|DEVICE_asus_rt-ac1200|DEVICE_asus_rt-ac1200-v2|DEVICE_glinet_gl-mt300n-v2|DEVICE_glinet_microuter-n300|DEVICE_hiwifi_hc5661a|DEVICE_hiwifi_hc5761a|DEVICE_hiwifi_hc5861b|DEVICE_netgear_r6120|DEVICE_xiaomi_miwifi-nano|DEVICE_jcg_y2|DEVICE_glinet_gl-mt300a|DEVICE_glinet_gl-mt750|DEVICE_hiwifi_hc5661|DEVICE_hiwifi_hc5761|DEVICE_hiwifi_hc5861|DEVICE_lenovo_newifi-y1|DEVICE_lenovo_newifi-y1s|DEVICE_xiaomi_miwifi-mini|DEVICE_youku_yk-l1c|DEVICE_jdcloud_luban) ]]; then \
 +		echo "src/gz openwrt_smflash https://op.supes.top/packages/mipsel_24kc/small_flash" >>$(BUILD_DIR)/root-ramips/etc/opkg/distfeeds.conf; \
 +	fi
  

+ 5 - 3
devices/ipq40xx_generic/.config

@@ -8,11 +8,13 @@ CONFIG_TARGET_DEVICE_ipq40xx_generic_DEVICE_p2w_r619ac-128m=y
 CONFIG_TARGET_DEVICE_ipq40xx_generic_DEVICE_p2w_r619ac-64m=y
 CONFIG_TARGET_DEVICE_ipq40xx_generic_DEVICE_zte_mf286d=y
 CONFIG_TARGET_DEVICE_ipq40xx_generic_DEVICE_glinet_gl-b1300=y
-CONFIG_TARGET_DEVICE_ipq40xx_generic_DEVICE_linksys_ea6350v3=y
+CONFIG_TARGET_DEVICE_ipq40xx_generic_DEVICE_glinet_gl-a1300=y
+#CONFIG_TARGET_DEVICE_ipq40xx_generic_DEVICE_linksys_ea6350v3=y
 CONFIG_TARGET_DEVICE_ipq40xx_generic_DEVICE_glinet_gl-ap1300=y
-CONFIG_TARGET_DEVICE_ipq40xx_generic_DEVICE_linksys_ea8300=y
-CONFIG_TARGET_DEVICE_ipq40xx_generic_DEVICE_linksys_mr8300=y
+#CONFIG_TARGET_DEVICE_ipq40xx_generic_DEVICE_linksys_ea8300=y
+#CONFIG_TARGET_DEVICE_ipq40xx_generic_DEVICE_linksys_mr8300=y
 CONFIG_TARGET_DEVICE_ipq40xx_generic_DEVICE_mobipromo_cm520-79f=y
+CONFIG_TARGET_DEVICE_ipq40xx_generic_DEVICE_zte_mf289f=y
 
 CONFIG_PACKAGE_luci-ssl=y # uhttpd服务
 

+ 6 - 0
devices/ipq40xx_generic/diy.sh

@@ -4,5 +4,11 @@ shopt -s extglob
 
 SHELL_FOLDER=$(dirname $(readlink -f "$0"))
 
+bash $SHELL_FOLDER/../common/kernel_5.15.sh
+
+svn export --force https://github.com/openwrt/openwrt/trunk/package/firmware/ipq-wifi package/firmware/ipq-wifi
+
+#sh -c "curl -sfL https://patch-diff.githubusercontent.com/raw/openwrt/openwrt/pull/10778.patch | git apply -p1"
+
 
 

+ 3 - 2
devices/mediatek_filogic/diy.sh

@@ -5,6 +5,7 @@ shopt -s extglob
 SHELL_FOLDER=$(dirname $(readlink -f "$0"))
 bash $SHELL_FOLDER/../common/kernel_5.15.sh
 
-curl -sfL https://github.com/coolsnowwolf/lede/raw/master/target/linux/mediatek/dts/mt7986a-xiaomi-redmi-router-ax6000.dts -o target/linux/mediatek/dts/mt7986a-xiaomi-redmi-router-ax6000.dts
+sh -c "curl -sfL https://patch-diff.githubusercontent.com/raw/openwrt/openwrt/pull/11115.patch | patch -d './' -p1 --forward"
 
-sh -c "curl -sfL https://github.com/openwrt/openwrt/commit/8686a9a085d4313a0107a3e4378b3762c8293570.patch | patch -d './' -p1 --forward"
+rm -rf tools/mkimage
+svn co https://github.com/openwrt/openwrt/trunk/tools/mkimage tools/mkimage

+ 0 - 61
devices/mediatek_filogic/patches/redmi-ax6000.patch

@@ -1,61 +0,0 @@
---- a/target/linux/mediatek/filogic/base-files/etc/board.d/02_network
-+++ b/target/linux/mediatek/filogic/base-files/etc/board.d/02_network
-@@ -16,15 +16,38 @@ mediatek_setup_interfaces()
- 		ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4 sfp2" "eth1 wan"
- 		ucidef_set_interface_macaddr "wan" "$(macaddr_add $(cat /sys/class/net/eth0/address) 1)"
- 		;;
-+	xiaomi,redmi-router-ax6000)
-+		ucidef_set_interfaces_lan_wan "lan1 lan2 lan3" wan
-+		;;
- 	*)
- 		ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4" wan
- 		;;
- 	esac
- }
- 
-+mediatek_setup_macs()
-+{
-+	local board="$1"
-+	local lan_mac=""
-+	local wan_mac=""
-+	local label_mac=""
-+
-+	case $board in
-+	xiaomi,redmi-router-ax6000)
-+		wan_mac=$(mtd_get_mac_ascii Bdata ethaddr_wan)
-+		label_mac=$wan_mac
-+		;;
-+	esac
-+
-+	[ -n "$lan_mac" ] && ucidef_set_interface_macaddr "lan" $lan_mac
-+	[ -n "$wan_mac" ] && ucidef_set_interface_macaddr "wan" $wan_mac
-+	[ -n "$label_mac" ] && ucidef_set_label_macaddr $label_mac
-+}
-+
- board_config_update
- board=$(board_name)
- mediatek_setup_interfaces $board
-+mediatek_setup_macs $board
- board_config_flush
- 
- exit 0
-
---- a/target/linux/mediatek/image/filogic.mk
-+++ b/target/linux/mediatek/image/filogic.mk
-@@ -125,3 +125,16 @@ define Device/mediatek_mt7986b-rfb
-   IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
- endef
- TARGET_DEVICES += mediatek_mt7986b-rfb
-+
-+define Device/xiaomi_redmi-router-ax6000
-+  DEVICE_VENDOR := Xiaomi
-+  DEVICE_MODEL := Redmi Router AX6000
-+  DEVICE_DTS := mt7986a-xiaomi-redmi-router-ax6000
-+  DEVICE_DTS_DIR := ../dts
-+  UBINIZE_OPTS := -E 5
-+  BLOCKSIZE := 128k
-+  PAGESIZE := 2048
-+  KERNEL_IN_UBI := 1
-+  IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
-+endef
-+TARGET_DEVICES += xiaomi_redmi-router-ax6000

+ 1 - 0
devices/ramips_mt7621/.config

@@ -47,5 +47,6 @@ CONFIG_TARGET_DEVICE_ramips_mt7621_DEVICE_linksys_ea7300-v1=y
 CONFIG_TARGET_DEVICE_ramips_mt7621_DEVICE_linksys_ea7300-v2=y
 CONFIG_TARGET_DEVICE_ramips_mt7621_DEVICE_linksys_ea6350-v4=y
 CONFIG_TARGET_DEVICE_ramips_mt7621_DEVICE_linksys_e5600=y
+CONFIG_TARGET_DEVICE_ramips_mt7621_DEVICE_jdcloud_luban=y
 
 CONFIG_PACKAGE_luci-ssl=y # uhttpd服务

+ 2 - 0
devices/ramips_mt7621/diy.sh

@@ -2,5 +2,7 @@
 
 shopt -s extglob
 
+sed -i "s/DEVICE_MODEL := HC5962$/DEVICE_MODEL := HC5962\/B70/" target/linux/ramips/image/mt7621.mk
+
 
 

+ 198 - 0
devices/ramips_mt7621/patches/luban.patch

@@ -0,0 +1,198 @@
+diff --git a/target/linux/ramips/dts/mt7621_jdcloud_luban.dts b/target/linux/ramips/dts/mt7621_jdcloud_luban.dts
+new file mode 100644
+index 0000000..ed1ebed
+--- /dev/null
++++ b/target/linux/ramips/dts/mt7621_jdcloud_luban.dts
+@@ -0,0 +1,171 @@
++#include "mt7621.dtsi"
++
++#include <dt-bindings/gpio/gpio.h>
++#include <dt-bindings/input/input.h>
++
++/ {
++	compatible = "jdcloud,luban", "mediatek,mt7621-soc";
++	model = "JDCloud luban";
++
++	aliases {
++		led-boot = &led_r1;
++		led-failsafe = &led_r1;
++		led-running = &led_g1;
++		led-upgrade = &led_b1;
++		label-mac-device = &gmac0;
++	};
++
++	chosen {
++		bootargs = "console=ttyS0,115200n8";
++	};
++
++	leds {
++		compatible = "gpio-leds";
++
++		led_r1: led_r1 {
++			label = "led_r1";
++			gpios = <&gpio 6 GPIO_ACTIVE_LOW>;
++			default-state = "on";
++		};
++
++		led_b1: led_b1 {
++			label = "led_b1";
++			gpios = <&gpio 7 GPIO_ACTIVE_LOW>;
++		};
++
++		led_g1: led_g1 {
++			label = "led_g1";
++			gpios = <&gpio 8 GPIO_ACTIVE_LOW>;
++		};
++	};
++
++	keys {
++		compatible = "gpio-keys";
++
++		reset {
++			label = "reset";
++			gpios = <&gpio 18 GPIO_ACTIVE_LOW>;
++			linux,code = <KEY_RESTART>;
++		};
++
++		wps {
++			label = "wps";
++			gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
++			linux,code = <KEY_WPS_BUTTON>;
++		};
++	};
++};
++
++&spi0 {
++	status = "okay";
++
++	flash@0 {
++		compatible = "jedec,spi-nor";
++		reg = <0>;
++		spi-max-frequency = <10000000>;
++		broken-flash-reset;
++
++		partitions {
++			compatible = "fixed-partitions";
++			#address-cells = <1>;
++			#size-cells = <1>;
++
++			partition@0 {
++				label = "u-boot";
++				reg = <0x0 0x40000>;
++				read-only;
++			};
++			
++			partition@40000 {
++				label = "u-boot-env";
++				reg = <0x40000 0x10000>;
++				read-only;
++			};
++			
++			factory: partition@50000 {
++				label = "factory";
++				reg = <0x50000 0x40000>;
++				read-only;
++			};
++			
++			partition@90000 {
++				compatible = "denx,uimage";
++				label = "firmware";
++				reg = <0x90000 0xf70000>;
++			};
++		};
++	};
++};
++
++&state_default {
++	gpio {
++		groups = "i2c", "uart2", "uart3";
++		function = "gpio";
++	};
++};
++
++&sdhci {
++	status = "okay";
++};
++
++&gmac0 {
++	nvmem-cells = <&macaddr_factory_3fff4>;
++	nvmem-cell-names = "mac-address";
++};
++
++&switch0 {
++	ports {
++		port@0 {
++			status = "okay";
++			label = "lan4";
++		};
++
++		port@1 {
++			status = "okay";
++			label = "lan3";		   
++		};
++
++		port@2 {
++			status = "okay";
++			label = "lan2";
++		};
++
++		port@3 {
++			status = "okay";
++			label = "lan1";
++		};
++
++		port@4 {
++			status = "okay";
++			label = "wan";
++			nvmem-cells = <&macaddr_factory_3fffa>;
++			nvmem-cell-names = "mac-address";
++		};
++	};
++};
++
++&pcie {
++	status = "okay";
++};
++
++&pcie1 {
++	wifi@0,0 {
++		compatible = "mediatek,mt76";
++		reg = <0x0000 0 0 0 0>;
++		mediatek,mtd-eeprom = <&factory 0x0>;
++	};
++};
++
++&factory {
++	compatible = "nvmem-cells";
++	#address-cells = <1>;
++	#size-cells = <1>;
++
++	macaddr_factory_3fff4: macaddr@3fff4 {
++		reg = <0x3fff4 0x6>;
++	};
++
++	macaddr_factory_3fffa: macaddr@3fffa {
++		reg = <0x3fffa 0x6>;
++	};
++};
+diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk
+index 795f567..02c4da8 100644
+--- a/target/linux/ramips/image/mt7621.mk
++++ b/target/linux/ramips/image/mt7621.mk
+@@ -1816,6 +1816,16 @@ define Device/xiaoyu_xy-c5
+ endef
+ TARGET_DEVICES += xiaoyu_xy-c5
+ 
++define Device/jdcloud_luban
++  $(Device/dsa-migration)
++  $(Device/uimage-lzma-loader)
++  IMAGE_SIZE := 15808k
++  DEVICE_VENDOR := JDCloud
++  DEVICE_MODEL := Luban 鲁班
++  DEVICE_PACKAGES += kmod-mt7915e uboot-envtools wpad-mini -wpad-basic-wolfssl -coremark -htop -bash -openssh-sftp-server
++endef
++TARGET_DEVICES += jdcloud_luban
++
+ define Device/xzwifi_creativebox-v1
+   $(Device/dsa-migration)
+   IMAGE_SIZE := 32448k