diff --git a/package/gluon-core/luasrc/usr/lib/lua/gluon/platform.lua b/package/gluon-core/luasrc/usr/lib/lua/gluon/platform.lua index 014e516c43968fe117065f0963d9ddae6524b7dd..2c98a9ee7bb4926ea3bcaf03e4314871a734a648 100644 --- a/package/gluon-core/luasrc/usr/lib/lua/gluon/platform.lua +++ b/package/gluon-core/luasrc/usr/lib/lua/gluon/platform.lua @@ -69,6 +69,11 @@ function M.is_outdoor_device() 'zyxel,nwa55axe', }) then return true + + elseif M.match('mediatek', 'filogic', { + 'cudy,ap3000outdoor-v1', + }) then + return true end return false diff --git a/patches/openwrt/0011-mediatek-filogic-add-support-for-Cudy-AP3000-Outdoor.patch b/patches/openwrt/0011-mediatek-filogic-add-support-for-Cudy-AP3000-Outdoor.patch new file mode 100644 index 0000000000000000000000000000000000000000..3324b8606d0b8611286f074866971809858217c1 --- /dev/null +++ b/patches/openwrt/0011-mediatek-filogic-add-support-for-Cudy-AP3000-Outdoor.patch @@ -0,0 +1,307 @@ +From: Pawel Dembicki <paweldembicki@gmail.com> +Date: Sun, 4 Aug 2024 22:47:47 +0200 +Subject: mediatek: filogic: add support for Cudy AP3000 Outdoor + +Hardware highlights: + - MediaTek MT7981 WiSoC + - 256MB DDR3 RAM + - 64MB SPI-NAND + - MediaTek MT7981 2x2 DBDC 802.11ax 2T2R (2.4 / 5) + - 1x LED in two colors + - 2x Button + - 1x 1GbE + - Two detachable antenas, two internal pcb antenas + - PoE powered (standalone) + +MAC: +LAN MAC: label mac +2.4G MAC: label mac -1 +5G MAC: label mac + +How to install: +1. Apply Cudy Intermediate OpenWrt image for AP3000 Outdoor V1 +2. Install OpenWrt sysupgrade image + +Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com> +Link: https://github.com/openwrt/openwrt/pull/16156 +Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> + +diff --git a/target/linux/mediatek/base-files/lib/preinit/05_set_preinit_iface b/target/linux/mediatek/base-files/lib/preinit/05_set_preinit_iface +index 6dfa52c291146183c67bc4b1813b48cd9bf0d7dc..8e74c577cd505bbf8b2109d8f34fe8013887dc1e 100644 +--- a/target/linux/mediatek/base-files/lib/preinit/05_set_preinit_iface ++++ b/target/linux/mediatek/base-files/lib/preinit/05_set_preinit_iface +@@ -6,6 +6,7 @@ set_preinit_iface() { + ip link set eth1 up + ifname=eth1 + ;; ++ cudy,ap3000outdoor-v1|\ + cudy,re3000-v1|\ + ubnt,unifi-6-lr|\ + zyxel,nwa50ax-pro) +diff --git a/target/linux/mediatek/dts/mt7981b-cudy-ap3000outdoor-v1.dts b/target/linux/mediatek/dts/mt7981b-cudy-ap3000outdoor-v1.dts +new file mode 100644 +index 0000000000000000000000000000000000000000..62e406394755ac6ef5722e4070553a24261e88a7 +--- /dev/null ++++ b/target/linux/mediatek/dts/mt7981b-cudy-ap3000outdoor-v1.dts +@@ -0,0 +1,209 @@ ++// SPDX-License-Identifier: (GPL-2.0 OR MIT) ++ ++/dts-v1/; ++ ++#include <dt-bindings/leds/common.h> ++ ++#include "mt7981.dtsi" ++ ++/ { ++ model = "Cudy AP3000 Outdoor v1"; ++ compatible = "cudy,ap3000outdoor-v1", "mediatek,mt7981-spim-snand-rfb"; ++ ++ aliases { ++ label-mac-device = &gmac1; ++ led-boot = &led_status_green; ++ led-failsafe = &led_status_red; ++ led-running = &led_status_green; ++ led-upgrade = &led_status_red; ++ serial0 = &uart0; ++ }; ++ ++ chosen { ++ stdout-path = "serial0:115200n8"; ++ }; ++ ++ gpio-keys { ++ compatible = "gpio-keys"; ++ ++ reset { ++ label = "reset"; ++ linux,code = <KEY_RESTART>; ++ gpios = <&pio 1 GPIO_ACTIVE_LOW>; ++ }; ++ ++ wps { ++ label = "wps"; ++ linux,code = <KEY_WPS_BUTTON>; ++ gpios = <&pio 0 GPIO_ACTIVE_LOW>; ++ }; ++ }; ++ ++ leds { ++ compatible = "gpio-leds"; ++ ++ led_status_green: led@0 { ++ function = LED_FUNCTION_STATUS; ++ color = <LED_COLOR_ID_GREEN>; ++ gpios = <&pio 10 GPIO_ACTIVE_HIGH>; ++ }; ++ ++ led_status_red: led_1 { ++ function = LED_FUNCTION_POWER; ++ color = <LED_COLOR_ID_RED>; ++ gpios = <&pio 11 GPIO_ACTIVE_HIGH>; ++ }; ++ }; ++ gpio_export { ++ compatible = "gpio-export"; ++ #size-cells = <0>; ++ ++ antctrl { ++ /* Not sure if this pin does anything. ++ * It was taken from GPL sources. ++ * Intermediate image doesn't have it. ++ */ ++ gpio-export,name = "antctrl"; ++ gpio-export,output = <1>; ++ gpios = <&pio 7 GPIO_ACTIVE_HIGH>; ++ }; ++ }; ++ ++ watchdog-hw { ++ compatible = "linux,wdt-gpio"; ++ gpios = <&pio 6 GPIO_ACTIVE_HIGH>; ++ hw_algo = "level"; ++ hw_margin_ms = <10000>; ++ always-running; ++ }; ++}; ++ ++&uart0 { ++ status = "okay"; ++}; ++ ++&watchdog { ++ status = "okay"; ++}; ++ ++ð { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&mdio_pins>; ++ ++ status = "okay"; ++ ++ gmac1: mac@1 { ++ compatible = "mediatek,eth-mac"; ++ reg = <1>; ++ phy-mode = "gmii"; ++ phy-handle = <&int_gbe_phy>; ++ nvmem-cell-names = "mac-address"; ++ nvmem-cells = <&macaddr_bdinfo_de00 1>; ++ }; ++}; ++ ++&spi0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&spi0_flash_pins>; ++ status = "okay"; ++ ++ spi_nand: flash@0 { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ compatible = "spi-nand"; ++ reg = <0>; ++ spi-max-frequency = <52000000>; ++ ++ 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>; ++ ++ spi-tx-bus-width = <4>; ++ spi-rx-bus-width = <4>; ++ 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 = <0x00000 0x0100000>; ++ read-only; ++ }; ++ ++ partition@100000 { ++ label = "u-boot-env"; ++ reg = <0x0100000 0x0080000>; ++ read-only; ++ }; ++ ++ factory: partition@180000 { ++ label = "Factory"; ++ reg = <0x180000 0x0200000>; ++ read-only; ++ nvmem-layout { ++ compatible = "fixed-layout"; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ++ eeprom_factory_0: eeprom@0 { ++ reg = <0x0 0x1000>; ++ }; ++ }; ++ }; ++ ++ partition@380000 { ++ label = "bdinfo"; ++ reg = <0x380000 0x0040000>; ++ read-only; ++ nvmem-layout { ++ compatible = "fixed-layout"; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ++ macaddr_bdinfo_de00: macaddr@de00 { ++ compatible = "mac-base"; ++ reg = <0xde00 0x6>; ++ #nvmem-cell-cells = <1>; ++ }; ++ }; ++ ++ }; ++ ++ partition@3C0000 { ++ label = "FIP"; ++ reg = <0x3C0000 0x0200000>; ++ read-only; ++ }; ++ ++ partition@580000 { ++ label = "ubi"; ++ reg = <0x5C0000 0x4000000>; ++ compatible = "linux,ubi"; ++ }; ++ }; ++ }; ++}; ++ ++ ++&pio { ++ spi0_flash_pins: spi0-pins { ++ mux { ++ function = "spi"; ++ groups = "spi0", "spi0_wp_hold"; ++ }; ++ }; ++}; ++ ++&wifi { ++ status = "okay"; ++ nvmem-cells = <&eeprom_factory_0>; ++ nvmem-cell-names = "eeprom"; ++}; +diff --git a/target/linux/mediatek/filogic/base-files/etc/board.d/02_network b/target/linux/mediatek/filogic/base-files/etc/board.d/02_network +index e8ce84dd4b7648e35d6f67f3bfc0287c3c30c584..e61cbea700414326e88fda2c9d80101fee4500ae 100644 +--- a/target/linux/mediatek/filogic/base-files/etc/board.d/02_network ++++ b/target/linux/mediatek/filogic/base-files/etc/board.d/02_network +@@ -70,6 +70,7 @@ mediatek_setup_interfaces() + mercusys,mr90x-v1) + ucidef_set_interfaces_lan_wan "lan0 lan1 lan2" eth1 + ;; ++ cudy,ap3000outdoor-v1|\ + cudy,re3000-v1|\ + netgear,wax220|\ + ubnt,unifi-6-plus|\ +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 053d8e09cdff1df9c49b824529062a0c17c5b7dd..515d341ff4cf57466e2869ad6faeb82ac0318ca6 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 +@@ -67,6 +67,7 @@ case "$board" in + [ "$PHYNBR" = "0" ] && echo "$addr" > /sys${DEVPATH}/macaddress + [ "$PHYNBR" = "1" ] && macaddr_setbit_la $(macaddr_add $addr 1) > /sys${DEVPATH}/macaddress + ;; ++ cudy,ap3000outdoor-v1|\ + cudy,m3000-v1|\ + cudy,wr3000-v1) + addr=$(mtd_get_mac_binary bdinfo 0xde00) +diff --git a/target/linux/mediatek/image/filogic.mk b/target/linux/mediatek/image/filogic.mk +index 88b279140c4b500c4cf86b99b2332fca389c5a85..b8636ac90a3eb9d749b80d01babc9bafbd36b680 100644 +--- a/target/linux/mediatek/image/filogic.mk ++++ b/target/linux/mediatek/image/filogic.mk +@@ -360,6 +360,23 @@ define Device/confiabits_mt7981 + endef + TARGET_DEVICES += confiabits_mt7981 + ++define Device/cudy_ap3000outdoor-v1 ++ DEVICE_VENDOR := Cudy ++ DEVICE_MODEL := AP3000 Outdoor ++ DEVICE_VARIANT := v1 ++ DEVICE_DTS := mt7981b-cudy-ap3000outdoor-v1 ++ DEVICE_DTS_DIR := ../dts ++ SUPPORTED_DEVICES += R51 ++ UBINIZE_OPTS := -E 5 ++ BLOCKSIZE := 128k ++ PAGESIZE := 2048 ++ IMAGE_SIZE := 65536k ++ KERNEL_IN_UBI := 1 ++ IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata ++ DEVICE_PACKAGES := kmod-mt7915e kmod-mt7981-firmware mt7981-wo-firmware ++endef ++TARGET_DEVICES += cudy_ap3000outdoor-v1 ++ + define Device/cudy_m3000-v1 + DEVICE_VENDOR := Cudy + DEVICE_MODEL := M3000 diff --git a/targets/mediatek-filogic b/targets/mediatek-filogic index 9165148b937449cf5d6038f875beff2c40efab31..c61bc5fd5b22c0246d024805e99ef59164002f8e 100644 --- a/targets/mediatek-filogic +++ b/targets/mediatek-filogic @@ -11,6 +11,10 @@ device('asus-tuf-ax6000', 'asus_tuf-ax6000', { -- Cudy +device('cudy-ap3000outdoor-v1', 'cudy_ap3000outdoor-v1', { + factory = false, +}) + device('cudy-wr3000-v1', 'cudy_wr3000-v1', { factory = false, })