Dynalink DL-WRX36 Askey RT5010W IPQ8072A technical discussion

Post the looping boot sequence....

Here:

Thank you so much.

See ya.

There should be some output you're not catching, before the boot loop ...

It might stop at
S - Core 0 Frequency, 1651 MHz depending on version of original fw you had installed when you flashed OpenWRT, then start again when OpenWRT boots.

TLDR; please add U-boot boot-loader recovery instructions for the WRX36 on the device page.

When I try to follow factory flashing instructions, after booting initramfs, I get no filesystem it seems:

root@OpenWrt:~# cat /proc/mtd
dev: size erasesize name
root@OpenWrt:~# ubiformat /dev/mtd18 -y -f /tmp/openwrt-24.10.2-qualcommax-ipq80
7x-dynalink_dl-wrx36-squashfs-factory.ubi
libmtd: error!: cannot open "/dev/mtd18"
error 2 (No such file or directory)
libmtd: MTD subsystem is old and does not support sysfs, so MTD character device nodes have to exist
ubiformat: error!: cannot get information about "/dev/mtd18"
error 2 (No such file or directory)

Next, I tried to flash factory image from bootloader with AI help but I’m doing something wrong - can some point me in the right direction?

EDIT: looking at initramfs logs I see this:

[ 0.893206] loop: module loaded
[ 0.894663] nand: device found, Manufacturer ID: 0x2c, Chip ID: 0xaa
[ 0.895159] nand: Micron NAND 256MiB 1,8V 8-bit
[ 0.901750] nand: 256 MiB, SLC, erase size: 128 KiB, page size: 2048, OOB size: 64
[ 0.906036] nand: ECC (step, strength) = (512, 8) does not fit in OOB
[ 0.906047] qcom-nandc 79b0000.nand-controller: No valid ECC settings possible
[ 0.920241] qcom-nandc: probe of 79b0000.nand-controller failed with error -28

Cannot parse config file '/etc/fw_env.config': No such file or directory
Failed to find NVMEM device
Press the [f] key and hit [enter] to enter failsafe mode
Press the [1], [2], [3] or [4] key and hit [enter] to select the debug level

EDIT: I got impatient and used another AI. This one told me to write factory image

IPQ807x# nand write 0x44000000 0x0 0x10000000

Which resulted in instant and complete brick.

I have a second WRX36 - can I copy flash from the good to a bad one to recover?

EDIT: LOL. Looks like I created a e-waste since I don’t have tools to flash BGA chip.

They would be the same as the install using serial ?

I see. Seems like my issue run deeper: the whole file system was missing after sysupgrade and reset:

root@OpenWrt:~# cat /proc/mtd
dev: size erasesize name

probably due to ECC error (misconfiguration?):

[ 0.893206] loop: module loaded
[ 0.894663] nand: device found, Manufacturer ID: 0x2c, Chip ID: 0xaa
[ 0.895159] nand: Micron NAND 256MiB 1,8V 8-bit
[ 0.901750] nand: 256 MiB, SLC, erase size: 128 KiB, page size: 2048, OOB size: 64
[ 0.906036] nand: ECC (step, strength) = (512, 8) does not fit in OOB
[ 0.906047] qcom-nandc 79b0000.nand-controller: No valid ECC settings possible
[ 0.920241] qcom-nandc: probe of 79b0000.nand-controller failed with error -28

When I had bootloader working I needed instructions on how to restore whole UBIFS or fix the ECC issue, I guess.

Do you think it could be recovered by flashing Dynalink image via SPI if I ever got to figure out how to hook up to the flash chip?

EDIT: I think this could be the issue I was facing:

IPQ5018 addition commit 34d917265 breaks ipq807x/DL-WRX36 boot (due to NAND driver changes?) https://github.com/openwrt/openwrt/issues/17897

TLDR, but I'm not sure this one is in 24.10, what were you installing ?

version 24.10.2 Here’s a boot log:

Jumping to AARCH64 kernel via monitor
[ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
[ 0.000000] Linux version 6.6.93 (builder@buildhost) (aarch64-openwrt-linux-musl-gcc (OpenWrt GCC 13.3.0 r28739-d9340319c6) 13.3.0, GNU ld (GNU Binutils) 2.42) #0 SMP Mon Jun 23 20:40:36 2025
[ 0.000000] Machine model: Dynalink DL-WRX36
[ 0.000000] OF: reserved mem: 0x0000000040000000..0x0000000040ffffff (16384 KiB) nomap non-reusable nss@40000000
[ 0.000000] OF: reserved mem: 0x000000004a400000..0x000000004a5fffff (2048 KiB) nomap non-reusable tzapp@4a400000
[ 0.000000] OF: reserved mem: 0x000000004a600000..0x000000004a9fffff (4096 KiB) nomap non-reusable bootloader@4a600000
[ 0.000000] OF: reserved mem: 0x000000004aa00000..0x000000004aafffff (1024 KiB) nomap non-reusable sbl@4aa00000
[ 0.000000] OF: reserved mem: 0x000000004ab00000..0x000000004abfffff (1024 KiB) nomap non-reusable smem@4ab00000
[ 0.000000] OF: reserved mem: 0x000000004ac00000..0x000000004affffff (4096 KiB) nomap non-reusable memory@4ac00000
[ 0.000000] OF: reserved mem: 0x000000004b000000..0x0000000050efffff (97280 KiB) nomap non-reusable wcnss@4b000000
[ 0.000000] OF: reserved mem: 0x0000000050f00000..0x0000000050ffffff (1024 KiB) nomap non-reusable q6_etr_dump@50f00000
[ 0.000000] OF: reserved mem: 0x0000000051000000..0x00000000510fffff (1024 KiB) nomap non-reusable m3_dump@51000000
[ 0.000000] Zone ranges:
[ 0.000000] DMA [mem 0x0000000040000000-0x000000007fffffff]
[ 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-0x0000000040ffffff]
[ 0.000000] node 0: [mem 0x0000000041000000-0x000000004a3fffff]
[ 0.000000] node 0: [mem 0x000000004a400000-0x00000000510fffff]
[ 0.000000] node 0: [mem 0x0000000051100000-0x000000007fffffff]
[ 0.000000] Initmem setup node 0 [mem 0x0000000040000000-0x000000007fffffff]
[ 0.000000] psci: probing for conduit method from DT.
[ 0.000000] psci: PSCIv1.0 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.0
[ 0.000000] percpu: Embedded 18 pages/cpu s36200 r8192 d29336 u73728
[ 0.000000] Detected VIPT I-cache on CPU0
[ 0.000000] alternatives: applying boot alternatives
[ 0.000000] Kernel command line: console=ttyMSM0,115200n8 root=/dev/ubiblock0_1
[ 0.000000] Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
[ 0.000000] Inode-cache hash table entries: 65536 (order: 7, 524288 bytes, linear)
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 258048
[ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[ 0.000000] software IO TLB: SWIOTLB bounce buffer size adjusted to 1MB
[ 0.000000] software IO TLB: area num 4.
[ 0.000000] software IO TLB: mapped [mem 0x000000007eb00000-0x000000007ec00000] (1MB)
[ 0.000000] Memory: 878156K/1048576K available (8576K kernel code, 922K rwdata, 1660K rodata, 9408K init, 293K bss, 170420K reserved, 0K cma-reserved)
[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[ 0.000000] rcu: Hierarchical RCU implementation.
[ 0.000000] Tracing variant of Tasks RCU enabled.
[ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
[ 0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[ 0.000000] Root IRQ handler: 0xffffffc080010000
[ 0.000000] GICv2m: range[mem 0x0b00a000-0x0b00affc], SPI[448:479]
[ 0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
[ 0.000000] arch_timer: cp15 and mmio timer(s) running at 19.20MHz (virt/virt).
[ 0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x46d987e47, max_idle_ns: 440795202767 ns
[ 0.000001] sched_clock: 56 bits at 19MHz, resolution 52ns, wraps every 4398046511078ns
[ 0.000112] Calibrating delay loop (skipped), value calculated using timer frequency.. 38.40 BogoMIPS (lpj=192000)
[ 0.000126] pid_max: default: 32768 minimum: 301
[ 0.005083] Mount-cache hash table entries: 2048 (order: 2, 16384 bytes, linear)
[ 0.005097] Mountpoint-cache hash table entries: 2048 (order: 2, 16384 bytes, linear)
[ 0.009321] RCU Tasks Trace: Setting shift to 2 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=4.
[ 0.009543] rcu: Hierarchical SRCU implementation.
[ 0.009547] rcu: Max phase no-delay instances is 1000.
[ 0.010415] smp: Bringing up secondary CPUs ...
[ 0.011065] Detected VIPT I-cache on CPU1
[ 0.011167] CPU1: Booted secondary processor 0x0000000001 [0x410fd034]
[ 0.011824] Detected VIPT I-cache on CPU2
[ 0.011893] CPU2: Booted secondary processor 0x0000000002 [0x410fd034]
[ 0.012538] Detected VIPT I-cache on CPU3
[ 0.012605] CPU3: Booted secondary processor 0x0000000003 [0x410fd034]
[ 0.012673] smp: Brought up 1 node, 4 CPUs
[ 0.012682] SMP: Total of 4 processors activated.
[ 0.012687] CPU features: detected: 32-bit EL0 Support
[ 0.012692] CPU features: detected: CRC32 instructions
[ 0.012751] CPU features: emulated: Privileged Access Never (PAN) using TTBR0_EL1 switching
[ 0.012757] CPU: All CPU(s) started at EL1
[ 0.012760] alternatives: applying system-wide alternatives
[ 0.023220] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[ 0.023245] futex hash table entries: 1024 (order: 4, 65536 bytes, linear)
[ 0.024966] pinctrl core: initialized pinctrl subsystem
[ 0.026997] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[ 0.027558] DMA: preallocated 128 KiB GFP_KERNEL pool for atomic allocations
[ 0.027597] DMA: preallocated 128 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
[ 0.027631] DMA: preallocated 128 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
[ 0.028041] thermal_sys: Registered thermal governor 'step_wise'
[ 0.028099] cpuidle: using governor menu
[ 0.028281] ASID allocator initialised with 65536 entries
[ 0.054250] qcom,cpr4-apss-regulator b018000.cpr4-ctrl: CPR valid fuse count: 4
[ 0.056450] Modules: 27504 pages in range for non-PLT usage
[ 0.056456] Modules: 519024 pages in range for PLT usage
[ 0.060038] SCSI subsystem initialized
[ 0.060293] usbcore: registered new interface driver usbfs
[ 0.060350] usbcore: registered new interface driver hub
[ 0.060401] usbcore: registered new device driver usb
[ 0.060847] qcom_scm: convention: smc arm 64
[ 0.062519] clocksource: Switched to clocksource arch_sys_counter
[ 0.066470] NET: Registered PF_INET protocol family
[ 0.066615] IP idents hash table entries: 16384 (order: 5, 131072 bytes, linear)
[ 0.069401] tcp_listen_portaddr_hash hash table entries: 512 (order: 1, 8192 bytes, linear)
[ 0.069425] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
[ 0.069441] TCP established hash table entries: 8192 (order: 4, 65536 bytes, linear)
[ 0.069526] TCP bind hash table entries: 8192 (order: 6, 262144 bytes, linear)
[ 0.069797] TCP: Hash tables configured (established 8192 bind 8192)
[ 0.070364] MPTCP token hash table entries: 1024 (order: 2, 24576 bytes, linear)
[ 0.070538] UDP hash table entries: 512 (order: 2, 16384 bytes, linear)
[ 0.070577] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes, linear)
[ 0.070910] NET: Registered PF_UNIX/PF_LOCAL protocol family
[ 0.070948] PCI: CLS 0 bytes, default 64
[ 0.085005] workingset: timestamp_bits=46 max_order=18 bucket_order=0
[ 0.085744] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[ 0.085751] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
[ 0.089703] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 248)
[ 0.093266] qcom-qmp-usb-phy 78000.phy: supply vdda-phy not found, using dummy regulator
[ 0.093452] qcom-qmp-usb-phy 78000.phy: supply vdda-pll not found, using dummy regulator
[ 0.094717] qcom-qusb2-phy 79000.phy: supply vdd not found, using dummy regulator
[ 0.094884] qcom-qusb2-phy 79000.phy: supply vdda-pll not found, using dummy regulator
[ 0.094927] qcom-qusb2-phy 79000.phy: supply vdda-phy-dpdm not found, using dummy regulator
[ 0.095093] qcom-qusb2-phy 79000.phy: Registered Qcom-QUSB2 phy
[ 0.103456] Serial: 8250/16550 driver, 16 ports, IRQ sharing enabled
[ 0.107300] msm_serial 78b3000.serial: msm_serial: detected port #0
[ 0.107365] msm_serial 78b3000.serial: uartclk = 3686400
[ 0.107688] 78b3000.serial: ttyMSM0 at MMIO 0x78b3000 (irq = 20, base_baud = 230400) is a MSM
[ 0.107717] msm_serial: console setup on port #0
[ 0.107757] printk: console [ttyMSM0] enabled
[ 0.883809] msm_serial: driver initialized
[ 0.893060] loop: module loaded
[ 0.894497] nand: device found, Manufacturer ID: 0x2c, Chip ID: 0xaa
[ 0.895017] nand: Micron NAND 256MiB 1,8V 8-bit
[ 0.901608] nand: 256 MiB, SLC, erase size: 128 KiB, page size: 2048, OOB size: 64
[ 0.905896] nand: ECC (step, strength) = (512, 8) does not fit in OOB
[ 0.905907] qcom-nandc 79b0000.nand-controller: No valid ECC settings possible
[ 0.920088] qcom-nandc: probe of 79b0000.nand-controller failed with error -28

[ 0.928088] spmi spmi-0: PMIC arbiter version v2 (0x20010000)

Ok, I guess it was, just surprised no one's reported their WRX36's failing to boot, while upgrading to 24.10.2.

One of my three failed.

Ok, not no one, but one :slight_smile:

Me too, I was operating under the assumption that image is not the issue. I guess I should have used one of the NSS builds which are probably more popular and tested.

Can report that both of my in-service WRX36 units updated just fine a few days back.

Diff flash chips, or something ?

Thanks. Github bug report I referenced earlier shows differences in bootlog for a working and nonworking setup. I’m curious if yours matches. For example, is your flash IC:

“nand: Micron MT29F2G08ABBGAH4”

"nand: 256 MiB, SLC, erase size: 128 KiB, page size: 2048, OOB size: 128"

root@ermintrude:~# dmesg| grep -i nand
[    0.073684] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
[    0.885321] nand: device found, Manufacturer ID: 0x2c, Chip ID: 0xaa
[    0.885727] nand: Micron MT29F2G08ABBGAH4
[    0.892319] nand: 256 MiB, SLC, erase size: 128 KiB, page size: 2048, OOB size: 128
[    1.163513] nand: device found, Manufacturer ID: 0x2c, Chip ID: 0xaa
[    1.178332] nand: Micron MT29F2G08ABBGAH4
[    1.184719] nand: 256 MiB, SLC, erase size: 128 KiB, page size: 2048, OOB size: 128
[    1.189050] 25 qcomsmem partitions found on MTD device qcom_nand.0
[    1.196108] Creating 25 MTD partitions on "qcom_nand.0":

So yep, looks the same as that one.

I’m having an odd issue where UDP broadcast packets aren’t being reliably delivered from the LAN to wireless devices (works fine between different lan hosts). I get maybe 1 in 10 or 1 in 20 packets on the WLAN hosts.

I found that setting option multicast_to_unicast '0' in /etc/config/wireless and running wifi seems to fix the issue for a few days. After that the issue returns and I need to run wifi again to get broadcast working (strictly speaking, I’m not sure the config change is needed…it may be that wifi is enough to fix the issue without the option change)

Is this a known issue, and/or is there anything I can do about it?

Very known issue with a temp fix already committed in 24.10.2 and a permanent fix pending upstream in Linux for Ath11k.

Curious has anybody been dealing with an issue where The router can’t resolve hostnames randomly? I’ve been experiencing this odd issue with my Dynalink router even when factory resetting or reflashing the latest snapshot where sometimes my Dynalink router can’t resolve the static hostnames of devices plugged up to it.

It’s weird, they’ll have ip addresses assigned to the device, but it shows up no where on the router’s active connections or dhcp.leases. But I can connect to the devices via their assigned IPs without issue.

So https://github.com/openwrt/openwrt/commit/4b6886d9fd53c3d15fcfda4c36cbfa8d727bed55 was not sufficient? Did you opened new bugreport?