XIAOMI AIOT AX3600 SoftBricked

Hi my Xiaomi AX3600 stopped working and weird stuff happen as it wont accept any image in recovery or normal mode(Tftpboot/bootm/dhcp)

In U-Boot i see only

IPQ807x# bootm                                                                  
## Loading kernel from FIT Image at 44000000 ...                                
   Using 'config@ac04' configuration                                            
   Trying 'kernel-1' kernel subimage                                            
     Description:  ARM64 OpenWrt Linux-5.15.137                                 
     Type:         Kernel Image                                                 
     Compression:  gzip compressed                                              
     Data Start:   0x440000ec                                                   
     Data Size:    12348293 Bytes = 11.8 MiB                                    
     Architecture: AArch64                                                      
     OS:           Linux                                                        
     Load Address: 0x41000000                                                   
     Entry Point:  0x41000000                                                   
     Hash algo:    crc32                                                        
     Hash value:   ca8e9dd6                                                     
     Hash algo:    sha1                                                         
     Hash value:   2c5fcaa43151941e5b4eeef48e58bc51eb42f0fb                     
   Verifying Hash Integrity ... crc32 error!                                    
Bad hash value for 'hash-1' hash node in 'kernel-1' image node                  
Bad Data Hash                                                                   
ERROR: can't get kernel image!                                                  
IPQ807x#                                                                        

Can someone help me?
Router is European version and U-boot says

IPQ807x# is_sec_boot_enabled
is_sec_boot_enabled
secure boot fuse is not enabled
IPQ807x#
so it should work with any image(i think :slight_smile: )

You have serial console access, so tftpboot and initramfs image and write a new image from there.

In recovery mode when flashing stock FW it says

 detect button press, continue check 5 secs                                     
 detect button pressed 5 secs !                                                 
 confirm to launch xq_upgrade !                                                 
 cmd=dhcp                                                                       
                                                                                
Net:   MAC0 addr:9c:9d:7e:xx:xx:xx                                              
PHY ID1: 0x4d                                                                   
PHY ID2: 0xd0b1                                                                 
EDMA ver 1 hw init                                                              
Num rings - TxDesc:1 (0-0) TxCmpl:1 (7-7)                                       
RxDesc:1 (15-15) RxFill:1 (7-7)                                                 
ipq807x_edma_alloc_rings: successfull                                           
ipq807x_edma_setup_ring_resources: successfull                                  
ipq807x_edma_configure_rings: successfull                                       
ipq807x_edma_hw_init: successfull                                               
board_eth_init: ipq807x_edma_init successed                                     
eth0                                                                            
ipq807x_eth_halt: done                                                          
eth0 PHY0 Down Speed :10 Half duplex                                            
eth0 PHY1 up Speed :10 Full duplex                                              
eth0 PHY2 Down Speed :10 Half duplex                                            
eth0 PHY3 up Speed :1000 Full duplex                                            
eth0 PHY4 Down Speed :10 Half duplex                                            
eth0 PHY5 Down Speed :10 Half duplex                                            
ipq807x_eth_init: done                                                          
BOOTP broadcast 1                                                               
*** Unhandled DHCP Option in OFFER/ACK: 13                                      
*** Unhandled DHCP Option in OFFER/ACK: 175                                     
*** Unhandled DHCP Option in OFFER/ACK: 13                                      
*** Unhandled DHCP Option in OFFER/ACK: 175                                     
DHCP client bound to address 192.168.31.1 (226 ms)                              
Using eth0 device                                                               
TFTP from server 192.168.31.100; our IP address is 192.168.31.1                 
Filename 'miwifi_r3600_firmware_5da25_1.0.17.bin'.                              
Load address: 0x44000000                                                        
Loading: *                                                                      
Got TFTP_OACK: TFTP remote port: changes from 69 to 59246                       
#################################################################               
         #################################################################      
         #################################################################      
         #################################################################      
         #################################################################      
         #################################################################      
         #################################################################      
         #################################################################      
         #################################################################      
         #################################################################      
         #################################################################      
         #################################################################      
         #################################################################      
         #################################################################      
         #################################################################      
         #################################################################      
         #################################################################      
         #################################################################      
         #################################################################      
         #################################################################      
         #################################################################      
         #################################################################      
         #################################################################      
         #################################################################      
         #################################################################      
         #################################################################      
         #################################################################      
         #################################################################      
         #################################################################      
         ############################################                           
         4.8 MiB/s                                                              
done                                                                            
Bytes transferred = 28312508 (1b003bc hex)                                      
ipq807x_eth_halt: done                                                          
LoadAddr=44000000 NetBootFileXferSize= 1b003bc                                  
CRC verify failed!                                                              
Image verify failed!                                                            
========Upgrade fail!========    

I may be using it wrong but when booting initramfs image i have this

TFTP from server 192.168.31.100; our IP address is 192.168.31.1                 
Filename 'openwrt-23.05.0-ipq807x-generic-xiaomi_ax3600-initramfs-factory.ubi'. 
Load address: 0x44000000                                                        
Loading: *                                                                      
Got TFTP_OACK: TFTP remote port: changes from 69 to 54037                       
#################################################################               
         #################################################################      
         #################################################################      
         #################################################################      
         #################################################################      
         #################################################################      
         #################################################################      
         #################################################################      
         #################################################################      
         #################################################################      
         #################################################################      
         #################################################################      
         #################################################################      
         ################################################                       
         4.8 MiB/s                                                              
done                                                                            
Bytes transferred = 13107200 (c80000 hex)                                       
ipq807x_eth_halt: done                                                          
IPQ807x# bootm                                                                  
Wrong Image Format for bootm command                                            
ERROR: can't get kernel image!                                                  
IPQ807x#                                          

openwrt-qualcommax-ipq807x-xiaomi_ax3600-initramfs-uImage.itb?

Where do i get this file? Only ones i have found are with

ipq807x-generic

in name

TFTP from server 192.168.31.100; our IP address is 192.168.31.1                 
Filename 'openwrt-23.05.2-ipq807x-generic-xiaomi_ax3600-initramfs-uImage.itb'.  
Load address: 0x44000000                                                        
Loading: *                                                                      
Got TFTP_OACK: TFTP remote port: changes from 69 to 64260                       
#################################################################               
         #################################################################      
         #################################################################      
         #################################################################      
         #################################################################      
         #################################################################      
         #################################################################      
         #################################################################      
         #################################################################      
         #################################################################      
         #################################################################      
         #################################################################      
         #################################################################      
         4.8 MiB/s                                                              
done                                                                            
Bytes transferred = 12392876 (bd19ac hex)                                       
ipq807x_eth_halt: done                                                          
IPQ807x# bootm                                                                  
## Loading kernel from FIT Image at 44000000 ...                                
   Using 'config@ac04' configuration                                            
   Trying 'kernel-1' kernel subimage                                            
     Description:  ARM64 OpenWrt Linux-5.15.137                                 
     Type:         Kernel Image                                                 
     Compression:  gzip compressed                                              
     Data Start:   0x440000ec                                                   
     Data Size:    12348293 Bytes = 11.8 MiB                                    
     Architecture: AArch64                                                      
     OS:           Linux                                                        
     Load Address: 0x41000000                                                   
     Entry Point:  0x41000000                                                   
     Hash algo:    crc32                                                        
     Hash value:   ca8e9dd6                                                     
     Hash algo:    sha1                                                         
     Hash value:   2c5fcaa43151941e5b4eeef48e58bc51eb42f0fb                     
   Verifying Hash Integrity ... crc32 error!                                    
Bad hash value for 'hash-1' hash node in 'kernel-1' image node                  
Bad Data Hash                                                                   
ERROR: can't get kernel image!                                                  
IPQ807x#                                                                        

this is the only one with .itb extension that i have
Sorry for my incompetence im noob at software side

I dont understand why there is always CRC error when it could work :frowning:

Before type bootm try call command crc32:

IPQ807x> crc32
crc32 - checksum calculation

Usage:
crc32 address count [addr]
    - compute CRC32 checksum [save at addr]

IPQ807x> crc32 0x44000000 0xbd19ac

When I do CRC32 check it just reboots(bootm still dont work)

IPQ807x# crc32 0x44000000 12392876                   
data abort                                                                      
pc : [<4a950cf4>]          lr : [<e2b87a14>]                                    
reloc pc : [<4a950cf4>]    lr : [<e2b87a14>]                                    
sp : 4a7df884  ip : 00000002     fp : 4a950d78                                  
r10: 12392876  r9 : 4a7dfea0     r8 : 44000000                                  
r7 : 00000002  r6 : 4a7e2194     r5 : 56392874  r4 : 4ac00000                   
r3 : 4a957500  r2 : 12392874     r1 : 44000000  r0 : e2011303                   
Flags: nzCv  IRQs off  FIQs off  Mode SVC_32                                    
Resetting CPU ...                                                               
                                                                                
resetting ...                                                                   

EDIT:
Used different formula and it kinda worked

IPQ807x# crc32 0x44000000 0xbd19ac                                              
crc32 for 44000000 ... 44bd19ab ==> 6370eb41                                    
IPQ807x#                                                                        


I wonder is my last hope to use Programmer on nand
I own Xgecu T48 so technically im able to write whole nand with proper image.

I spotted one error(if im right) and it seems to be my problem

IPQ807x# crc32 0x44000000 0xbd19ac                                              
crc32 for 44000000 ... 44bd19ab ==> 6370eb41                                    
IPQ807x# bootm                                                                  
## Loading kernel from FIT Image at 44000000 ...                                
   Using 'config@ac04' configuration                                            
   Trying 'kernel-1' kernel subimage                                            
     Description:  ARM64 OpenWrt Linux-5.15.137                                 
     Type:         Kernel Image                                                 
     Compression:  gzip compressed                                              
     Data Start:   0x440000ec                                                   
     Data Size:    12348293 Bytes = 11.8 MiB                                    
     Architecture: AArch64                                                      
     OS:           Linux                                                        
     Load Address: 0x41000000                                                   
     Entry Point:  0x41000000                                                   
     Hash algo:    crc32                                                        
     Hash falue:   ca8e9dd6                                                     
     Hash algo:    sha1                                                         
     Hash value:   2c5fcaa43151941e5b4eeef48e58bc51eb42f0fb                     
   Verifying Hash Integrity ... crc32 error!                                    
Bad hash value for 'hash-1' hash node in 'kernel-1' image node                  
Bad Data Hash                                                                   
ERROR: can't get kernel image!                                                  
IPQ807x#                                                                        

It is image size different as tftp-ed image is 12392876 in size and bootm says 12348293

And in reality, what is the amount of crc in this file?
Its file? https://downloads.openwrt.org/releases/23.05.2/targets/ipq807x/generic/openwrt-23.05.2-ipq807x-generic-xiaomi_ax3600-initramfs-uImage.itb
crc32 = 0x53339DF9

12392876 - size of FDT-image
12348293 - size of kernel-1

proof

Try this:

setenv loadaddr 0x46000000
tftpboot
crc32 0x46000000 0xbd19ac  

Try set 10Mbps ethernet connection.

It passes but after bootm it bootloops still telling me that hash is wrong

IPQ807x# <INTERRUPT>
                                                          

Q807x# setenv loadaddr 0x46000000
                  

Q807x# saveenv
                                                               
Saving Environment to NAND...
                                                 
Erasing NAND...
              
                                                
Erasing at 0x680000 --  25% complete.
                                          
Erasing at 0x6a0000 --  50% complete.
                                          
Erasing at 0x6c0000 --  75% complete.
                                          
Erasing at 0x6e0000 -- 100% complete.
                                         
Writing to NAND... OK
                
                                        

Q807x# tftpboot
                                                      
ipq807x_eth_halt: done
                                                        
eth0 PHY0 Down Speed :10 Half duplex
                                          
eth0 PHY1 up Speed :10 Full duplex
  
                                         
eth0 PHY2 Down Speed :10 Half duplex
                                          
eth0 PHY3 up Speed :10 Full duplex

                                         
eth0 PHY4 Down Speed :10 Half duplex

                                         
eth0 PHY5 Down Speed :10 Half duplex

                                         
ipq807x_eth_init: done
              
                                         
Using eth0 device
     
                                                       
TFTP from server 192.168.31.100; our IP address is 192.168.31.101
             
Filename 'openwrt-23.05.2-ipq807x-generic-xiaomi_ax3600-initramfs-uImage.itb'.

Load address: 0x46000000
                                                     

Loading: *
             
                                                     
Got TFTP_OACK: TFTP remote port: changes from 69 to 57057
                     
#################################################################
             
	        #################################################################
    
	        #################################################################

   
	        #################################################################

   
	        #################################################################

   
	        #################################################################

   
	        #################################################################

   
	        #################################################################

   
	        #################################################################

   
	        #################################################################

   
	        #################################################################

   
	        #################################################################

   
	        #################################################################

   
	        4.7 MiB/s
                                                        
   
done
              
                                                           
Bytes transferred = 12392876 (bd19ac hex)
                                     
ipq807x_eth_halt: done
                   
                                    

Q807x# crc32 0x46000000 0xbd19ac crc32 0x46000000 0xbd19ac 
                  
crc32 for 46000000 ... 46bd19ab ==> 53339df9
                                  

Q807x# bootm
                               
                                 
## Loading kernel from FIT Image at 46000000 ...
                              
   Using 'config@ac04' configuration
            
                             
   Trying 'kernel-1' kernel subimage

                                         
     Description:  ARM64 OpenWrt Linux-5.15.137
                               
     Type:         Kernel Image
                
                              
     Compression:  gzip compressed
                                            
     Data Start:   0x460000ec
     
                                           
     Data Size:    12348293 Bytes = 11.8 MiB
                                  
     Architecture: AArch64
                  
                                 
     OS:           Linux
  
                                                   
     Load Address: 0x41000000
                                                 
     Entry Point:  0x41000000

                                                
     Hash algo:    crc32
     
                                                
     Hash value:   ca8e9dd6
                                                   
     Hash algo:    sha1
    
                                                  
     Hash value:   2c5fcaa43151941e5b4eeef48e58bc51eb42f0fb
                   
   Verifying Hash Integrity ... crc32+ sha1+ OK
            
                  
## Loading fdt from FIT Image at 46000000 ...
  
                              
   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:   0x46bc6db4
  
                                              
	    DatĆôÄB>˝ý!­¤ý©6J˘F©FĄBŻ…J#ŘFçOwrite 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:  5  4  3  2  1  0 

              
 trigger button release!

 ... crc32+ sha1+ OK
            
                  
Boot failure detected on both systems

db4
    
                              
boot from rootfs 0

el Image ... OK
       
                                  
  miwifi: check crash in rmem !  

end 4a3ff6b0 ... OK
                       
ubi0: attaching mtd1

from environment
                
                      
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/1, WL threshold: 4096, image sequence number: 16
76478972
                                                                      
ubi0: available PEBs: 28, total reserved PEBs: 258, PEBs reserved for bad PEB ha
ndling: 40
                                                                    
Read 0 bytes from volume kernel to 44000000
                                   
No size specified -> Using max size (4317184)
                                 
Could not find PCI in device tree
            
                                
Boot failure detected on both systems
                                         
## Loading kernel from FIT Image at 44000000 ...
                              
   Using 'config@ac04' configuration
            
                             
   Trying 'kernel@1' kernel subimage

                                         
     Description:  ARM64 OpenWrt Linux-4.4.60
                                 
     Type:         Kernel Image
              
                                
     Compression:  gzip compressed
                                            
     Data Start:   0x440000e8
     
                                           
     Data Size:    3961632 Bytes = 3.8 MiB
                                    
     Architecture: AArch64
                
                                   
     OS:           Linux
  
                                                   
     Load Address: 0x41080000
                                                 
     Entry Point:  0x41080000

                                                
     Hash algo:    crc32
     
                                                
     Hash value:   1959a154
                                                   
     Hash algo:    sha1
    
                                                  
     Hash value:   0f5663def0580cbaa75e6979dd20b0c1414d7b88
                   
   Verifying Hash Integrity ... crc32 error!
               
                  
Bad hash value for 'hash@1' hash node in 'kernel@1' image node
                
Bad Data Hash
                                                 
               
ERROR: can't get kernel image!
                                                
Erasing NAND...
               
                                               
Erasing at 0x680000 --  25% complete.
                                          
Erasing at 0x6a0000 --  50% complete.
                                          
Erasing at 0x6c0000 --  75% complete.
                                          
Erasing at 0x6e0000 -- 100% complete.
                                         
Writing to NAND... OK
                
                                        
resetting ...
        
                                                        

It looks like there was a hard reset at this point.

Yes as my interface reconnected to router. The question is why it resets instead booting the kernel. Is it a dead CPU?