Efforts to support ZBT-Z8103AX-C (model variant C sold in 2025)

I have a ZBT Z8103AX-C variant, and for now I’ve successfully flashed the manufacturer’s OpenWrt build.

Manufacturer OpenWrt image:

dmesg log:

gpio info:

.dts files extracted from manufacture openwrt:

Has anyone tried newer image on this router variant?
I want to try it, but I’m a bit scared of bricking the device.

2 Likes

Hello,

this thread is about adding official support for ZBT-Z8103AX-C sold in 2025. I do own three of these devices. Intend is to use them to help coverage of my home wifi network.

Current state is that adoption to new NAND mtd layout in DTS file is working together with official OpenWrt Snapshot (main branch).

Kernel log of self compiled image:

[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
[    0.000000] Linux version 6.12.40 (joelinux@debian-vm) (aarch64-openwrt-linux-musl-gcc (OpenWrt GCC 14.3.0 r30320-af3add5b83) 14.3.0, GNU ld (GNU Binutils) 2.42) #0 SMP Thu Aug  7 13:57:14 2025
[    0.000000] Machine model: Zbtlink 3000M(WiFi6) ZBT-Z8103AX-C
[    0.000000] earlycon: uart8250 at MMIO32 0x0000000011002000 (options '')
[    0.000000] printk: legacy bootconsole [uart8250] enabled
[    0.000000] OF: reserved mem: 0x0000000042ff0000..0x0000000042ffffff (64 KiB) map non-reusable ramoops@42ff0000
[    0.000000] OF: reserved mem: 0x0000000043000000..0x000000004302ffff (192 KiB) nomap non-reusable secmon@43000000
[    0.000000] OF: reserved mem: 0x0000000047c80000..0x0000000047d7ffff (1024 KiB) nomap non-reusable wmcpu-reserved@47c80000
[    0.000000] OF: reserved mem: 0x0000000047d80000..0x0000000047dbffff (256 KiB) nomap non-reusable wo-emi@47d80000
[    0.000000] OF: reserved mem: 0x0000000047dc0000..0x0000000047ffffff (2304 KiB) nomap non-reusable wo-data@47dc0000
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x0000000040000000-0x000000004fffffff]
[    0.000000]   DMA32    empty
[    0.000000]   Normal   empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000040000000-0x0000000042ffffff]
[    0.000000]   node   0: [mem 0x0000000043000000-0x000000004302ffff]
[    0.000000]   node   0: [mem 0x0000000043030000-0x0000000047c7ffff]
[    0.000000]   node   0: [mem 0x0000000047c80000-0x0000000047ffffff]
[    0.000000]   node   0: [mem 0x0000000048000000-0x000000004fffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000040000000-0x000000004fffffff]
[    0.000000] psci: probing for conduit method from DT.
[    0.000000] psci: PSCIv1.1 detected in firmware.
[    0.000000] psci: Using standard PSCI v0.2 function IDs
[    0.000000] psci: MIGRATE_INFO_TYPE not supported.
[    0.000000] psci: SMC Calling Convention v1.2
[    0.000000] percpu: Embedded 20 pages/cpu s42520 r8192 d31208 u81920
[    0.000000] pcpu-alloc: s42520 r8192 d31208 u81920 alloc=20*4096
[    0.000000] pcpu-alloc: [0] 0 [0] 1 
[    0.000000] Detected VIPT I-cache on CPU0
[    0.000000] CPU features: detected: GIC system register CPU interface
[    0.000000] CPU features: kernel page table isolation disabled by kernel configuration
[    0.000000] alternatives: applying boot alternatives
[    0.000000] Kernel command line: earlycon=uart8250,mmio32,0x11002000 console=ttyS0,115200n8
[    0.000000] Dentry cache hash table entries: 32768 (order: 6, 262144 bytes, linear)
[    0.000000] Inode-cache hash table entries: 16384 (order: 5, 131072 bytes, linear)
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 65536
[    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[    0.000000] software IO TLB: SWIOTLB bounce buffer size adjusted to 0MB
[    0.000000] software IO TLB: area num 2.
[    0.000000] software IO TLB: SWIOTLB bounce buffer size roundup to 0MB
[    0.000000] software IO TLB: mapped [mem 0x000000004fe49000-0x000000004fec9000] (0MB)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
[    0.000000] rcu: Hierarchical RCU implementation.
[    0.000000] rcu: 	RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=2.
[    0.000000] 	Tracing variant of Tasks RCU enabled.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
[    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
[    0.000000] RCU Tasks Trace: Setting shift to 1 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=2.
[    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[    0.000000] GICv3: GIC: Using split EOI/Deactivate mode
[    0.000000] GICv3: 640 SPIs implemented
[    0.000000] GICv3: 0 Extended SPIs implemented
[    0.000000] Root IRQ handler: gic_handle_irq
[    0.000000] GICv3: GICv3 features: 16 PPIs
[    0.000000] GICv3: GICD_CTRL.DS=0, SCR_EL3.FIQ=0
[    0.000000] GICv3: CPU0: found redistributor 0 region 0:0x000000000c080000
[    0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
[    0.000000] arch_timer: cp15 timer(s) running at 13.00MHz (phys).
[    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x2ff89eacb, max_idle_ns: 440795202429 ns
[    0.000000] sched_clock: 56 bits at 13MHz, resolution 76ns, wraps every 4398046511101ns
[    0.008137] Calibrating delay loop (skipped), value calculated using timer frequency.. 26.00 BogoMIPS (lpj=130000)
[    0.018547] pid_max: default: 32768 minimum: 301
[    0.026108] Mount-cache hash table entries: 512 (order: 0, 4096 bytes, linear)
[    0.033376] Mountpoint-cache hash table entries: 512 (order: 0, 4096 bytes, linear)
[    0.043137] cacheinfo: Unable to detect cache hierarchy for CPU 0
[    0.050099] rcu: Hierarchical SRCU implementation.
[    0.054919] rcu: 	Max phase no-delay instances is 1000.
[    0.060382] Timer migration: 1 hierarchy levels; 8 children per group; 1 crossnode level
[    0.068735] smp: Bringing up secondary CPUs ...
[    0.073657] Detected VIPT I-cache on CPU1
[    0.073706] GICv3: CPU1: found redistributor 1 region 0:0x000000000c0a0000
[    0.073733] CPU1: Booted secondary processor 0x0000000001 [0x410fd034]
[    0.073814] smp: Brought up 1 node, 2 CPUs
[    0.095424] SMP: Total of 2 processors activated.
[    0.100146] CPU: All CPU(s) started at EL2
[    0.104257] CPU features: detected: 32-bit EL0 Support
[    0.109420] CPU features: detected: CRC32 instructions
[    0.114605] alternatives: applying system-wide alternatives
[    0.120329] CPU features: emulated: Privileged Access Never (PAN) using TTBR0_EL1 switching
[    0.128836] Memory: 236912K/262144K available (9280K kernel code, 976K rwdata, 2740K rodata, 448K init, 300K bss, 23604K reserved, 0K cma-reserved)
[    0.145133] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[    0.155047] futex hash table entries: 512 (order: 3, 32768 bytes, linear)
[    0.161921] 29280 pages in range for non-PLT usage
[    0.161926] 520800 pages in range for PLT usage
[    0.168231] pinctrl core: initialized pinctrl subsystem
[    0.180609] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[    0.186880] DMA: preallocated 128 KiB GFP_KERNEL pool for atomic allocations
[    0.194007] DMA: preallocated 128 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
[    0.201805] DMA: preallocated 128 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
[    0.210148] thermal_sys: Registered thermal governor 'fair_share'
[    0.210155] thermal_sys: Registered thermal governor 'bang_bang'
[    0.216275] thermal_sys: Registered thermal governor 'step_wise'
[    0.222321] thermal_sys: Registered thermal governor 'user_space'
[    0.228423] ASID allocator initialised with 65536 entries
[    0.240566] pstore: Using crash dump compression: deflate
[    0.246014] pstore: Registered ramoops as persistent store backend
[    0.252221] ramoops: using 0x10000@0x42ff0000, ecc: 0
[    0.258780] /soc/interrupt-controller@c000000: Fixed dependency cycle(s) with /soc/interrupt-controller@c000000
[    0.285428] cryptd: max_cpu_qlen set to 1000
[    0.291926] SCSI subsystem initialized
[    0.295828] libata version 3.00 loaded.
[    0.301477] clocksource: Switched to clocksource arch_sys_counter
[    0.309891] NET: Registered PF_INET protocol family
[    0.314906] IP idents hash table entries: 4096 (order: 3, 32768 bytes, linear)
[    0.323226] tcp_listen_portaddr_hash hash table entries: 256 (order: 0, 4096 bytes, linear)
[    0.331645] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
[    0.339431] TCP established hash table entries: 2048 (order: 2, 16384 bytes, linear)
[    0.347234] TCP bind hash table entries: 2048 (order: 4, 65536 bytes, linear)
[    0.354462] TCP: Hash tables configured (established 2048 bind 2048)
[    0.361162] MPTCP token hash table entries: 256 (order: 0, 6144 bytes, linear)
[    0.368528] UDP hash table entries: 256 (order: 1, 8192 bytes, linear)
[    0.375106] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes, linear)
[    0.382312] NET: Registered PF_UNIX/PF_LOCAL protocol family
[    0.388018] PCI: CLS 0 bytes, default 64
[    0.393136] workingset: timestamp_bits=46 max_order=16 bucket_order=0
[    0.404587] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.410455] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
[    0.477277] gpio-export gpio-export: 0 gpio(s) exported
[    0.492358] Serial: 8250/16550 driver, 3 ports, IRQ sharing disabled
[    0.499867] printk: legacy console [ttyS0] disabled
[    0.525207] 11002000.serial: ttyS0 at MMIO 0x11002000 (irq = 72, base_baud = 2500000) is a ST16650V2
[    0.534443] printk: legacy console [ttyS0] enabled
[    0.544026] printk: legacy bootconsole [uart8250] disabled
[    0.559230] loop: module loaded
[    0.564490] spi-nand spi0.0: Winbond SPI NAND was found.
[    0.569803] spi-nand spi0.0: 128 MiB, block size: 128 KiB, page size: 2048, OOB size: 64
[    0.578352] 5 fixed-partitions partitions found on MTD device spi0.0
[    0.584777] Creating 5 MTD partitions on "spi0.0":
[    0.589560] 0x000000000000-0x000000100000 : "BL2"
[    0.595253] 0x000000100000-0x000000180000 : "u-boot-env"
[    0.601256] 0x000000180000-0x000000380000 : "Factory"
[    0.607896] 0x000000380000-0x000000580000 : "FIP"
[    0.614028] 0x000000580000-0x000007800000 : "ubi"
[    0.819591] mtk_soc_eth 15100000.ethernet eth0: mediatek frame engine at 0xffffffc081680000, irq 75
[    0.829518] mtk_soc_eth 15100000.ethernet eth1: mediatek frame engine at 0xffffffc081680000, irq 75
[    0.839356] i2c_dev: i2c /dev entries driver
[    0.845289] mtk-wdt 1001c000.watchdog: Watchdog enabled (timeout=31 sec, nowayout=0)
[    0.854342] NET: Registered PF_INET6 protocol family
[    0.860341] Segment Routing with IPv6
[    0.864057] In-situ OAM (IOAM) with IPv6
[    0.868026] NET: Registered PF_PACKET protocol family
[    0.873307] 8021q: 802.1Q VLAN Support v1.8
[    0.949243] mt7530-mdio mdio-bus:1f: configuring for fixed/2500base-x link mode
[    0.958017] mt7530-mdio mdio-bus:1f: Link is Up - 2.5Gbps/Full - flow control rx/tx
[    0.968108] mt7530-mdio mdio-bus:1f lan1 (uninitialized): PHY [mt7530-0:00] driver [MediaTek MT7531 PHY] (irq=79)
[    0.989561] mt7530-mdio mdio-bus:1f lan2 (uninitialized): PHY [mt7530-0:01] driver [MediaTek MT7531 PHY] (irq=80)
[    1.010809] mt7530-mdio mdio-bus:1f lan3 (uninitialized): PHY [mt7530-0:02] driver [MediaTek MT7531 PHY] (irq=81)
[    1.022547] mtk_soc_eth 15100000.ethernet eth0: entered promiscuous mode
[    1.029279] DSA: tree 0 setup
[    1.032735] UBI: auto-attach mtd4
[    1.036058] ubi0: default fastmap pool size: 45
[    1.040577] ubi0: default fastmap WL pool size: 22
[    1.045368] ubi0: attaching mtd4
[    1.435948] ubi0: scanning is finished
[    1.444819] ubi0: attached mtd4 (name "ubi", size 114 MiB)
[    1.450309] ubi0: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes
[    1.457188] ubi0: min./max. I/O unit sizes: 2048/2048, sub-page size 2048
[    1.463976] ubi0: VID header offset: 2048 (aligned 2048), data offset: 4096
[    1.470925] ubi0: good PEBs: 916, bad PEBs: 0, corrupted PEBs: 0
[    1.476923] ubi0: user volume: 3, internal volumes: 1, max. volumes count: 128
[    1.484135] ubi0: max/mean erase counter: 8/5, WL threshold: 4096, image sequence number: 1744562312
[    1.493257] ubi0: available PEBs: 0, total reserved PEBs: 916, PEBs reserved for bad PEB handling: 20
[    1.502474] ubi0: background thread "ubi_bgt0d" started, PID 560
[    1.503154] block ubiblock0_1: created from ubi0:1(rootfs)
[    1.513959] ubiblock: device ubiblock0_1 (rootfs) set to be root filesystem
[    1.521006] clk: Disabling unused clocks
[    1.525196] PM: genpd: Disabling unused power domains
[    1.534704] VFS: Mounted root (squashfs filesystem) readonly on device 254:0.
[    1.542036] Freeing unused kernel memory: 448K
[    1.546524] Run /sbin/init as init process
[    1.550609]   with arguments:
[    1.553576]     /sbin/init
[    1.556272]   with environment:
[    1.559401]     HOME=/
[    1.561781]     TERM=linux
[    1.744071] init: Console is alive
[    1.747607] init: - watchdog -
[    2.314331] kmodloader: loading kernel modules from /etc/modules-boot.d/*
[    2.349112] gpio_button_hotplug: loading out-of-tree module taints kernel.
[    2.362274] kmodloader: done loading kernel modules from /etc/modules-boot.d/*
[    2.370291] init: - preinit -
[    2.754579] mtk_soc_eth 15100000.ethernet eth0: configuring for fixed/2500base-x link mode
[    2.763070] mtk_soc_eth 15100000.ethernet eth0: Link is Up - 2.5Gbps/Full - flow control rx/tx
[    2.786760] mt7530-mdio mdio-bus:1f lan1: configuring for phy/gmii link mode
[    3.251481] random: crng init done
[    4.244844] mt7530-mdio mdio-bus:1f lan1: Link is Up - 1Gbps/Full - flow control off
[    6.978908] UBIFS (ubi0:2): Mounting in unauthenticated mode
[    6.984707] UBIFS (ubi0:2): background thread "ubifs_bgt0_2" started, PID 703
[    7.013887] UBIFS (ubi0:2): recovery needed
[    7.075182] UBIFS (ubi0:2): recovery completed
[    7.079691] UBIFS (ubi0:2): UBIFS: mounted UBI device 0, volume 2, name "rootfs_data"
[    7.087532] UBIFS (ubi0:2): LEB size: 126976 bytes (124 KiB), min./max. I/O unit sizes: 2048 bytes/2048 bytes
[    7.097448] UBIFS (ubi0:2): FS size: 57012224 bytes (54 MiB, 449 LEBs), max 459 LEBs, journal size 2793472 bytes (2 MiB, 22 LEBs)
[    7.109094] UBIFS (ubi0:2): reserved for root: 2692828 bytes (2629 KiB)
[    7.115704] UBIFS (ubi0:2): media format: w5/r0 (latest is w5/r0), UUID 73D922A4-CB0E-4EA2-8836-CE22B7412BEB, small LPT model
[    7.129986] mount_root: switching to ubifs overlay
[    7.138492] overlayfs: null uuid detected in lower fs '/', falling back to xino=off,index=off,nfs_export=off.
[    7.153223] urandom-seed: Seeding with /etc/urandom.seed
[    7.209070] mt7530-mdio mdio-bus:1f lan1: Link is Down
[    7.219580] procd: - early -
[    7.222571] procd: - watchdog -
[    7.768412] procd: - watchdog -
[    7.773277] procd: - ubus -
[    7.849584] procd: - init -
[    8.249220] kmodloader: loading kernel modules from /etc/modules.d/*
[    8.383154] ppdev: user-space parallel port driver
[    8.469182] lp: driver loaded but no devices found
[    8.473471] urngd: v1.0.2 started.
[    8.477561] GACT probability on
[    8.481886] Mirror/redirect action on
[    8.493098] u32 classifier
[    8.495809]     input device check on
[    8.499459]     Actions configured
[    8.512850] Simple TC action Loaded
[    8.532918] crypto-safexcel 10320000.crypto: EIP97:230(0,1,4,4)-HIA:270(0,5,5),PE:150/433(alg:7fcdfc00)/0/0/0
[    8.579799] Loading modules backported from Linux version v6.14.11-0-gb9d5d463c216
[    8.587401] Backport generated by backports.git v6.1.110-1-43-g2e32643b84e8
[    8.690134] xt_time: kernel timezone is -0000
[    9.017777] mt798x-wmac 18000000.wifi: HW/SW Version: 0x8a108a10, Build Time: 20240823161240a
[    9.017777] 
[    9.196225] mt798x-wmac 18000000.wifi: WM Firmware Version: ____000000, Build Time: 20240823161304
[    9.288503] mt798x-wmac 18000000.wifi: WA Firmware Version: DEV_000000, Build Time: 20240823161841
[    9.386218] mt798x-wmac 18000000.wifi: registering led 'mt76-phy0'
[    9.492869] mt798x-wmac 18000000.wifi: registering led 'mt76-phy1'
[    9.595809] PPP generic driver version 2.4.2
[    9.602163] NET: Registered PF_PPPOX protocol family
[    9.609745] wireguard: WireGuard 1.0.0 loaded. See www.wireguard.com for information.
[    9.617640] wireguard: Copyright (C) 2015-2019 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved.
[    9.641122] batman_adv: B.A.T.M.A.N. advanced 2025.2-openwrt-1 (compatibility version 15) loaded
[    9.655434] kmodloader: done loading kernel modules from /etc/modules.d/*
[    9.798480] mtdblock: MTD device 'Factory' is NAND, please consider using UBI block devices instead.
[   10.006937] mtdblock: MTD device 'Factory' is NAND, please consider using UBI block devices instead.
[   15.277543] mtk_soc_eth 15100000.ethernet eth0: Link is Down
[   15.298978] mtk_soc_eth 15100000.ethernet eth0: configuring for fixed/2500base-x link mode
[   15.312854] mtk_soc_eth 15100000.ethernet eth0: Link is Up - 2.5Gbps/Full - flow control rx/tx
[   15.331422] mt7530-mdio mdio-bus:1f lan2: configuring for phy/gmii link mode
[   15.355788] br-lan: port 1(lan2) entered blocking state
[   15.361025] br-lan: port 1(lan2) entered disabled state
[   15.366350] mt7530-mdio mdio-bus:1f lan2: entered allmulticast mode
[   15.372636] mtk_soc_eth 15100000.ethernet eth0: entered allmulticast mode
[   15.382260] mt7530-mdio mdio-bus:1f lan2: entered promiscuous mode
[   15.398554] mt7530-mdio mdio-bus:1f lan3: configuring for phy/gmii link mode
[   15.409417] br-lan: port 2(lan3) entered blocking state
[   15.414699] br-lan: port 2(lan3) entered disabled state
[   15.419951] mt7530-mdio mdio-bus:1f lan3: entered allmulticast mode
[   15.428246] mt7530-mdio mdio-bus:1f lan3: entered promiscuous mode
[   15.478006] mt7530-mdio mdio-bus:1f lan1: configuring for phy/gmii link mode
[   15.515835] br-mgmt: port 1(lan1) entered blocking state
[   15.521156] br-mgmt: port 1(lan1) entered disabled state
[   15.526613] mt7530-mdio mdio-bus:1f lan1: entered allmulticast mode
[   15.535179] mt7530-mdio mdio-bus:1f lan1: entered promiscuous mode
[   15.593475] mtk_soc_eth 15100000.ethernet eth1: PHY [mdio-bus:00] driver [MediaTek MT7981 PHY] (irq=POLL)
[   15.603131] mtk_soc_eth 15100000.ethernet eth1: configuring for phy/gmii link mode

Snapshot firmware uploaded to google drive folder.

ZBT-Z8013AX-C image:
https://drive.google.com/drive/folders/10hUS0wDL7X1h-BV2ctqOt5rIbpKFIfqX
2 Likes

Is there source code available for your build anywhere?

thank you, i have try installing your firmware using recovery method on this pdf.

It worked (though I haven’t tested functionality like USB, Wi-Fi, etc. yet). I hope you can upload the source code and submit it upstream to OpenWrt, because this build is too bloated.

Thank you for the good news that build did work. I agree, that build is bloated. I'm still in the process to get an understanding of what packages are useful for my needs.

Code is on my github account joelinux60. Contribution via Github is a new topic for me. Surely not ready for a good pull request.

1 Like

Here a link to adopted DTS:

Only clones around these days. Incredible similar to the Wavlink WL-WN551X3.

Commit

After learning from the topic https://forum.openwrt.org/t/zbt-z8103ax-d-upgrading-from-21-02-to-23-05/174582/100 and reviewing both your source code and the source code from https://forum.openwrt.org/u/tizbac, the important part is only:

partition@580000 {
    label = "ubi";
    reg = <0x580000 0x7280000>;
};

Based on testing in the topic above, this works on the -a, -x, -d, -e, and -g variants. I can confirm that it also works on the -c variant. I’m not sure about the older -d variant with the exact same specifications that use DTS z8103ax will work or not, but I think it would be better to submit a pull request for changing this UBI partition only.

btw this my source code that only modify that part, i am thinking too make pull request to openwrt but tizbac have already make pull request with different solution (he made new dts instead update x8103ax dts) please give me best ethic, what should i do :grinning_face:

*Note: For now, I have only tested the zbt-z8103ax-24.10.2 branch on Z810AX3-C variant. That branch uses the OpenWrt 24.02 stable release as its base.

this my build using openwrt 24.02 stable default .config but targeting z8103ax with my source code

https://github.com/Fauzanmhr/build-z8103ax/releases/download/2025.08.12-1821/openwrt-24.10.2-mediatek-filogic-zbtlink_zbt-z8103ax-squashfs-sysupgrade.bin

It would be appreciated if someone with a different variant could test this firmware as well.

Although it has the same specifications, the X8103AX comes with 4 Ethernet ports, no USB port, a mesh button, and a poorer design compared to the WL-WN551X3. The units sold in my country have an even worse design (see the picture I shared before) than the original AX3000 Dual Band WiFi 6 Mesh Router – ZBTWIFI, although they are cheaper. I got mine for only USD 12.30 (converted from indonesian rupiah).

Hello,
I have ZBT Z8103AX-D with stock firmware 24.03.20, which header is saying "Intelligent Router". I tried both images made by @fauzanmhr and @tizbac and neither one cannot be installed using the stock firmware upgrade page. It just says "Incorrect file type".

What is the best way to upgrade it? I do not have UART cables.

PS. I also could get the router to so called failsafe mode by pressing mesh button multiple times during boot. Wifi is off and ETH0 is the only ethernet port that works and I can ping the router. However, there is no webpage for failsafe mode so upgrading cannot be done that way either.

at least for the type C, unplug power, hold reset button and plug power, wait around 15 seconds, release reset and enter the ip address to flash the firmware.

1 Like

That's it! Thank you very much, worked like a charm! :+1:

Any new release firmware for this..?

June release too old for you ?

I meant specifically for this router. I don’t know what’s wrong, but when I use this firmware, my internet feels slower. So, I contacting ZBT for the original firmware, and back to it.

This uses the latest openwrt version 24.10.3, with a modified UBI part and use default .config as I mentioned before:
Release 2025.09.23-1429 · Fauzanmhr/build-z8103ax [Tested On zbt-z8103ax-c]

1 Like

Thank you. Will try it later.

Want to inform about PR in progress to add support for ZBT-Z8103AX-C

2 Likes