Ok, I need help. I've been trying to recover an ix2-dl that is not cooperating. It's been a bit of a saga, so I won't recap everything here (though I will fill in the details wherever necessary). It lost the ability to connect via ethernet (which killed my ssh access). I purchased a TTL-USB converter and got the serial output up. I found instructions on how to recover the firmware here. The process appeared to succeed. I thought I had my terminal window saving the output, but alas it did not. So I don't have the log for that. On next boot, I was dismayed to see a ton of "bad eraseblock" messages flying by on the screen.

Cutting to the chase... Is there a way to reset the bad block table? From the output (pasted below), it looks like the recovery process fails in the end due to "No space left on device". This makes sense if the entire nand device is reported a bad block after bad block.

I looked through the commands available at the Marvell prompt (i.e., after hitting a key to cancel boot), but didn't see anything that looked helpful. I wouldn't just go poking around in there without understanding what I"m doing anyway. I've spent a lot of time trying to Google this to see who has had the same problem with no luck. I'm starting to feel like whatever happened isn't going to be reversible, but I'm hoping someone here can prove me wrong. Thanks to anyone who can help.

I left off the earlier section of the boot log just for brevity's sake. I can post what's before here, if it will be helpful.

Writing data to block 0Bad block at 0, 1 block(s) from 0 will be skippedWriting data to block 20000Bad block at 20000, 1 block(s) from 20000 will be skippedWriting data to block 40000Bad block at 40000, 1 block(s) from 40000 will be skippedWriting data to block 60000Bad block at 60000, 1 block(s) from 60000 will be skippedWriting data to block 80000Bad block at 80000, 1 block(s) from 80000 will be skippedWriting data to block a0000Bad block at a0000, 1 block(s) from a0000 will be skippedWriting data to block c0000Bad block at c0000, 1 block(s) from c0000 will be skippedWriting data to block e0000Bad block at e0000, 1 block(s) from e0000 will be skippedWriting data to block 100000Bad block at 100000, 1 block(s) from 100000 will be skippedWriting data to block 120000Bad block at 120000, 1 block(s) from 120000 will be skippedWriting data to block 140000Bad block at 140000, 1 block(s) from 140000 will be skippedWriting data to block 160000Bad block at 160000, 1 block(s) from 160000 will be skippedWriting data to block 180000Bad block at 180000, 1 block(s) from 180000 will be skippedWriting data to block 1a0000Bad block at 1a0000, 1 block(s) from 1a0000 will be skippedWriting data to block 1c0000Bad block at 1c0000, 1 block(s) from 1c0000 will be skippedWriting data to block 1e0000Bad block at 1e0000, 1 block(s) from 1e0000 will be skippedWriting data to block 200000Bad block at 200000, 1 block(s) from 200000 will be skippedWriting data to block 220000Bad block at 220000, 1 block(s) from 220000 will be skippedWriting data to block 240000Bad block at 240000, 1 block(s) from 240000 will be skippedWriting data to block 260000Bad block at 260000, 1 block(s) from 260000 will be skippedWriting data to block 280000Bad block at 280000, 1 block(s) from 280000 will be skippedWriting data to block 2a0000Bad block at 2a0000, 1 block(s) from 2a0000 will be skippedWriting data to block 2c0000Bad block at 2c0000, 1 block(s) from 2c0000 will be skippedWriting data to block 2e0000Bad block at 2e0000, 1 block(s) from 2e0000 will be skippedWriting data to block 300000ioctl(MEMGETBADBLOCK): Invalid argumentData was only partially written due to error: Invalid argumentmknod: /dev/mtd4: File exists

Skipping bad block at 0x00000000

Skipping bad block at 0x00020000

Skipping bad block at 0x00040000

Skipping bad block at 0x00060000

Skipping bad block at 0x00080000

Skipping bad block at 0x000a0000

Skipping bad block at 0x000c0000

Skipping bad block at 0x000e0000

Skipping bad block at 0x00100000

Skipping bad block at 0x00120000

Skipping bad block at 0x00140000

Skipping bad block at 0x00160000

Skipping bad block at 0x00180000

Skipping bad block at 0x001a0000

Skipping bad block at 0x001c0000

Skipping bad block at 0x001e0000

Skipping bad block at 0x00200000

Skipping bad block at 0x00220000

Skipping bad block at 0x00240000

Skipping bad block at 0x00260000

Skipping bad block at 0x00280000

Skipping bad block at 0x002a0000

Skipping bad block at 0x002c0000

Skipping bad block at 0x002e0000

Writing data to block 0Bad block at 0, 1 block(s) from 0 will be skippedWriting data to block 20000Bad block at 20000, 1 block(s) from 20000 will be skippedWriting data to block 40000Bad block at 40000, 1 block(s) from 40000 will be skippedWriting data to block 60000Bad block at 60000, 1 block(s) from 60000 will be skippedWriting data to block 80000Bad block at 80000, 1 block(s) from 80000 will be skippedWriting data to block a0000Bad block at a0000, 1 block(s) from a0000 will be skippedWriting data to block c0000Bad block at c0000, 1 block(s) from c0000 will be skippedWriting data to block e0000Bad block at e0000, 1 block(s) from e0000 will be skippedWriting data to block 100000Bad block at 100000, 1 block(s) from 100000 will be skippedWriting data to block 120000Bad block at 120000, 1 block(s) from 120000 will be skippedWriting data to block 140000Bad block at 140000, 1 block(s) from 140000 will be skippedWriting data to block 160000Bad block at 160000, 1 block(s) from 160000 will be skippedWriting data to block 180000Bad block at 180000, 1 block(s) from 180000 will be skippedWriting data to block 1a0000Bad block at 1a0000, 1 block(s) from 1a0000 will be skippedWriting data to block 1c0000Bad block at 1c0000, 1 block(s) from 1c0000 will be skippedWriting data to block 1e0000Bad block at 1e0000, 1 block(s) from 1e0000 will be skippedWriting data to block 200000Bad block at 200000, 1 block(s) from 200000 will be skippedWriting data to block 220000Bad block at 220000, 1 block(s) from 220000 will be skippedWriting data to block 240000Bad block at 240000, 1 block(s) from 240000 will be skippedWriting data to block 260000Bad block at 260000, 1 block(s) from 260000 will be skippedWriting data to block 280000Bad block at 280000, 1 block(s) from 280000 will be skippedWriting data to block 2a0000Bad block at 2a0000, 1 block(s) from 2a0000 will be skippedWriting data to block 2c0000Bad block at 2c0000, 1 block(s) from 2c0000 will be skippedWriting data to block 2e0000Bad block at 2e0000, 1 block(s) from 2e0000 will be skippedWriting data to block 300000ioctl(MEMGETBADBLOCK): Invalid argumentData was only partially written due to error: Invalid argumentRemove the temp folder.DONE copying imagescp: write error: No space left on devicecp: write error: No space left on devicecp: write error: No space left on devicecp: write error: No space left on devicecp: write error: No space left on devicecp: write error: No space left on devicecp: write error: No space left on devicecp: write error: No space left on devicecp: write error: No space left on devicecp: write error: No space left on devicecp: write error: No space left on devicecp: write error: No space left on devicecp: write error: No space left on devicecp: write error: No space left on devicecp: write error: No space left on devicecp: write error: No space left on devicecp: write error: No space left on devicecp: write error: No space left on devicecp: write error: No space left on devicecp: write error: No space left on devicecp: write error: No space left on devicecp: write error: No space left on deviceImaging Successful. Please remove the USB drive before the next power onUSB/DOM device is sdccat: can't open '/sys/block/sdd/removable': No such file or directoryDrives are sd[ab]

Don't know if your u-boot supports it. Here you can read a story on how to reset the bad blocks on *some* boards.

In your case there is a complicating factor. Following the directions will erase the nand, including the bootloader, which will kill your box. So you have a few options. Get jtag running, check out of your box can be booted using kw-boot, or boot into a Linux variant where you can do a flash_erase all on the mtd partitions not containing u-boot.

If possible, backup as much as you can from the current flash. After erasing it's gone.

Ah, ok. Well I truly appreciate the reply, even if it's not the best of news.

It's a rare day that I'll give up on something like this, but I've invested too much time on this already and I'm only going backwards. The options listed will either (a) require much more research for me to pull off or (b) present enough risk that I'm not sure it even makes sense to continue. Hopefully this thread helps someone in the future. Then again, hopefully no one else gets in this situation.

Believe me, I normally feel that way. I am a lifelong learner. I'm just in a season of life that I must make choices on what gets use of my time. I'll set it to the side and maybe pick it up again someday soon. Anyway, thanks again.

Believe me, I normally feel that way. I am a lifelong learner. I'm just in a season of life that I must make choices on what gets use of my time. I'll set it to the side and maybe pick it up again someday soon. Anyway, thanks again.

Did you finally find a way to solve the problem in your ix2-dl? I happen to have exactly the same problem. I am about to turn mine into an ix2-ng (it can be done, sort of...), but I would rather prefer a more neat solution.

Who is online

Users browsing this forum: No registered users and 4 guests

You cannot post new topics in this forumYou cannot reply to topics in this forumYou cannot edit your posts in this forumYou cannot delete your posts in this forumYou cannot post attachments in this forum