Help With Bricked Gp2x.


benji_stein

Member
Joined
Nov 20, 2007
Messages
278
Hi all. I've been lurking around for a bit, trying to decide on getting a gp2x for a bit, and reading some info about it. I recently picked up a a used mkII+cradle+psu at a good price that I couldn't pass up. The original owner had managed to brick it and hadn't wanted to figure out how to repair it, and I thought I would give it a try, as I'd found a bit of info online. Unfortunately, I've had some trouble, and so I thought I'd turn here to hopefully get some help. I think this is the more appropriate subforum, but feel free to move it elsewhere if it will get better attention.

As a side note, I've had it hooked up to my computer over a serial cable during the entire process, but for some reason the data is often quite garbled. Is this normal? I'm using hyperterminal at 115200 8N1, over a usb->serial adapter, but I have no idea if it's the unit (possibly acting strange because it's not working properly yet), adapter, cradle, or software. What program do other people use?

Also, for all of the stuff I've done (steps explained below) I've tried two different SD cards, which didn't seem to make any difference.

My apologies in advance for the length of the post. I felt that a more detailed description of what I tried would probably be more helpful. (Plus it shows that I actually did some research!) Any advice would be greatly appreciated.


The things I've done/what's happened:

When I first got the unit and turned it on, all I got was a black screen. I found this slightly odd because all of the other information I've found implied that I should be seeing a black screen with logo (working uboot), a green screen with logo (working uboot+kernel), or a white screen with lines (broken uboot). Serial output didn't produce anything. I figured it was probably something with uboot, and so went through the steps on
http://www.oneandoneis2.com/linux/GP2X/unbrick.htm

I downloaded and unzippped the firmware to the SD card, and ran GP2XRecovery.exe. It seemed to run fine, with "Write block" messages, as described. At this point the screen turned white with colored lines. I powered off the unit, waited, and turned it back on with start/select held, but nothing happened. Just a black screen again. I repeated several times, but nothing would happen, and holding/not holding start/select didn't seem to make a difference.

Eventually, I accidentally ended up running GP2XRecovery.exe when the SD card inserted (I now assume that it was meant to be, though it was very poorly explained that this was the case), and I noiced that there was some serial output - it was copying the firmware from the card (without having been reset). When it finished, I turned it off, let it sit, and turned it on again with start/select held. This time, it had uboot and the kernel, because it got as far as the green logoed screen, but no further. I figured that the filesystem wasn't getting copied properly, but I couldn't get it to load off of the SD card, either booting with or without start/select held, nor following through the instructions from http://www.distant-earth.com/gp2x/2005/11/...cked-gp2xs.html
there was some garbled output over serial about errors loading the image, but only half a dozen or so, which seemed too small if it had tried to write to the entire NAND.

Around this time, I noticed that it had installed the 1.01 firmware, probably because I had originally downloaded it from the "unbrick most gp2xs" site above. I downloaded the 2.0 firmware and put it on the SD card, but couldn't get it to load either just from powering on with/without start/select held. I tried GP2XRecovery again (with the card inserted) and after a few attempts I got it to load (I don't recall exactly what I did, though I feel like there was one time where I got uboot+kernel, but no filesystem again). This kernel did respond to the start/select hold, and after a bit did the upgrading/patching/formatting bit and it came up fully.

I was pretty satisfied, but decided that since I was so close, I would upgrade to 2.1.1. I extracted the 2.1.0 firmware (I wasn't sure if I needed to do the intermediate version first) to the SD card (cleared it out first, of course), ran the .gpu file (perhaps I should have done that second?), and reset, holding start/select. The upgrading screen came on, but then just sat there. I waited a good hour, but it didn't do anything more, and the serial output didn't display much - I believe it said (garbled as usual) that it was extracting, but then not a whole lot.

I tried turning the unit off, and re-updating with the same SD-card, but there was no difference. At this point, the unit did not boot into the firmware properly by itself, but it was still geting to the green logoed screen if start/select wasn't held. I figured maybe I needed help from my friend GP2XRecovery again. I put firmware 2.0 on the SD card again (I decided if the filesystem was hosed I'd need to redo the whole thing), and ran GP2XRecovery, and it seemed to load ubtoot+kernel OK (as a side-note, GP2XRecovery always seems to exit before it starts reading the SD card, is this supposed to be the case? Otherwise, how does one know if it's finished loading the images before turning off the unit, unless the serial cable is connected?). However, this time for the filesystem I got a ton of errors, quite garbled. quickly scrolling by. I believe they mentioned something about bad or invalid blocks (I can't recall at the moment, as I'm not in Windows, but I can get a more specific log if it would help, but it's still hard to decipher because of the garbled-ness). The errors just kept going - they did not stop even after I left it for over two hours. I turned off the unit, let it sit, and turned it on with start/select, but it just did the same thing, sitting on the firmware loading screen.

I tried a bunch of different firmwares again (typically with GP2XRecovery), without any success. I couldn't get the 1.0.1 kernel or uboot back on, it just put me back in the original black no-logo screen, with no serial output. The same thing happened when I tried v3.0.0 once (though I think it still did the infinitely scrolling bad block messages before rebooting after GP2XRecovery). Currently, it has the 2.0 kernel+uboot and boots up as far as the green logoed screen, but I can't get the filesystem on; I get the bad blocks when I try initializing it with GP2XRecovery, and if I hold the start/select buttons on bootup it goes to the updating firmware screen for maybe 10 seconds, and then transitions to the green logoed screen without any patching/formatting, and doesn't get any further. The serial output isn't too helpful, the kernel seems to begin to start up but then not do anything; just sit there, possibly because there are no files. I can paste some of the garbled output if it would help at all.

Any ideas or suggestions of things I can do to get my gp2x unbricked? My rather uneducated guess is that it might have something to do with too many of the NAND blocks becoming marked as invalid (as described in http://www.gp32x.de/board/index.php?showtopic=38333), but I'm not sure, and I don't know how to try fixing that.

Thanks in advance for your assistance.
 
Last edited by a moderator:
Around this time, I noticed that it had installed the 1.01 firmware, probably because I had originally downloaded it from the "unbrick most gp2xs" site above. I downloaded the 2.0 firmware and put it on the SD card, but couldn't get it to load either just from powering on with/without start/select held. I tried GP2XRecovery again (with the card inserted) and after a few attempts I got it to load (I don't recall exactly what I did, though I feel like there was one time where I got uboot+kernel, but no filesystem again). This kernel did respond to the start/select hold, and after a bit did the upgrading/patching/formatting bit and it came up fully.


Thanks in advance for your assistance.



Was the system working at this point? Did it boot all the way up, it sounds like it did. Did you try running any of the built in software? If so, what was the result? Did any of the built in software work? Let me know.

Chris
 
Last edited by a moderator:
christo930 said:
Was the system working at this point? Did it boot all the way up, it sounds like it did. Did you try running any of the built in software? If so, what was the result? Did any of the built in software work? Let me know.
It did boot all the way up, or at least it looked like I expected it to. I got the orange menu screen, as in http://www.itreviews.co.uk/graphics/normal...dware/h1126.jpg. I briefly browsed through the menus, but don't recall actually trying any of the apps. My thought process was probably something along the lines of "*phew*, I did it! Now let's finish the updates and I can fiddle around with what it has to offer." I remember that it lasted a couple of power on/offs, but didn't test it much farther than that. Sorry.
 
Last edited by a moderator:
OK. So I tried again with a hard serial connection, instead of the USB->serial adapter, and the output was no longer garbled, so I'll paste output from what it's currently doing. I unfortunately don't have output from what I tried previously, since I can't repeat it.

Regular boot - hangs in kernel
CODE

U-Boot 1.0.0 (Apr 20 2006 - 12:51:09)

U-Boot code: 03E00000 -> 03E49610 BSS: -> 03E82208
IRQ Stack: 03ea3204
FIQ Stack: 03ea4204
DRAM Configuration:
Bank #0: 00100000 63 MB
Flash: 0 kB
NAND:probing at 0x9c000000
Flash chip found:
Manufacturer ID: 0xEC, Chip ID: 0x76 (Samsung K9F1208 64Mb)
1 flash chips found. Total nand_chip size: 64 MB
Get Environment from NAND offset 0x70000 ...
*** Warning - bad CRC, using default environment

In: serial
Out: serial
Err: serial

NAND read: device 0 offset 0x1a0000, size 0x40000 ... 262144 bytes read: OK
Wav file format error
format_type:0xffff
ChannelNo :65535
SamplesPerSec:-1
AvgBytesPerSec:-1
BytesPerSample:65535
BitsPerSample:65535
data_size:ffffffff

NAND read: device 0 offset 0x80000, size 0xb0000 ... 720896 bytes read: OK
### main_loop: bootcmd="bootm"
Hit any key to stop autoboot: 0
## Booting image at 01000000 ...
Image Name: MMSP2 Linux Kernel
Created: 2006-04-20 5:33:25 UTC
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 632921 Bytes = 618.1 kB
Load Address: 00008000
Entry Point: 00008000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK

Starting kernel ...

mount_devfs_fs(): unable to mount devfs, err: -2
MMC/SD Card Detected
Freeing init memory: 288K
Warning: unable to open an initial console.
Partition check:
mmcsda:<0>Kernel panic: No init found. Try passing init= option to kernel.



Holding start/select on bootup:
CODE

U-Boot 1.0.0 (Apr 20 2006 - 12:51:09)

U-Boot code: 03E00000 -> 03E49610 BSS: -> 03E82208
IRQ Stack: 03ea3204
FIQ Stack: 03ea4204
DRAM Configuration:
Bank #0: 00100000 63 MB
Flash: 0 kB
NAND:probing at 0x9c000000
Flash chip found:
Manufacturer ID: 0xEC, Chip ID: 0x76 (Samsung K9F1208 64Mb)
1 flash chips found. Total nand_chip size: 64 MB
Get Environment from NAND offset 0x70000 ...
*** Warning - bad CRC, using default environment

In: serial
Out: serial
Err: serial

NAND read: device 0 offset 0x1a0000, size 0x40000 ... 262144 bytes read: OK
Wav file format error
format_type:0xffff
ChannelNo :65535
SamplesPerSec:-1
AvgBytesPerSec:-1
BytesPerSample:65535
BitsPerSample:65535
data_size:ffffffff

SD found : SD Frequency is 2MHz
(with MBR)

BOOT UPDATE ----------------------------
reading gp2xboot.img
READ START 373348

373348 bytes read
1 : g_filesize 5b264
gp2xboot.img Update 373348 0x5c000

NAND read: device 0 offset 0x50000, size 0x10000 ... 65536 bytes read: OK

NAND write: device 0 offset 0x0, size 0x5c000 ... 376832 bytes written: OK
KERNEL UPDATE ----------------------------
reading gp2xkernel.img
READ START 632985

632985 bytes read
2 : g_filesize 9a899
gp2xkernel.img Update 632985 0x9c000

NAND write: device 0 offset 0x80000, size 0x9c000 ... 638976 bytes written: OK
WAVE FILE WRITE ----------------------------
reading gp2xsound.wav
READ START 238636

238636 bytes read
2 : g_filesize 3a42c
gp2xsound.wav Update 238636 0x3c000

NAND write: device 0 offset 0x1a0000, size 0x3c000 ... 245760 bytes written: OK

FILE UPDATE ----------------------------
reading gp2xyaffs.img
READ START 3065040

3065040 bytes read
3 : g_filesize 2ec4d0
gp2xfile.img Update 3065040 0x2f0000

NAND write: device 0 offset 0x220000, size 0x2f0000 ... 2986496 bytes written:
OK

NAND read: device 0 offset 0x80000, size 0xb0000 ... 720896 bytes read: OK
### main_loop: bootcmd="bootm"
Hit any key to stop autoboot: 0
## Booting image at 01000000 ...
Image Name: MMSP2 Linux Kernel
Created: 2006-04-20 5:33:25 UTC
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 632921 Bytes = 618.1 kB
Load Address: 00008000
Entry Point: 00008000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK

Starting kernel ...

mount_devfs_fs(): unable to mount devfs, err: -2
MMC/SD Card Detected
Freeing init memory: 288K
Warning: unable to open an initial console.
Partition check:
mmcsda:<0>Kernel panic: No init found. Try passing init= option to kernel.



which looks virtually the same except it tries to load in the data (but doesn't seem to fail).

The final one is when I run gp2xrecover.
It starts off loading uboot+kernel, which report as OK, and then tried the filesystem, and prints out a lot of:
CODE

Erase/write yaffs image at 0x880000.
Block at 0x880000 is marked BAD and is not being formatted
Block at 0x884000 is marked BAD and is not being formatted
Block at 0x888000 is marked BAD and is not being formatted
Block at 0x88c000 is marked BAD and is not being formatted
Block at 0x890000 is marked BAD and is not being formatted
Block at 0x894000 is marked BAD and is not being formatted
Block at 0x898000 is marked BAD and is not being formatted
Block at 0x89c000 is marked BAD and is not being formatted
Block at 0x8a0000 is marked BAD and is not being formatted
Block at 0x8a4000 is marked BAD and is not being formatted
Block at 0x8a8000 is marked BAD and is not being formatted
Block at 0x8ac000 is marked BAD and is not being formatted
Block at 0x8b0000 is marked BAD and is not being formatted
Block at 0x8b4000 is marked BAD and is not being formatted
Block at 0x8b8000 is marked BAD and is not being formatted
Block at 0x8bc000 is marked BAD and is not being formatted
Block at 0x8c0000 is marked BAD and is not being formatted
Block at 0x8c4000 is marked BAD and is not being formatted
Block at 0x8c8000 is marked BAD and is not being formatted
Block at 0x8cc000 is marked BAD and is not being formatted
Block at 0x8d0000 is marked BAD and is not being formatted
Block at 0x8d4000 is marked BAD and is not being formatted
Block at 0x8d8000 is marked BAD and is not being formatted
Block at 0x8dc000 is marked BAD and is not being formatted
Block at 0x8e0000 is marked BAD and is not being formatted
Block at 0x8e4000 is marked BAD and is not being formatted
Block at 0x8e8000 is marked BAD and is not being formatted
Block at 0x8ec000 is marked BAD and is not being formatted
Block at 0x8f0000 is marked BAD and is not being formatted
Block at 0x8f4000 is marked BAD and is not being formatted
Block at 0x8f8000 is marked BAD and is not being formatted
Block at 0x8fc000 is marked BAD and is not being formatted
Erase/write yaffs image at 0x900000.
Block at 0x900000 is marked BAD and is not being formatted
Block at 0x904000 is marked BAD and is not being formatted
Block at 0x908000 is marked BAD and is not being formatted
Block at 0x90c000 is marked BAD and is not being formatted
Block at 0x910000 is marked BAD and is not being formatted
Block at 0x914000 is marked BAD and is not being formatted
Block at 0x918000 is marked BAD and is not being formatted
Block at 0x91c000 is marked BAD and is not being formatted
Block at 0x920000 is marked BAD and is not being formatted
Block at 0x924000 is marked BAD and is not being formatted
Block at 0x928000 is marked BAD and is not being formatted
Block at 0x92c000 is marked BAD and is not being formatted
Block at 0x930000 is marked BAD and is not being formatted
Block at 0x934000 is marked BAD and is not being formatted
Block at 0x938000 is marked BAD and is not being formatted
Block at 0x93c000 is marked BAD and is not being formatted
Block at 0x940000 is marked BAD and is not being formatted
Block at 0x944000 is marked BAD and is not being formatted
Block at 0x948000 is marked BAD and is not being formatted
Block at 0x94c000 is marked BAD and is not being formatted
Block at 0x950000 is marked BAD and is not being formatted
Block at 0x954000 is marked BAD and is not being formatted
Block at 0x958000 is marked BAD and is not being formatted
Block at 0x95c000 is marked BAD and is not being formatted
Block at 0x960000 is marked BAD and is not being formatted
Block at 0x964000 is marked BAD and is not being formatted
Block at 0x968000 is marked BAD and is not being formatted
Block at 0x96c000 is marked BAD and is not being formatted
Block at 0x970000 is marked BAD and is not being formatted
Block at 0x974000 is marked BAD and is not being formatted
Block at 0x978000 is marked BAD and is not being formatted
Block at 0x97c000 is marked BAD and is not being formatted



Which just goes on and on, trying more blocks. Does anyone have a tool that can wipe all the bad-block markings over JTAG?
 
benji_stein said:
OK. So I tried again with a hard serial connection, instead of the USB->serial adapter, and the output was no longer garbled, so I'll paste output from what it's currently doing. I unfortunately don't have output from what I tried previously, since I can't repeat it.
Which just goes on and on, trying more blocks. Does anyone have a tool that can wipe all the bad-block markings over JTAG?
Yes - you know what you're doing?
Send me an eMail and I'll send you a copy (EvilDragon_at_gp2x.de)
 
Last edited:
EvilDragon said:
Yes - you know what you're doing?
Send me an eMail and I'll send you a copy (EvilDragon_at_gp2x.de)
Sent. Two other quick questions as I think of it: a couple of times I got a terminal-like response at the end of the loading: [root@...], and then a few other times I got one that looked like GP2X#. However, I didn't seem to actually be able to send any commands (using hyperterminal). Is this correct, or should it be possible to do something else at that point?

Also, I noticed that after a number of hours of being off and untouched, the unit did not boot up to the uboot/kernel; it was instead back to the no-logoed black screen (but that could be re-installed using the earlier method). The unit did not have batteries in it (I'd only used the psu so far because of firmware stuffs) and had been unplugged, but I thought it was odd because I wouldn't think that should effect the NAND memory. It may have been a fluke (or a bad memory on my part of the way I left it), as I only recall it happening once. But I figure it deserved asking about.

Thanks again!
 
Last edited by a moderator:
Back
Top