D-Link DIR-860L A1: SQUASHFS failed to read block 0x0

Post new topic   Reply to topic    DD-WRT Forum Index -> Broadcom SoC based Hardware
Author Message
xded
DD-WRT Novice


Joined: 02 Feb 2025
Posts: 1

PostPosted: Sun Feb 02, 2025 4:18    Post subject: D-Link DIR-860L A1: SQUASHFS failed to read block 0x0 Reply with quote
Hi everyone,

Long time lurker here, and long time DD-WRT user. Until the below happened I guess...

I have been using without issues a D-Link DIR-860L Rev A1 (Broadcom) since 2015. Recently, I powered the house down before a vacation, and when I powered everything back up the router wouldn't boot. The interesting thing is that if I load the official firmware with the CFE emergency web server, the original firmware works just fine. If I then flash back DD-WRT (with factory-to-ddwrt.bin), it doesn't work.

For DD-WRT I tried both the last version I had on the router when it was still working (r40559) and a more recent one (r58283). Neither worked. For the official firmware I used "DIR-860L_REVA_FIRMWARE_1.11B01_HOTFIX".

The way DD-WRT fails is the following:
Code:

[   14.297746] Creating 1 MTD partitions on "brcmnand":
[   14.302698] 0x000000000000-0x000008000000 : "ddwrt"
[   14.310511] blk_update_request: I/O error, dev mtdblock2, sector 0
[   14.316710] SQUASHFS error: squashfs_read_data failed to read block 0x0
[   14.323361] squashfs: SQUASHFS error: unable to read squashfs_super_block

Then the kernel panics and reboots (full boot log at end of post). Not sure if this is of any help, but this is instead what the boot of the official firmware looks like (note that the "storage" partition in "bcrmnand" starts from 0x2000000 and not 0x0 like the "ddwrt" one.. which then errors out with the above error about "block 0x0").
Code:

Northstar brcmnand NAND Flash Controller driver, Version 0.1 (c) Broadcom Inc. 2012
NAND device: Manufacturer ID: 0x01, Chip ID: 0xf1 (AMD NAND 128MiB 3,3V 8-bit)
Spare area=64 eccbytes 56, ecc bytes located at:
 2 3 4 5 6 7 8 9 10 11 12 13 14 15 18 19 20 21 22 23 24 25 26 27 28 29 30 31 34 35 36 37 38 39 40 41 42 43 44 45 46 47 50 51 52 53 54 55 56 57 58 59 60 61 62 63
Available 7 bytes at (off,len):
(1,1) (16,2) (32,2) (48,2) (0,0) (0,0) (0,0) (0,0)
Scanning device for bad blocks
Options: NO_AUTOINCR,NO_READRDY,BBT_SCAN2NDPAGE,
1 cmdlinepart partitions found on MTD device brcmnand
[drivers/mtd/bcm947xx/nand/brcmnand.c brcmnand_mtd_init 1033] name: brcmnand (1)
Creating 1 MTD partitions on "brcmnand":
0x000002000000-0x000008000000 : "storage"
VFS: Mounted root (squashfs filesystem) readonly on device 31:8.
devtmpfs: mounted

I went down the rabbit hole and:

  • disassembled the thing, soldered a serial port, and (supposedly, see below) reset the NVRAM setting with "nvram erase && reboot" --> no difference, same error as above
  • desoldered the Spansion flash chip and installed a new one, tried to reprogram both DD-WRT and the original firmwarwe: original works, DD-WRT doesn't work (same error as above)
  • for fun and good measure, desoldered the Macronix NVRAM chip and installed a new one (transferring the contents over), reset nvram from CFE prompt, rebooted --> DD-WRT still doesn't work (same error as above)

Halfway through writing this post however, I found this post from way back which shows an old version of DD-WRT creating the ddwrt partition on bcrmnand at 0x2000000. So I tried loading r27490 since it was identified as working in that post (always going back to official, and then flashing factory_to_ddwrt.bin), but when it boots it still loads the partition at 0x0. Mad

Is there a setting somewhere in NVRAM governing that start address?

Also, whenever I reset the NVRAM it doesn't seem it actually gets reset: when I pulled the chip and read it with a USB programmer, it still had my OpenVPN settings to connect to NordVPN. Am I resetting it correctly with "nvram erase && reboot"? Also, fyi, the last big change I made in the router config before it started failing was to setup said OpenVPN configuration above, which uses quite a long config script... is it possible that that config messed up something in NVRAM and at the next reboot (after the vacation) then the router doesn't come back up anymore? How do I go back to a "pristine" NVRAM? (If someone had a dump, I can take the chip off and flash it no problem...)

Thanks in advance for the help!!
Dan





Full log of the DD-WRT boot below (r40559, the one that was on the router before it failed because I know it should work...)
Code:

SVN revision: 805
Decompressing...done
SVN revision: 805
Decompressing...done
Found a ST compatible (Marconix) serial flash with 32 64KB blocks; total size 2MB


CFE version 6.30.163.18 (r377098) based on BBP 1.0.37 for BCM947XX (32bit,SP,)
Build Date: Fri Feb 22 17:53:03 CST 2013 (michael_lo@Porsche)
Copyright (C) 2000-2008 Broadcom Corporation.

Init Arena
Init Devs.
Boot partition size = 262144(0x40000)
Found a AMD NAND flash:
Total size:  128MB
Block size:  128KB
Page Size:   2048B
OOB Size:    64B
Sector size: 512B
Spare size:  16B
ECC level:   8-bit
Device ID: 0x01 0xf1 0x00 0x1d 0x01
DDR Clock: 400 MHz
Info: DDR frequency set from clkfreq=800,*400*
et0: Broadcom BCM47XX 10/100/1000 Mbps Ethernet Controller 6.30.163.18 (r377098)
CPU type 0x0: 800MHz
Tot mem: 131072 KBytes

CFE mem:    0x00F00000 - 0x01092CAC (1649836)
Data:       0x00F5A760 - 0x00F5ACA4 (1348)
BSS:        0x00F5ACB0 - 0x00F90CAC (221180)
Heap:       0x00F90CAC - 0x01090CAC (1048576)
Stack:      0x01090CAC - 0x01092CAC (8192)
Text:       0x00F00000 - 0x00F4F474 (324724)
Boot:       0x01093000 - 0x010D3000
Reloc:      I:00000000 - D:00000000

Board Name: WRGAC03
SVN revision: 805
We disable the arp for self.
emergency web server running ...
We disable the arp for self.
Device eth0:  hwaddr 00-90-4C-0F-F0-18, ipaddr 192.168.0.1, mask 255.255.255.0
        gateway not set, nameserver not set
[ALPHA] PRESS Ctrl-C TO ENTER EMERGENCY MODE ...
Loader:raw Filesys:tftp Dev:eth0 File:: Options:(null)
Loading: Failed.
Could not load :: Timeout occured
Dest=00008000, source =02000000, filename=nflash1.trx
verify_seama: data=0x02000000, size=5955016
SEAMA ==========================================
  magic      : 5ea3a417
  meta size  : 36 bytes
  meta data  : dev=/dev/mtdblock/7
  meta data  : type=firmware
  meta data  :
  meta data  :
  image size : 5954952 bytes
verify_seama: signature=[(null)], type=[firmware]
  checksum   : 59C02B8386A952E4BAB9E27309BB9D48
  digest     : 59C02B8386A952E4BAB9E27309BB9D48
  Selected !!!
================================================
seama check OK!!
insize = 2097152, out size =8388608
uncompressed size = 1352136
lzma decompress success !
Closing network.
emergency web server closing ...
Starting program at 0x00008000
Uncompressing Linux... done, booting the kernel.
PERCPU: Embedded 11 pages/cpu @87ee0000 s12876 r8192 d23988 u45056
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 32512
Kernel command line: console=ttyS0,115200 panic=10 root=/dev/mtdblock3 earlyprintk=1 rootfstype=squashfs,jffs2 noinitrd init=/bin/sh
PID hash table entries: 512 (order: -1, 2048 bytes)
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
Memory: 125404K/131072K available (3084K kernel code, 195K rwdata, 440K rodata, 312K init, 363K bss, 5668K reserved, 0K cma-reserved, 0K highmem)
Virtual kernel memory layout:
    vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
    vmalloc : 0x88800000 - 0xff800000   (1904 MB)
    lowmem  : 0x80000000 - 0x88000000   ( 128 MB)
    pkmap   : 0x7fe00000 - 0x80000000   (   2 MB)
    modules : 0x7f000000 - 0x7fe00000   (  14 MB)
      .text : 0x80008000 - 0x80379814   (3527 kB)
      .init : 0x8037a000 - 0x803c8000   ( 312 kB)
      .data : 0x803c8000 - 0x803f8db4   ( 196 kB)
       .bss : 0x803fb000 - 0x80455dcc   ( 364 kB)
Hierarchical RCU implementation.
   CONFIG_RCU_FANOUT set to non-default value of 2
   Build-time adjustment of leaf fanout to 2.
NR_IRQS:256
MPCORE GIC init
soc_dmu_init
add clk lookups
MPCORE Global Timer Clock 400000000Hz on IRQ 27
sched_clock: 32 bits at 400MHz, resolution 2ns, wraps every 5368709118ns
clocksource: mpcore_gtimer: mask: 0xffffffffffffffff max_cycles: 0x5c4093a7d1, max_idle_ns: 440795210635 ns
register local timer
smp_twd: clock not found -2
Calibrating local timer... 399.62MHz.
Calibrating delay loop... 1594.16 BogoMIPS (lpj=7970816)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
CPU: Testing write buffer coherency: ok
CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
2 cores has been found
Setting up static identity map for 0x85e0 - 0x8614
L2C: platform provided aux values permit register corruption.
L2C: DT/platform modifies aux control register: 0x0a130000 -> 0x7a530000
L2C-310 erratum 769419 enabled
L2C-310 enabling early BRESP for Cortex-A9
L2C-310 full line of zeros enabled for Cortex-A9
L2C-310 dynamic clock gating enabled, standby mode enabled
L2C-310 cache controller enabled, 16 ways, 256 kB
L2C-310: CACHE_ID 0x410000c8, AUX_CTRL 0x4e530001
CPU1: failed to boot: -38
Brought up 1 CPUs
SMP: Total of 1 processors activated (1594.16 BogoMIPS).
clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
futex hash table entries: 512 (order: 3, 32768 bytes)
NET: Registered protocol family 16
DMA: preallocated 256 KiB pool for atomic coherent allocations
coherence_win_size = 10000000
coherence_flag = FFFFFFF8
ddr_phys_offset_va =FFFFFFFF
ddr_phys_offset2_va =A8000000
Found a ST compatible (Marconix) serial flash with 64 64KB blocks; total size 4MB
found cfe nvram on sflash
CCA UART Clock Config: Sel=1 Ovr=1 Div=48
CCA UART Clock rate 100000000Hz CCB UART Clock rate 100000000Hz
clocksource: Switched to clocksource mpcore_gtimer
NET: Registered protocol family 2
TCP established hash table entries: 1024 (order: 0, 4096 bytes)
TCP bind hash table entries: 1024 (order: 1, 8192 bytes)
TCP: Hash tables configured (established 1024 bind 1024)
UDP hash table entries: 256 (order: 1, 8192 bytes)
UDP-Lite hash table entries: 256 (order: 1, 8192 bytes)
NET: Registered protocol family 1
init gpio code
PCI: no core
PCI: no core
PCI: scanning bus 0
PCI host bridge to bus 0000:00
pci_bus 0000:00: root bus resource [io  0x0000-0xffffffff]
pci_bus 0000:00: root bus resource [mem 0x00000000-0xffffffff]
pci_bus 0000:00: root bus resource [bus 00-ff]
pci 0000:00:0f.0: [Firmware Bug]: reg 0x10: invalid BAR (can't size)
PCI: Fixing up bus 0 domain 0
PCIE1 link=1
PCI host bridge to bus 0001:00
pci_bus 0001:00: root bus resource [mem 0x08000000-0x0fffffff]
pci_bus 0001:00: No busn resource found for root bus, will use [bus 00-ff]
PCI: Fixing up bus 0 domain 1
PCI: bus0: Fast back to back transfers disabled
PCI: Fixing up bus 1 domain 1
PCI: bus1: Fast back to back transfers disabled
pci 0001:00:00.0: BAR 8: assigned [mem 0x08000000-0x080fffff]
pci 0001:01:00.0: BAR 0: assigned [mem 0x08000000-0x08007fff 64bit]
pci 0001:00:00.0: PCI bridge to [bus 01]
pci 0001:00:00.0:   bridge window [mem 0x08000000-0x080fffff]
PCIE2 link=1
PCIE2 switching to GEN2
PCIE2 link=1
PCI host bridge to bus 0002:00
pci_bus 0002:00: root bus resource [mem 0x40000000-0x47ffffff]
pci_bus 0002:00: No busn resource found for root bus, will use [bus 00-ff]
PCI: Fixing up bus 0 domain 2
PCI: bus0: Fast back to back transfers disabled
pci 0002:01:00.0: Max Payload Size set to 512 (was 128, max 512)
PCI: Fixing up bus 1 domain 2
PCI: bus1: Fast back to back transfers disabled
pci 0002:00:00.0: BAR 8: assigned [mem 0x40000000-0x400fffff]
pci 0002:01:00.0: BAR 0: assigned [mem 0x40000000-0x40007fff 64bit]
pci 0002:00:00.0: PCI bridge to [bus 01]
pci 0002:00:00.0:   bridge window [mem 0x40000000-0x400fffff]
PCIE3 link=0
squashfs: version 4.0 (2009/01/31) Phillip Lougher
io scheduler noop registered (default)
io scheduler cfq registered
serial8250_init
Serial: 8250/16550 driver, 3 ports, IRQ sharing disabled
console [ttyS0] disabled
serial8250.0: ttyS0 at MMIO 0x18000300 (irq = 117, base_baud = 6250000) is a 16550
console [ttyS0] enabled
serial8250.0: ttyS1 at MMIO 0x18000400 (irq = 117, base_baud = 6250000) is a 16550
brd: module loaded
loop: module loaded
Creating 5 MTD partitions on "bcmsflash":
0x000000000000-0x000000400000 : "boot"
0x000000000000-0x0000003f0000 : "linux"
0x000000400000-0x000000400000 : "rootfs"
mtd: partition "rootfs" is out of reach -- disabled
0x0000003f0000-0x000000400000 : "nvram_cfe"
0x0000003e0000-0x0000003f0000 : "nvram"
Found a AMD NAND flash:
Total size:  128MB
Block size:  128KB
Page Size:   2048B
OOB Size:    64B
Sector size: 512B
Spare size:  16B
ECC level:   8 (8-bit)
Device ID: 0x 1 0xf1 0x 0 0x1d 0x 1 0xf1
Creating 1 MTD partitions on "nflash":
0x000000000000-0x000008000000 : "nand"
PPP generic driver version 2.4.2
PPP BSD Compression module registered
PPP Deflate Compression module registered
PPP MPPE Compression module registered
NET: Registered protocol family 24
i2c /dev entries driver
GACT probability NOT on
Mirror/redirect action on
Simple TC action Loaded
netem: version 1.3
u32 classifier
    Performance counters on
    input device check on
    Actions configured
Netfilter messages via NETLINK v0.30.
nf_conntrack version 0.5.0 (1959 buckets, 7836 max)
nf_conntrack_rtsp v0.7 loading
xt_time: kernel timezone is -0000
ip_set: protocol 6
gre: GRE over IPv4 demultiplexor driver
nf_nat_rtsp v0.7 loading
ip_tables: (C) 2000-2006 Netfilter Core Team
NET: Registered protocol family 17
bridge: automatic filtering via arp/ip/ip6tables has been deprecated. Update your scripts to load br_netfilter if you need this.
Bridge firewalling registered
8021q: 802.1Q VLAN Support v1.8
Registering SWP/SWPB emulation handler
found cfe nvram
check if nvram copy is required CFE Size is 65536
nvram copy magic is 48534C46
max nvram space = 131072
read 65536 bytes to offset 0
Key type encrypted registered
Northstar brcmnand NAND Flash Controller driver, Version 0.1 (c) Broadcom Inc. 2012
nand: device found, Manufacturer ID: 0x01, Chip ID: 0xf1
nand: AMD/Spansion NAND 128MiB 3,3V 8-bit
nand: 128 MiB, SLC, erase size: 128 KiB, page size: 2048, OOB size: 64
Spare area=64 eccbytes 56, ecc bytes located at:
 2 3 4 5 6 7 8 9 10 11 12 13 14 15 18 19 20 21 22 23 24 25 26 27 28 29 30 31 34 35 36 37 38 39 40 41 42 43 44 45 46 47 50 51 52 53 54 55 56 57 58 59 60 61 62 63
Available 7 bytes at (off,len):
(1,1) (16,2) (32,2) (48,2) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0)
Scanning device for bad blocks
Options: NO_SUBPAGE_WRITE,
Creating 1 MTD partitions on "brcmnand":
0x000000000000-0x000008000000 : "ddwrt"
blk_update_request: I/O error, dev mtdblock2, sector 0
SQUASHFS error: squashfs_read_data failed to read block 0x0
squashfs: SQUASHFS error: unable to read squashfs_super_block
VFS: Cannot open root device "1f02" or unknown-block(31,2): error -5
Please append a correct "root=" boot option; here are the available partitions:
0100            4096 ram0  (driver?)
0101            4096 ram1  (driver?)
0102            4096 ram2  (driver?)
0103            4096 ram3  (driver?)
0104            4096 ram4  (driver?)
0105            4096 ram5  (driver?)
0106            4096 ram6  (driver?)
0107            4096 ram7  (driver?)
0108            4096 ram8  (driver?)
0109            4096 ram9  (driver?)
010a            4096 ram10  (driver?)
010b            4096 ram11  (driver?)
010c            4096 ram12  (driver?)
010d            4096 ram13  (driver?)
010e            4096 ram14  (driver?)
010f            4096 ram15  (driver?)
1f00            4096 mtdblock0  (driver?)
1f01            4032 mtdblock1  (driver?)
1f03              64 mtdblock3  (driver?)
1f04              64 mtdblock4  (driver?)
1f05          131072 mtdblock5  (driver?)
1f06          131072 mtdblock6  (driver?)
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,2)
Sponsor
Display posts from previous:    Page 1 of 1
Post new topic   Reply to topic    DD-WRT Forum Index -> Broadcom SoC based Hardware All times are GMT

Navigation

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You can attach files in this forum
You can download files in this forum