A way to fix DD-WRT can not run on some Linksys EA2700 router

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

 I/O error
*** 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/partitions

major 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

Advertisements
This entry was posted in tech and tagged , , , , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s