I have a Linksys EA2700 router, the original firmware functional very limited, I like to use this router as a wireless repeater and a giga switch for the computers near by it. So of course, DD-WRT is the best choice. The problem is, although I am a long time DD-WRT user, no matter how I try to flash DD-WRT firmware, testing any different version, I could not have it run on my ea2700, after several reboots, it return to the original classic firmware.
I wired the serial port pints out, try to figure out what was happening. Update firmware from classic firmware web ui, during booting, log show something like this:
List of all partitions:
1f00 512 mtdblock0 (driver?)
1f01 1536 mtdblock1 (driver?)
1f02 18432 mtdblock2 (driver?)
1f03 4175864 mtdblock3 (driver?)
1f04 18432 mtdblock4 (driver?)
1f05 16524 mtdblock5 (driver?)
1f06 25600 mtdblock6 (driver?)
No filesystem could mount root, tried: squashfs ntfs fuseblk
Kernel panic – not syncing: VFS: Unable to mount root fs on unknown-block(31,5)
and something like that:
nand_read_bbt: Bad block at 0x00c84000
I mean, it seem that NAND had some bad block, that could not be read during booting, using web UI to update, it said it is succeeded, but I doubt it. Then I try to update firmware using CFE way and tftp, before tftp upload finish, CFE report that
*** command status = -4
This error could be repeated. So I think the part of NAND is damaged. The problem is, I could upload linksys classic firmware success every time!
The original firmware size is 13M while ddwrt is 17M. So I figure out a way to modify DD-WRT firmware, remove some unnecessary ‘big’ modules and resources, repack the firmware @ 12M. Upload by tftp, it works for me!
cat /proc/partitionsmajor minor #blocks name 31 0 30720 mtdblock0 31 1 31744 mtdblock1 31 2 512 mtdblock2 31 3 1536 mtdblock3 31 4 30720 mtdblock4 31 5 29518 mtdblock5
cat /proc/mtd dev: size erasesize name mtd0: 01e00000 00004000 namelinux; mtd1: 01f00000 00004000 nameddwrt; mtd2: 00080000 00004000 namecfeot; mtd3: 00180000 00004000 namenvram; mtd4: 01e00000 00004000 namenandimage mtd5: 01cd3800 00004000 namerootfsage
I know that mtd table looks strange, but most function works as expected.
Here is the way of how to modify DD-WRT firmware. Hope this could help