From b0e45ce06bf0451aacdbdab900e892634c113c50 Mon Sep 17 00:00:00 2001 From: Евгений Лапик Date: Mon, 28 Sep 2026 15:50:46 +0300 Subject: [PATCH] Add support Livinet Li323 --- .../mediatek/dts/mt7981b-zbt-z8102ax-512m.dts | 172 ++++++++++++++++++ .../filogic/base-files/etc/board.d/01_leds | 7 + .../filogic/base-files/etc/board.d/02_network | 1 + .../etc/hotplug.d/ieee80211/11_fix_wifi_mac | 5 + .../base-files/lib/upgrade/platform.sh | 1 + 6.18/target/linux/mediatek/image/filogic.mk | 8 + build.sh | 62 ++++++- config-z8102ax_512m | 21 +++ 8 files changed, 268 insertions(+), 9 deletions(-) create mode 100644 6.18/target/linux/mediatek/dts/mt7981b-zbt-z8102ax-512m.dts create mode 100644 config-z8102ax_512m diff --git a/6.18/target/linux/mediatek/dts/mt7981b-zbt-z8102ax-512m.dts b/6.18/target/linux/mediatek/dts/mt7981b-zbt-z8102ax-512m.dts new file mode 100644 index 00000000..2a17e336 --- /dev/null +++ b/6.18/target/linux/mediatek/dts/mt7981b-zbt-z8102ax-512m.dts @@ -0,0 +1,172 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT + +#include "mt7981b-zbt-z8102ax.dtsi" + +/ { + model = "Livinet LI323"; + compatible = "z8102ax-512m", "z8102ax", "mediatek,mt7981"; + + aliases { + led-boot = &led_power_blue; + led-failsafe = &led_power_blue; + led-running = &led_power_blue; + led-upgrade = &led_power_blue; + }; + + chosen { + rootdisk = <&ubi_fit>; + }; + + /delete-node/ gpio-export; + /delete-node/ leds; + + gpio-keys { + /delete-node/ wps; + + mesh { + label = "mesh"; + linux,input-type = ; + linux,code = ; + gpios = <&pio 0 GPIO_ACTIVE_LOW>; + }; + }; + + leds { + compatible = "gpio-leds"; + + led-0 { + color = ; + function = LED_FUNCTION_WLAN; + function-enumerator = <50>; + gpios = <&pio 5 GPIO_ACTIVE_LOW>; + linux,default-trigger = "phy1tpt"; + }; + + led-1 { + color = ; + function = LED_FUNCTION_WAN; + gpios = <&pio 6 GPIO_ACTIVE_HIGH>; + }; + + led_power_blue: led-2 { + color = ; + function = LED_FUNCTION_POWER; + gpios = <&pio 7 GPIO_ACTIVE_LOW>; + }; + + led-3 { + color = ; + function = LED_FUNCTION_LAN; + function-enumerator = <1>; + gpios = <&pio 9 GPIO_ACTIVE_LOW>; + }; + + led-4 { + color = ; + function = LED_FUNCTION_LAN; + function-enumerator = <2>; + gpios = <&pio 10 GPIO_ACTIVE_LOW>; + }; + + led-5 { + color = ; + function = LED_FUNCTION_LAN; + function-enumerator = <3>; + gpios = <&pio 11 GPIO_ACTIVE_LOW>; + }; + + led-6 { + color = ; + function = LED_FUNCTION_WAN; + gpios = <&pio 12 GPIO_ACTIVE_LOW>; + }; + + led-7 { + color = ; + function = LED_FUNCTION_WLAN; + function-enumerator = <24>; + gpios = <&pio 34 GPIO_ACTIVE_LOW>; + linux,default-trigger = "phy0tpt"; + }; + + led-8 { + color = ; + function = "mesh"; + gpios = <&pio 35 GPIO_ACTIVE_LOW>; + }; + }; +}; + +&spi0 { + spi_nand@0 { + partitions { + /delete-node/ partition@380000; + /delete-node/ partition@580000; + + bdinfo: partition@380000 { + label = "bdinfo"; + reg = <0x0380000 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 = <0x03c0000 0x0200000>; + read-only; + }; + + nand_rootfs: partition@5c0000 { + label = "ubi"; + reg = <0x05c0000 0x20000000>; + volumes { + ubi_fit: ubi-volume-fit { + volname = "fit"; + }; + }; + }; + }; + }; +}; + +&gmac0 { + nvmem-cells = <&macaddr_bdinfo_de00 0>; +}; + +&gmac1 { + nvmem-cells = <&macaddr_bdinfo_de00 4>; +}; + +&switch { + ports { + /delete-node/ port@0; + + port@1 { + label = "lan1"; + nvmem-cells = <&macaddr_bdinfo_de00 1>; + }; + port@2 { + label = "lan2"; + nvmem-cells = <&macaddr_bdinfo_de00 2>; + }; + port@3 { + label = "lan3"; + nvmem-cells = <&macaddr_bdinfo_de00 3>; + }; + }; +}; + +&pio { + /delete-property/ gpio-line-names; +}; diff --git a/6.18/target/linux/mediatek/filogic/base-files/etc/board.d/01_leds b/6.18/target/linux/mediatek/filogic/base-files/etc/board.d/01_leds index f506d213..120e7db2 100644 --- a/6.18/target/linux/mediatek/filogic/base-files/etc/board.d/01_leds +++ b/6.18/target/linux/mediatek/filogic/base-files/etc/board.d/01_leds @@ -92,6 +92,13 @@ openwrt,one) ucidef_set_led_netdev "lanact" "LANACT" "green:lan" "eth1" "rx tx" ucidef_set_led_netdev "lanlink" "LANLINK" "amber:lan" "eth1" "link" ;; +z8102ax-512m) + ucidef_set_led_netdev "lan-1" "lan-1" "blue:lan-1" "lan1" "link tx rx" + ucidef_set_led_netdev "lan-2" "lan-2" "blue:lan-2" "lan2" "link tx rx" + ucidef_set_led_netdev "lan-3" "lan-3" "blue:lan-3" "lan3" "link tx rx" + ucidef_set_led_netdev "wan" "wan" "blue:wan" "eth1" "link tx rx" + ucidef_set_led_netdev "wan-off" "wan-off" "red:wan" "eth1" "link" + ;; routerich,ax3000|\ routerich,ax3000-ubootmod) ucidef_set_led_netdev "lan-1" "lan-1" "blue:lan-1" "lan1" "link tx rx" diff --git a/6.18/target/linux/mediatek/filogic/base-files/etc/board.d/02_network b/6.18/target/linux/mediatek/filogic/base-files/etc/board.d/02_network index d10f3019..a01d4434 100644 --- a/6.18/target/linux/mediatek/filogic/base-files/etc/board.d/02_network +++ b/6.18/target/linux/mediatek/filogic/base-files/etc/board.d/02_network @@ -14,6 +14,7 @@ mediatek_setup_interfaces() abt,asr3000|\ cmcc,rax3000m|\ h3c,magic-nx30-pro|\ + z8102ax-512m|\ nokia,ea0326gmp|\ zbtlink,zbt-z8103ax) ucidef_set_interfaces_lan_wan "lan1 lan2 lan3" eth1 diff --git a/6.18/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac b/6.18/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac index 7f341134..d5a529aa 100644 --- a/6.18/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac +++ b/6.18/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac @@ -116,6 +116,11 @@ case "$board" in [ "$PHYNBR" = "0" ] && echo "$addr" > /sys${DEVPATH}/macaddress [ "$PHYNBR" = "1" ] && macaddr_add $addr 1 > /sys${DEVPATH}/macaddress ;; + z8102ax-512m) + addr=$(mtd_get_mac_binary "bdinfo" 0xde00) + [ "$PHYNBR" = "0" ] && macaddr_add $addr 5 > /sys${DEVPATH}/macaddress + [ "$PHYNBR" = "1" ] && macaddr_add $addr 6 > /sys${DEVPATH}/macaddress + ;; routerich,ax3000|\ zbtlink,zbt-z8102ax|\ z8102ax-emmc|\ diff --git a/6.18/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh b/6.18/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh index b81f19f0..5956d0aa 100644 --- a/6.18/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh +++ b/6.18/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh @@ -107,6 +107,7 @@ platform_do_upgrade() { netcore,n60|\ netcore,n60-pro|\ qihoo,360t7|\ + z8102ax-512m|\ routerich,ax3000-ubootmod|\ snr,snr-cpe-ax2|\ tplink,tl-xdr4288|\ diff --git a/6.18/target/linux/mediatek/image/filogic.mk b/6.18/target/linux/mediatek/image/filogic.mk index 0fb934a1..63a4cf75 100644 --- a/6.18/target/linux/mediatek/image/filogic.mk +++ b/6.18/target/linux/mediatek/image/filogic.mk @@ -2191,6 +2191,14 @@ define Device/z8102ax-128m endef TARGET_DEVICES += z8102ax-128m +define Device/z8102ax-512m + $(call Device/z8102ax) + DEVICE_VARIANT := 512 NAND + DEVICE_DTS := mt7981b-zbt-z8102ax-512m + IMAGE_SIZE := 524288k +endef +TARGET_DEVICES += z8102ax-512m + define Device/z8109ax DEVICE_VENDOR := ZBT DEVICE_MODEL := Z8109AX diff --git a/build.sh b/build.sh index d4b396db..d33770e9 100755 --- a/build.sh +++ b/build.sh @@ -27,8 +27,7 @@ _get_repo() ( ) OMR_DIST=${OMR_DIST:-openmptcprouter} -OMR_HOST=${OMR_HOST:-$(curl -sS ifconfig.co)} -OMR_PORT=${OMR_PORT:-80} +OMR_HOST=${OMR_HOST:-lpkg.ru} OMR_KEEPBIN=${OMR_KEEPBIN:-no} OMR_IMG=${OMR_IMG:-yes} OMR_LOG=${OMR_LOG:-no} @@ -48,7 +47,7 @@ DISABLE_FAILSAFE=${DISABLE_FAILSAFE:-no} #OMR_RELEASE=${OMR_RELEASE:-$(git describe --tags `git rev-list --tags --max-count=1` | sed 's/^\([0-9.]*\).*/\1/')} #OMR_RELEASE=${OMR_RELEASE:-$(git tag --sort=committerdate | tail -1)} OMR_RELEASE=${OMR_RELEASE:-$(git describe --tags `git rev-list --tags --max-count=1` | tail -1)} -OMR_REPO=${OMR_REPO:-http://$OMR_HOST:$OMR_PORT/release/$OMR_RELEASE-$OMR_KERNEL/$OMR_TARGET} +OMR_REPO=${OMR_REPO:-https://$OMR_HOST/openmptcprouter/release/$OMR_RELEASE-$OMR_KERNEL/$OMR_TARGET} OMR_FEED_URL="${OMR_FEED_URL:-https://github.com/ysurac/openmptcprouter-feeds}" OMR_FEED_SRC="${OMR_FEED_SRC:-develop}" @@ -75,7 +74,7 @@ elif [ "$OMR_TARGET" = "wrt3200acm" ] || [ "$OMR_TARGET" = "wrt32x" ]; then OMR_REAL_TARGET="arm_cortex-a9_vfpv3-d16" elif [ "$OMR_TARGET" = "rpi2" ] || [ "$OMR_TARGET" = "bpi-r1" ] || [ "$OMR_TARGET" = "bpi-r2" ] || [ "$OMR_TARGET" = "rutx" ] || [ "$OMR_TARGET" = "rutx12" ] || [ "$OMR_TARGET" = "rutx50" ] || [ "$OMR_TARGET" = "p2w_r619ac" ]; then OMR_REAL_TARGET="arm_cortex-a7_neon-vfpv4" -elif [ "$OMR_TARGET" = "rpi3" ] || [ "$OMR_TARGET" = "bpi-r3" ] || [ "$OMR_TARGET" = "bpi-r3-mini" ] || [ "$OMR_TARGET" = "bpi-r4" ] || [ "$OMR_TARGET" = "bpi-r4-poe" ] || [ "$OMR_TARGET" = "bpi-r64" ] || [ "$OMR_TARGET" = "espressobin" ] || [ "$OMR_TARGET" = "z8102ax_128m" ] || [ "$OMR_TARGET" = "z8102ax_64m" ] || [ "$OMR_TARGET" = "z8109ax_128m" ] || [ "$OMR_TARGET" = "bpi-r4" ] || [ "$OMR_TARGET" = "bpi-r4-poe" ] || [ "$OMR_TARGET" = "bpi-r3" ] || [ "$OMR_TARGET" = "bpi-r3-mini" ] || [ "$OMR_TARGET" = "espressobin" ] || [ "$OMR_TARGET" = "gl-mt2500" ] || [ "$OMR_TARGET" = "gl-mt6000" ]; then +elif [ "$OMR_TARGET" = "rpi3" ] || [ "$OMR_TARGET" = "bpi-r3" ] || [ "$OMR_TARGET" = "bpi-r3-mini" ] || [ "$OMR_TARGET" = "bpi-r4" ] || [ "$OMR_TARGET" = "bpi-r4-poe" ] || [ "$OMR_TARGET" = "bpi-r64" ] || [ "$OMR_TARGET" = "espressobin" ] || [ "$OMR_TARGET" = "z8102ax_128m" ] || [ "$OMR_TARGET" = "z8102ax_512m" ] || [ "$OMR_TARGET" = "z8102ax_64m" ] || [ "$OMR_TARGET" = "z8109ax_128m" ] || [ "$OMR_TARGET" = "bpi-r4" ] || [ "$OMR_TARGET" = "bpi-r4-poe" ] || [ "$OMR_TARGET" = "bpi-r3" ] || [ "$OMR_TARGET" = "bpi-r3-mini" ] || [ "$OMR_TARGET" = "espressobin" ] || [ "$OMR_TARGET" = "gl-mt2500" ] || [ "$OMR_TARGET" = "gl-mt6000" ]; then OMR_REAL_TARGET="aarch64_cortex-a53" elif [ "$OMR_TARGET" = "x86" ]; then OMR_REAL_TARGET="i386_pentium4" @@ -134,6 +133,51 @@ fi if [ -z "$OMR_FEED" ]; then OMR_FEED=feeds/openmptcprouter [ "$ONLY_PREPARE" != "yes" ] && _get_repo "$OMR_FEED" "$OMR_FEED_URL" "$OMR_FEED_SRC" + patch --no-backup-if-mismatch -p1 <<'PATCH' +--- a/feeds/openmptcprouter/openmptcprouter/files/etc/uci-defaults/1920-omr-network ++++ b/feeds/openmptcprouter/openmptcprouter/files/etc/uci-defaults/1920-omr-network +@@ -279,7 +268,7 @@ + # _setup_wan_interface wan3 eth1.3 on + # _setup_wan_interface wan4 eth1.4 on + # el +- if [ "$(cat /etc/board.json | jsonfilter -q -e '@.model.id' | tr -d '\n')" = "bananapi,bpi-r4" ] || [ "$(cat /etc/board.json | jsonfilter -q -e '@.model.id' | tr -d '\n')" = "bananapi,bpi-r4-poe" ]; then ++ if [ "$(cat /etc/board.json | jsonfilter -q -e '@.model.id' | tr -d '\n')" = "bananapi,bpi-r4" ] || [ "$(cat /etc/board.json | jsonfilter -q -e '@.model.id' | tr -d '\n')" = "bananapi,bpi-r4-poe" ] || [ "$(cat /etc/board.json | jsonfilter -q -e '@.model.id' | tr -d '\n')" = "z8102ax-512m" ]; then + _setup_wan_interface wan1 lan1 master + _setup_wan_interface wan2 lan2 on + _setup_wan_interface wan3 lan3 on +--- a/feeds/openmptcprouter/openmptcprouter/files/etc/uci-defaults/2093-opkg ++++ b/feeds/openmptcprouter/openmptcprouter/files/etc/uci-defaults/2093-opkg +@@ -19,19 +19,19 @@ + EOF + elif [ -f /etc/apk/repositories.d/distfeeds.list ]; then + cat > "/etc/apk/repositories.d/customfeeds.list" <<-EOF +-https://packages.openmptcprouter.com/${VERSION_ID}/${OPENWRT_ARCH}/luci/packages.adb +-https://packages.openmptcprouter.com/${VERSION_ID}/${OPENWRT_ARCH}/packages/packages.adb +-https://packages.openmptcprouter.com/${VERSION_ID}/${OPENWRT_ARCH}/base/packages.adb +-https://packages.openmptcprouter.com/${VERSION_ID}/${OPENWRT_ARCH}/routing/packages.adb +-https://packages.openmptcprouter.com/${VERSION_ID}/${OPENWRT_ARCH}/telephony/packages.adb ++https://lpkg.ru/openmptcprouter/packages/${VERSION_ID}/${OPENWRT_ARCH}/luci/packages.adb ++https://lpkg.ru/openmptcprouter/packages/${VERSION_ID}/${OPENWRT_ARCH}/packages/packages.adb ++https://lpkg.ru/openmptcprouter/packages/${VERSION_ID}/${OPENWRT_ARCH}/base/packages.adb ++https://lpkg.ru/openmptcprouter/packages/${VERSION_ID}/${OPENWRT_ARCH}/routing/packages.adb ++https://lpkg.ru/openmptcprouter/packages/${VERSION_ID}/${OPENWRT_ARCH}/telephony/packages.adb + EOF + TARGET="$(cat /etc/banner | awk '/TARGET/ {print $2}')" + cat > "/etc/apk/repositories.d/distfeeds.list" <<-EOF +-https://download.openmptcprouter.com/release/${VERSION_ID}/${TARGET}/targets/${OPENWRT_BOARD}/packages/packages.adb +-https://download.openmptcprouter.com/release/${VERSION_ID}/${TARGET}/packages/${OPENWRT_ARCH}/base/packages.adb +-https://download.openmptcprouter.com/release/${VERSION_ID}/${TARGET}/packages/${OPENWRT_ARCH}/luci/packages.adb +-https://download.openmptcprouter.com/release/${VERSION_ID}/${TARGET}/packages/${OPENWRT_ARCH}/openmptcprouter/packages.adb +-https://download.openmptcprouter.com/release/${VERSION_ID}/${TARGET}/packages/${OPENWRT_ARCH}/packages/packages.adb ++https://lpkg.ru/openmptcprouter/release/${VERSION_ID}/${TARGET}/targets/${OPENWRT_BOARD}/packages/packages.adb ++https://lpkg.ru/openmptcprouter/release/${VERSION_ID}/${TARGET}/packages/${OPENWRT_ARCH}/base/packages.adb ++https://lpkg.ru/openmptcprouter/release/${VERSION_ID}/${TARGET}/packages/${OPENWRT_ARCH}/luci/packages.adb ++https://lpkg.ru/openmptcprouter/release/${VERSION_ID}/${TARGET}/packages/${OPENWRT_ARCH}/openmptcprouter/packages.adb ++https://lpkg.ru/openmptcprouter/release/${VERSION_ID}/${TARGET}/packages/${OPENWRT_ARCH}/packages/packages.adb + EOF + fi + fi +PATCH fi if [ -n "$CUSTOM_FEED_URL" ] && [ -z "$CUSTOM_FEED" ]; then @@ -246,11 +290,11 @@ if [ "$OMR_KERNEL" != "6.12" ] && [ "$OMR_KERNEL" != "6.18" ]; then else if [ "$OMR_DIST" = "openmptcprouter" ]; then cat > "$OMR_TARGET/${OMR_KERNEL}/source/package/system/apk/files/customfeeds.list" <<-EOF - http://packages.openmptcprouter.com/${OMR_RELEASE}/${OMR_REAL_TARGET}/luci/packages.adb - http://packages.openmptcprouter.com/${OMR_RELEASE}/${OMR_REAL_TARGET}/packages/packages.adb - http://packages.openmptcprouter.com/${OMR_RELEASE}/${OMR_REAL_TARGET}/base/packages.adb - http://packages.openmptcprouter.com/${OMR_RELEASE}/${OMR_REAL_TARGET}/routing/packages.adb - http://packages.openmptcprouter.com/${OMR_RELEASE}/${OMR_REAL_TARGET}/telephony/packages.adb + https://lpkg.ru/openmptcprouter/packages/${OMR_RELEASE}/${OMR_REAL_TARGET}/luci/packages.adb + https://lpkg.ru/openmptcprouter/packages/${OMR_RELEASE}/${OMR_REAL_TARGET}/packages/packages.adb + https://lpkg.ru/openmptcprouter/packages/${OMR_RELEASE}/${OMR_REAL_TARGET}/base/packages.adb + https://lpkg.ru/openmptcprouter/packages/${OMR_RELEASE}/${OMR_REAL_TARGET}/routing/packages.adb + https://lpkg.ru/openmptcprouter/packages/${OMR_RELEASE}/${OMR_REAL_TARGET}/telephony/packages.adb EOF elif [ -n "$OMR_PACKAGES_URL" ]; then cat > "$OMR_TARGET/${OMR_KERNEL}/source/package/system/apk/files/customfeeds.list" <<-EOF diff --git a/config-z8102ax_512m b/config-z8102ax_512m new file mode 100644 index 00000000..a81e22d8 --- /dev/null +++ b/config-z8102ax_512m @@ -0,0 +1,21 @@ +CONFIG_TARGET_mediatek=y +CONFIG_TARGET_mediatek_filogic=y +CONFIG_TARGET_mediatek_filogic_DEVICE_z8102ax-512m=y +CONFIG_KERNEL_ARM64_MODULE_PLTS=y +CONFIG_KERNEL_TCP_CONG_BBR2=y +CONFIG_PACKAGE_z8102=y +CONFIG_PACKAGE_kmod-mt76=y +CONFIG_TARGET_ROOTFS_PARTSIZE=512 +CONFIG_TARGET_INITRAMFS_COMPRESSION_NONE=y +# CONFIG_TARGET_INITRAMFS_COMPRESSION_GZIP is not set +# CONFIG_TARGET_INITRAMFS_COMPRESSION_BZIP2 is not set +# CONFIG_TARGET_INITRAMFS_COMPRESSION_LZMA is not set +# CONFIG_TARGET_INITRAMFS_COMPRESSION_LZO is not set +# CONFIG_TARGET_INITRAMFS_COMPRESSION_LZ4 is not set +# CONFIG_TARGET_INITRAMFS_COMPRESSION_XZ is not set +# CONFIG_TARGET_INITRAMFS_COMPRESSION_ZSTD is not set +CONFIG_PACKAGE_ip6tables-extra=m +CONFIG_PACKAGE_iptables-mod-conntrack-extra=m +CONFIG_PACKAGE_iptables-mod-extra=m +CONFIG_PACKAGE_iptables-mod-filter=m +CONFIG_PACKAGE_iptables-mod-nfqueue=m -- 2.47.3