Adding OpenWrt support for Xiaomi AX3600 (Part 1)

MMC does not exist, so that is fine.
Wait, it just gets stuck or reboots?

Reboot, maybe this video can clarify it:

Is kmod-ppp required to use ecm? I am behind a cable modem, so no need for ppp, but if I select kmod-qca-nss-ecm it automatically selects kmod-ppp to be build.

are you getting full speed over LAN-LAN?

Just boot OpenWrt initramfs and flash the image from there.

@thorsten97 Yes, PPP and PPoE are required as the NSS-DRV and NSS-ECM require the code for compilation.

2 Likes

Is this the correct procedure?

PD: Thx, I find also this info: https://openwrt.org/docs/guide-user/installation/generic.flashing.tftp

That's really odd, maybe someone can check the other (older nss target) package branch ? I know that was working a few days ago but I won't have chance to check until next week

@hugomon Yes, pretty much.

@Apache14 The 11.4 NSS was working as well at the start of the last week

1 Like

I am using the AX3600-5.10-restart branch of robimarko, latest commit (c3ef4a4f8dcf77e38eebc5c1a82aae359422fdf0).

When you build it, you have to select quite a few additional packages after the target selection:

Firmware --> nss-firmware-ipq8074
Kernel modules --> Network devices --> kmod-qca-nss-dp, kmod-qca-nss-drv, kmod-qca-nss-drv-pppoe
Kernel modules --> Network support --> kmod-qca-nss-ecm

Then do a "make clean", and then you can start the build process ("make download", then "make -j4").

@thorsten97

Yes, I do. Almost 0% CPU load during gigabit uplink or downlink LAN-LAN. Same for PPPoE WAN - LAN traffic.

During AC wifi traffic, the single core load is massive non the less: at 250Mbits with a phone, I can see a single core load of 80-90%.

2 Likes

Thanks!

Please show your diffconfig too: the output of scripts/diffconfig.sh!

CONFIG_TARGET_ipq807x=y
CONFIG_TARGET_ipq807x_generic=y
CONFIG_TARGET_ipq807x_generic_DEVICE_redmi_ax6=y
CONFIG_PACKAGE_cgi-io=y
CONFIG_PACKAGE_ddns-scripts=y
CONFIG_PACKAGE_ddns-scripts-services=y
CONFIG_PACKAGE_htop=y
CONFIG_PACKAGE_iperf3=y
CONFIG_PACKAGE_iptables-mod-extra=y
CONFIG_PACKAGE_iptables-mod-physdev=y
CONFIG_PACKAGE_kmod-br-netfilter=y
CONFIG_PACKAGE_kmod-ipt-extra=y
CONFIG_PACKAGE_kmod-ipt-physdev=y
CONFIG_PACKAGE_kmod-qca-nss-drv=y
CONFIG_PACKAGE_kmod-qca-nss-drv-pppoe=y
CONFIG_PACKAGE_kmod-qca-nss-ecm=y
CONFIG_PACKAGE_libiwinfo-lua=y
CONFIG_PACKAGE_liblua=y
CONFIG_PACKAGE_liblucihttp=y
CONFIG_PACKAGE_liblucihttp-lua=y
CONFIG_PACKAGE_libncurses=y
CONFIG_PACKAGE_libubus-lua=y
CONFIG_PACKAGE_lua=y
CONFIG_PACKAGE_luci=y
CONFIG_PACKAGE_luci-app-ddns=y
CONFIG_PACKAGE_luci-app-firewall=y
CONFIG_PACKAGE_luci-app-opkg=y
CONFIG_PACKAGE_luci-base=y
CONFIG_PACKAGE_luci-lib-base=y
CONFIG_PACKAGE_luci-lib-ip=y
CONFIG_PACKAGE_luci-lib-ipkg=y
CONFIG_PACKAGE_luci-lib-jsonc=y
CONFIG_PACKAGE_luci-lib-nixio=y
CONFIG_PACKAGE_luci-mod-admin-full=y
CONFIG_PACKAGE_luci-mod-network=y
CONFIG_PACKAGE_luci-mod-status=y
CONFIG_PACKAGE_luci-mod-system=y
CONFIG_PACKAGE_luci-proto-ipv6=y
CONFIG_PACKAGE_luci-proto-ppp=y
CONFIG_PACKAGE_luci-theme-bootstrap=y
CONFIG_PACKAGE_nano=y
CONFIG_PACKAGE_nss-firmware-ipq8074=y
CONFIG_PACKAGE_rpcd=y
CONFIG_PACKAGE_rpcd-mod-file=y
CONFIG_PACKAGE_rpcd-mod-iwinfo=y
CONFIG_PACKAGE_rpcd-mod-luci=y
CONFIG_PACKAGE_rpcd-mod-rrdns=y
CONFIG_PACKAGE_terminfo=y
CONFIG_PACKAGE_uhttpd=y
CONFIG_PACKAGE_uhttpd-mod-ubus=y

Obviously, I am building for AX6, and some packages are not mandatory (nano, iperf3, htop etc.)

1 Like

After an error-free compilation I did not get a factory.bin, but factory.ubi. (openwrt-ipq807x-generic-xiaomi_ax3600-squashfs-nand-factory.ubi and openwrt-ipq807x-generic-xiaomi_ax3600-squashfs-nand-sysupgrade.bin)
I tried to load it in RAM using tftpboot and when I tried to load it afterwards with bootm it shows me an error:

Wrong Image Format for bootm command
ERROR: can't get kernel image!

You will also get a file with initramfs in the name, you use that for initramfs loading.
Then the factory.ubi for flashing using ubiformat.

1 Like

Absolutely true, I repeated the same process with openwrt-ipq807x-generic-xiaomi_ax3600-initramfs-fit-uImage.itb and it works perfectly.

Then from the LUCI's update menu I did it with openwrt-ipq807x-generic-xiaomi_ax3600-squashfs-nand-sysupgrade.bin and now it's stuck again, but at least there is hope.

Format: Log Type - Time(microsec) - Message - Optional Info
Log Type: B - Since Boot(Power On Reset),  D - Delta,  S - Statistic
S - QC_IMAGE_VERSION_STRING=BOOT.BF.3.3.1-00147
S - IMAGE_VARIANT_STRING=HAACANAZA
S - OEM_IMAGE_VERSION_STRING=CRM
S - Boot Config, 0x000002e5
B -       203 - PBL, Start
B -      2738 - bootable_media_detect_entry, Start
B -      3446 - bootable_media_detect_success, Start
B -      3450 - elf_loader_entry, Start
B -      6118 - auth_hash_seg_entry, Start
B -      6361 - auth_hash_seg_exit, Start
B -     68576 - elf_segs_hash_verify_entry, Start
B -    131271 - PBL, End
B -    145393 - SBL1, Start
B -    198372 - GCC [RstStat:0x10, RstDbg:0x600000] WDog Stat : 0x4
B -    204990 - pm_device_init, Start
B -    327905 - PM_SET_VAL:Skip
D -    122244 - pm_device_init, Delta
B -    330162 - pm_driver_init, Start
D -      5337 - pm_driver_init, Delta
B -    336689 - clock_init, Start
D -      2135 - clock_init, Delta
B -    340654 - boot_flash_init, Start
D -     11864 - boot_flash_init, Delta
B -    356301 - boot_config_data_table_init, Start
D -      3202 - boot_config_data_table_init, Delta - (575 Bytes)
B -    363804 - Boot Setting :  0x00000600
B -    367738 - CDT version:2,Platform ID:8,Major ID:1,Minor ID:0,Subtype:16
B -    374662 - sbl1_ddr_set_params, Start
B -    378505 - CPR configuration: 0x300
B -    381982 - cpr_init, Start
B -    384757 - Rail:0 Mode: 5 Voltage: 784000
B -    390003 - CL CPR settled at 736000mV
B -    392748 - Rail:1 Mode: 5 Voltage: 880000
B -    397018 - Rail:1 Mode: 7 Voltage: 888000
D -     16470 - cpr_init, Delta
B -    403789 - Pre_DDR_clock_init, Start
B -    407846 - Pre_DDR_clock_init, End
B -    411231 - DDR Type : PCDDR3
B -    416935 - do ddr sanity test, Start
D -      1067 - do ddr sanity test, Delta
B -    421693 - DDR: Start of HAL DDR Boot Training
B -    426420 - DDR: End of HAL DDR Boot Training
B -    432093 - DDR: Checksum to be stored on flash is -759409010
B -    442524 - Image Load, Start
D -    224358 - QSEE Image Loaded, Delta - (1373936 Bytes)
B -    666943 - Image Load, Start
D -        61 - SEC Image Loaded, Delta - (0 Bytes)
B -    674629 - Image Load, Start
D -     10736 - DEVCFG Image Loaded, Delta - (26004 Bytes)
B -    685426 - Image Load, Start
D -     25254 - RPM Image Loaded, Delta - (105964 Bytes)
B -    710772 - Image Load, Start
D -     96685 - APPSBL Image Loaded, Delta - (590068 Bytes)
B -    807609 - QSEE Execution, Start
D -        91 - QSEE Execution, Delta
B -    813404 - USB D+ check, Start
D -         0 - USB D+ check, Delta
B -    819809 - SBL1, End
D -    676704 - SBL1, Delta
S - Flash Throughput, 6750 KB/s  (2096547 Bytes,  310573 us)
S - DDR Frequency, 466 MHz
S - Core 0 Frequency, 800 MHz


U-Boot 2016.01 (May 15 2020 - 07:27:39 +0000), Build: jenkins-r3600_ota_publish-72

DRAM:  smem ram ptable found: ver: 1 len: 4
512 MiB
NAND:  ONFI device found
ID = 1590aac8
Vendor = c8
Device = aa
qpic_nand: changing oobsize to 64 from 128 bytes
SF: Unsupported flash IDs: manuf ff, jedec ffff, ext_jedec ffff
ipq_spi: SPI Flash not found (bus/cs/speed/mode) = (0/0/48000000/0)
256 MiB
MMC:   sdhci: Node Not found, skipping initialization

PCI Link Intialized
PCI1 is not defined in the device tree
In:    serial@78B3000
Out:   serial@78B3000
Err:   serial@78B3000
machid: 8010010
MMC Device 0 not found
eth5 MAC Address from ART is not valid
write phy_id=1, reg(0x8074):0x0670
write phy_id=2, reg(0x8074):0x0670
write phy_id=3, reg(0x8074):0x0670
write phy_id=4, reg(0x8074):0x0670
bootwait is on, bootdelay=5
Hit any key to stop autoboot:  0
 restore_defaults is set, enlarge xqup detect time
 trigger button release!
boot from rootfs 0
  miwifi: check crash in rmem !
ubi0: attaching mtd1
ubi0: scanning is finished
ubi0: attached mtd1 (name "mtd=0", size 35 MiB)
ubi0: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes
ubi0: min./max. I/O unit sizes: 2048/2048, sub-page size 2048
ubi0: VID header offset: 2048 (aligned 2048), data offset: 4096
ubi0: good PEBs: 286, bad PEBs: 0, corrupted PEBs: 0
ubi0: user volume: 2, internal volumes: 1, max. volumes count: 128
ubi0: max/mean erase counter: 2/0, WL threshold: 4096, image sequence number: 1696626347
ubi0: available PEBs: 25, total reserved PEBs: 261, PEBs reserved for bad PEB handling: 40
Read 0 bytes from volume kernel to 44000000
No size specified -> Using max size (4698112)
Could not find PCI in device tree
## Loading kernel from FIT Image at 44000000 ...
   Using 'config@ac04' configuration
   Trying 'kernel-1' kernel subimage
     Description:  ARM64 OpenWrt Linux-5.10.43
     Type:         Kernel Image
     Compression:  gzip compressed
     Data Start:   0x440000e8
     Data Size:    4540914 Bytes = 4.3 MiB
     Architecture: AArch64
     OS:           Linux
     Load Address: 0x41000000
     Entry Point:  0x41000000
     Hash algo:    crc32
     Hash value:   43ab0685
     Hash algo:    sha1
     Hash value:   d709eb1c567b61c115f66105d7afb3955a62252e
   Verifying Hash Integrity ... crc32+ sha1+ OK
## Loading fdt from FIT Image at 44000000 ...
   Using 'config@ac04' configuration
   Trying 'fdt-1' fdt subimage
     Description:  ARM64 OpenWrt xiaomi_ax3600 device tree blob
     Type:         Flat Device Tree
     Compression:  uncompressed
     Data Start:   0x44454c1c
     Data Size:    38031 Bytes = 37.1 KiB
     Architecture: AArch64
     Hash algo:    crc32
     Hash value:   47fcdfb5
     Hash algo:    sha1
     Hash value:   79ce6452c51eec9f77e8daca27987bfebc0b8c1d
   Verifying Hash Integrity ... crc32+ sha1+ OK
   Booting using the fdt blob at 0x44454c1c
   Uncompressing Kernel Image ... OK
   Loading Device Tree to 4a3f3000, end 4a3ff48e ... OK
Using machid 0x8010010 from environment

Starting kernel ...

Jumping to AARCH64 kernel via monitor
[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
[    0.000000] Linux version 5.10.43 (hugo@lmde) (aarch64-openwrt-linux-musl-gcc (OpenWrt GCC 8.4.0 r17063-c3ef4a4f8d) 8.4.0, GNU ld (GNU Binutils) 2.34) #0 SMP Tue Jun 22 16:40:14 2021
[    0.000000] Machine model: Xiaomi AX3600
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x0000000040000000-0x000000005fffffff]
[    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-0x000000005fffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000040000000-0x000000005fffffff]
[    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] psci: OSI mode supported.
[    0.000000] percpu: Embedded 19 pages/cpu s40920 r8192 d28712 u77824
[    0.000000] Detected VIPT I-cache on CPU0
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 129024
[    0.000000] Kernel command line: ubi.mtd=rootfs root=mtd:ubi_rootfs rootfstype=squashfs rootwait uart_en=1 root=/dev/ubiblock0_1
[    0.000000] Dentry cache hash table entries: 65536 (order: 7, 524288 bytes, linear)
[    0.000000] Inode-cache hash table entries: 32768 (order: 6, 262144 bytes, linear)
[    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[    0.000000] Memory: 374524K/524288K available (7166K kernel code, 836K rwdata, 1856K rodata, 1280K init, 302K bss, 149764K 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] rcu:     CONFIG_RCU_FANOUT set to non-default value of 32.
[    0.000000] rcu:     RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=4.
[    0.000000]  Tracing variant of Tasks RCU enabled.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
[    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
[    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[    0.000000] random: get_random_bytes called from start_kernel+0x350/0x570 with crng_init=0
[    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.000005] sched_clock: 56 bits at 19MHz, resolution 52ns, wraps every 4398046511078ns
[    0.000160] Calibrating delay loop (skipped), value calculated using timer frequency.. 38.40 BogoMIPS (lpj=76800)
[    0.000177] pid_max: default: 32768 minimum: 301
[    0.000314] Mount-cache hash table entries: 1024 (order: 1, 8192 bytes, linear)
[    0.000328] Mountpoint-cache hash table entries: 1024 (order: 1, 8192 bytes, linear)
[    0.001788] rcu: Hierarchical SRCU implementation.
[    0.001936] dyndbg: Ignore empty _ddebug table in a CONFIG_DYNAMIC_DEBUG_CORE build
[    0.002367] smp: Bringing up secondary CPUs ...
[    0.002931] Detected VIPT I-cache on CPU1
[    0.003000] CPU1: Booted secondary processor 0x0000000001 [0x410fd034]
[    0.003585] Detected VIPT I-cache on CPU2
[    0.003627] CPU2: Booted secondary processor 0x0000000002 [0x410fd034]
[    0.004251] Detected VIPT I-cache on CPU3
[    0.004291] CPU3: Booted secondary processor 0x0000000003 [0x410fd034]
[    0.004364] smp: Brought up 1 node, 4 CPUs
[    0.004379] SMP: Total of 4 processors activated.
[    0.004388] CPU features: detected: 32-bit EL0 Support
[    0.004396] CPU features: detected: CRC32 instructions
[    0.004454] CPU features: emulated: Privileged Access Never (PAN) using TTBR0_EL1 switching
[    0.004464] CPU: All CPU(s) started at EL1
[    0.004488] alternatives: patching kernel code
[    0.011603] KASLR disabled due to lack of seed
[    0.011761] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[    0.011782] futex hash table entries: 1024 (order: 4, 65536 bytes, linear)
[    0.011980] pinctrl core: initialized pinctrl subsystem
[    0.013095] NET: Registered protocol family 16
[    0.013626] DMA: preallocated 128 KiB GFP_KERNEL pool for atomic allocations
[    0.013666] DMA: preallocated 128 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
[    0.013704] DMA: preallocated 128 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
[    0.014345] thermal_sys: Registered thermal governor 'step_wise'
[    0.016056] cpuidle: using governor ladder
[    0.016333] NET: Registered protocol family 42
[    0.016531] ASID allocator initialised with 65536 entries
[    0.085272] usbcore: registered new interface driver usbfs
[    0.085342] usbcore: registered new interface driver hub
[    0.085402] usbcore: registered new device driver usb
[    0.085678] qcom_scm: convention: smc arm 64
[    0.087074] clocksource: Switched to clocksource arch_sys_counter
[    0.088019] NET: Registered protocol family 2
[    0.088163] IP idents hash table entries: 8192 (order: 4, 65536 bytes, linear)
[    0.088737] tcp_listen_portaddr_hash hash table entries: 256 (order: 0, 4096 bytes, linear)
[    0.088760] TCP established hash table entries: 4096 (order: 3, 32768 bytes, linear)
[    0.088810] TCP bind hash table entries: 4096 (order: 4, 65536 bytes, linear)
[    0.088889] TCP: Hash tables configured (established 4096 bind 4096)
[    0.088983] UDP hash table entries: 256 (order: 1, 8192 bytes, linear)
[    0.089013] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes, linear)
[    0.089173] NET: Registered protocol family 1
[    0.089207] PCI: CLS 0 bytes, default 64
[    0.090506] workingset: timestamp_bits=46 max_order=17 bucket_order=0
[    0.094424] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.094438] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
[    0.097198] qcom-qmp-phy 84000.phy: Registered Qcom-QMP phy
[    0.098694] qcom-pcie 20000000.pci: host bridge /soc/pci@20000000 ranges:
[    0.098744] qcom-pcie 20000000.pci:       IO 0x0020200000..0x00202fffff -> 0x0020200000
[    0.098770] qcom-pcie 20000000.pci:      MEM 0x0020220000..0x002fffffff -> 0x0020220000
[    0.319080] qcom-pcie 20000000.pci: Link up
[    0.319269] qcom-pcie 20000000.pci: PCI host bridge to bus 0000:00
[    0.319284] pci_bus 0000:00: root bus resource [bus 00-ff]
[    0.319299] pci_bus 0000:00: root bus resource [io  0x0000-0xfffff] (bus address [0x20200000-0x202fffff])
[    0.319310] pci_bus 0000:00: root bus resource [mem 0x20220000-0x2fffffff]
[    0.319356] pci 0000:00:00.0: [17cb:1002] type 01 class 0x060400
[    0.319382] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0x00000fff]
[    0.319465] pci 0000:00:00.0: PME# supported from D0 D3hot D3cold
[    0.322557] pci 0000:01:00.0: [168c:0050] type 00 class 0x028000
[    0.322760] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x001fffff 64bit]
[    0.323096] pci 0000:01:00.0: reg 0x30: [mem 0x00000000-0x0000ffff pref]
[    0.323786] pci 0000:01:00.0: supports D1
[    0.323796] pci 0000:01:00.0: PME# supported from D0 D1 D3hot
[    0.326771] pci 0000:00:00.0: BAR 8: assigned [mem 0x20300000-0x205fffff]
[    0.326789] pci 0000:00:00.0: BAR 9: assigned [mem 0x20600000-0x207fffff 64bit pref]
[    0.326802] pci 0000:00:00.0: BAR 0: assigned [mem 0x20220000-0x20220fff]
[    0.326816] pci 0000:00:00.0: BAR 7: assigned [io  0x1000-0x1fff]
[    0.326832] pci 0000:01:00.0: BAR 0: assigned [mem 0x20400000-0x205fffff 64bit]
[    0.326932] pci 0000:01:00.0: BAR 6: assigned [mem 0x20300000-0x2030ffff pref]
[    0.326944] pci 0000:00:00.0: PCI bridge to [bus 01-ff]
[    0.326955] pci 0000:00:00.0:   bridge window [io  0x1000-0x1fff]
[    0.326967] pci 0000:00:00.0:   bridge window [mem 0x20300000-0x205fffff]
[    0.326979] pci 0000:00:00.0:   bridge window [mem 0x20600000-0x207fffff 64bit pref]
[    0.328929] pcieport 0000:00:00.0: PME: Signaling with IRQ 102
[    0.330057] bam-dma-engine 704000.dma: num-channels unspecified in dt
[    0.330074] bam-dma-engine 704000.dma: num-ees unspecified in dt
[    0.335183] Serial: 8250/16550 driver, 2 ports, IRQ sharing disabled
[    0.335837] msm_serial 78b3000.serial: msm_serial: detected port #0
[    0.335879] msm_serial 78b3000.serial: uartclk = 3686400
[    0.335932] 78b3000.serial: ttyMSM0 at MMIO 0x78b3000 (irq = 22, base_baud = 230400) is a MSM
[    0.335958] msm_serial: console setup on port #0
[    1.108061] printk: console [ttyMSM0] enabled
[    1.113217] msm_serial: driver initialized
[    1.121471] loop: module loaded
[    1.122685] nand: device found, Manufacturer ID: 0xc8, Chip ID: 0xaa
[    1.124039] nand: ESMT GD9FS2G8F2A
[    1.130631] nand: 256 MiB, SLC, erase size: 128 KiB, page size: 2048, OOB size: 128
[    1.134081] 17 qcomsmem partitions found on MTD device qcom_nand.0
[    1.141392] Creating 17 MTD partitions on "qcom_nand.0":
[    1.147637] 0x000000000000-0x000000100000 : "0:sbl1"
[    1.154325] 0x000000100000-0x000000200000 : "0:mibib"
[    1.159206] 0x000000200000-0x000000500000 : "0:qsee"
[    1.165615] 0x000000500000-0x000000580000 : "0:devcfg"
[    1.168817] 0x000000580000-0x000000600000 : "0:rpm"
[    1.173760] 0x000000600000-0x000000680000 : "0:cdt"
[    1.178542] 0x000000680000-0x000000700000 : "0:appsblenv"
[    1.183411] 0x000000700000-0x000000800000 : "0:appsbl"
[    1.189335] 0x000000800000-0x000000880000 : "0:art"
[    1.193988] 0x000000880000-0x000000900000 : "bdata"
[    1.198771] 0x000000900000-0x000000980000 : "crash"
[    1.203713] 0x000000980000-0x000000a00000 : "crash_syslog"
[    1.208509] 0x000000a00000-0x000002dc0000 : "rootfs"
[    1.217429] random: fast init done
[    1.241020] mtd: device 12 (rootfs) set to be root filesystem
[    1.241300] mtdsplit: no squashfs found in "rootfs"
[    1.245764] 0x000002dc0000-0x00000adc0000 : "rootfs_1"
[    1.345241] 0x00000adc0000-0x00000cc80000 : "overlay"
[    1.368341] 0x00000cc80000-0x00000cd00000 : "rsvd0"
[    1.369134] 0x00000cd00000-0x00000d600000 : "0:wififw"
[    1.385065] spmi spmi-0: PMIC arbiter version v2 (0x20010000)
[    1.386112] pmd9655_s3: supplied by e-smps1-reg
[    1.390082] pmd9655_s4: supplied by e-smps1-reg
[    1.394409] pmd9655_ldo11: supplied by e-smps1-reg
[    1.399627] libphy: Fixed MDIO Bus: probed
[    1.404137] libphy: ipq4019_mdio: probed
[    1.409370] i2c /dev entries driver
[    1.415589] cpufreq: cpufreq_online: CPU0: Running at unlisted initial frequency: 800000 KHz, changing to: 1017600 KHz
[    1.416484] sdhci: Secure Digital Host Controller Interface driver
[    1.425680] sdhci: Copyright(c) Pierre Ossman
[    1.431808] sdhci-pltfm: SDHCI platform and OF driver helper
[    1.438609] remoteproc remoteproc0: cd00000.q6v5_wcss is available
[    1.442911] NET: Registered protocol family 10
[    1.448701] Segment Routing with IPv6
[    1.452447] NET: Registered protocol family 17
[    1.456184] Bridge firewalling registered
[    1.460452] 8021q: 802.1Q VLAN Support v1.8
[    1.476219] ubi0: attaching mtd12
[    1.627977] ubi0: scanning is finished
[    1.633674] ubi0: attached mtd12 (name "rootfs", size 35 MiB)
[    1.633704] ubi0: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes
[    1.638411] ubi0: min./max. I/O unit sizes: 2048/2048, sub-page size 2048
[    1.645174] ubi0: VID header offset: 2048 (aligned 2048), data offset: 4096
[    1.652031] ubi0: good PEBs: 286, bad PEBs: 0, corrupted PEBs: 0
[    1.658800] ubi0: user volume: 2, internal volumes: 1, max. volumes count: 128
[    1.665050] ubi0: max/mean erase counter: 2/0, WL threshold: 4096, image sequence number: 1696626347
[    1.672085] ubi0: available PEBs: 25, total reserved PEBs: 261, PEBs reserved for bad PEB ha▒[    1.690730] Waiting for root device /dev/ubiblock0_1...
[   31.711085] pmd9655_ldo11: disabling

Do you not understand that you need to flash it with ubiformat first time?

I wasn't aware of that requirement, otherwise I would have done it that way. Please understand that there are people who are not very expert and, although it seems obvious to you, it is not obvious to them (I am one of them, as it's evident).
With that information everything is now working, thank you very much.
Although the commands are already in this thread, I leave them for the rest of the people who had the same problem as me:

  1. Set fixed IP in computer to 192.168.1.100

  2. Launch Tftp server (I used Tiny PXE Server)

  3. Select openwrt-ipq807x-generic-xiaomi_ax3600-initramfs-fit-uImage.itb as boot in Tiny PXE

  4. Using Putty serial conected to the router, stop the boot, then:

setenv ipaddr 192.168.1.1
setenv serverip 192.168.1.100
tftpboot openwrt-ipq807x-generic-xiaomi_ax3600-initramfs-fit-uImage.itb
bootm
  1. Move the file openwrt-ipq-ipq807x_64-xiaomi_ax3600-squashfs-nand-factory.bin to /tmp (I used WinSCP)
  2. With Putty, SSH connect to the router:
ubiformat /dev/mtd12 -y -f /tmp/openwrt-ipq-ipq807x_64-xiaomi_ax3600-squashfs-nand-factory.bin
reboot

7. Move the file openwrt_ipq807x_generic_xiaomi_ax3600_squashfs_nand_sysupgra.bin to /tmp (I used WinSCP)
8. With Putty, SSH connect to the router:
sysupgrade openwrt_ipq807x_generic_xiaomi_ax3600_squashfs_nand_sysupgra.bin

Corrected from:

4 Likes

Whats the purpose of the sysupgrade at the end?

Good day all. Some very noob questions:

  1. To use the initramfs and ubiformat (seems this is av after flashing the initramfs image) tools you first need to enable SSH on the device using the older firmware right ?

  2. Is the build 5.10 restart the latest one ? Is it stable apart from the memory leak for regular LAN, WAN and PPPoE internet ? Can schedule overnight restarts if needed :slight_smile:

  3. Are the builds generated specifically for each AX3600 router (something specific to each router, calibrations etc) or are generic ? If they are generic can any (perhaps @hugomon ) share the compiled versions sysupgrade / initramfs / factory.ubi (don't have access to a Linux box and also not experienced in compiling from git sources) ?

  4. Is support starting to be added for AX based routers in LuCI ? Was something mentioned in the thread.

  5. Is there a difference in internal partitioning between the chineze and international official firmware versions ? There was some discussion but did not get this correctly. Is it needed to revert to international version before trying to flash anything ? Or all flashing start with the 1.0.7 (if I recall correctly) version where SSH can be enabled ?

And last but not least, great job to all involved in getting good openwrt support with NSS offloading for this router. The stock firmware is rubbish. Cannot even use a custom DNS server (Pi-Hole) in DHCP in the International firmware, only the chinese one.

Thanks.

1 Like

It is part of the commands described at Adding OpenWrt support for Xiaomi AX3600 (Part 1) - #922 by efsg regarding the use of ubiformat:

From your question, I guess that it is not necessary and is only used when upgrading the system.

1 Like

Yes, you use ubiformat on both rootfs partitions when installing.

Sysupgrade is only for updating later.