Corrupted Cartridge Fixer Release

  • Thread starter Thread starter skawo
  • Start date Start date
  • Views Views 214,654
  • Replies Replies 838
  • Likes Likes 95
Well, I did not add this since you're supposed to look at the chunks report at the end. I suppose I could do that, though, and just save the report to a file...
Well, that’s what I mean: I could not see the result because the console turned itself off at some point well past after it finished verifying, several times, and I do not know what makes it turn off.
 
Curious if someone could help. When attempting repair it just gets stuck the first time it hits something it can’t fix. I have to hit y to skip. Does it not do that automatically so I can see the total number of errors? I didn’t want to sit for hours hitting y every time it gets stuck.

For reference this is a copy of Omega Ruby that will not boot.
 
Thanks a lot for testing this and for the detailed notes — this is genuinely useful.

The important detail is that the refresh counter stopped completely and B/Y did nothing. That's not the "it's just retrying" behavior — it means the tool is stuck waiting on the cartridge itself and can't even poll the buttons.

The 82M-refresh run was one failure mode; the frozen-at-277 (and 193/73/19) hangs are a different one, and the decreasing numbers across reseats suggest the cartridge is progressively failing to respond.

To answer your question directly: if the refresh count doesn't change for ~60 seconds, it is hung and waiting longer won't help. You can stop it.

We're working on a timeout for the cartridge read path so it can't sit there forever, and so it reports a bad cartridge instead of freezing.

Before that, a few things would really help us:
1. Can GodMode9 read this cartridge at all through other paths? E.g. browse the gamecart drive, or try dumping any file from it. Does it also hang, or does a dump complete?
2. Do you have a known-good cartridge (or another game) to test with? Does the fixer / verify complete normally on it? We want to be sure a timeout won't hurt normal reads.
3. When it's stuck, is the refresh counter completely frozen (unchanged for 60s+)? Does the screen still redraw anything, or is everything frozen? And does the POWER button still shut it down normally?
4. How fast does it hang now — seconds after starting? Is it always on the first file in the EXEFS step?

Thank you very much for your feedback!
My cartridge also does the game thing. I thought the version shared here the other day worked fine, but that did crash after a couple hours.
1. It doesn't crash at a consistent refresh count, sometimes it will crash after 15 mins, sometimes only 1 min.
My cartridge also tends to do the game thing.
2. It doesn't crash at a consistent refresh count, sometimes it will crash after 15 mins, sometimes only 1 min.
It is fully stuck, nothing happens when holding B, pressing the power button. Nothing else is drawn on the screen.
3. Fixer and verify does work on the working cartridges I have with no issue.
4. It always crashes on the same file, at the first chunk.

I have checked the md5 checksum of the 3ds file after each run and the data has not changed.
I also kept the cartridge in the 3ds whilst in sleep mode and have checked the md5 checksum after a while. It does seem to change after a while.
 
Curious if someone could help. When attempting repair it just gets stuck the first time it hits something it can’t fix. I have to hit y to skip. Does it not do that automatically so I can see the total number of errors? I didn’t want to sit for hours hitting y every time it gets stuck.

For reference this is a copy of Omega Ruby that will not boot.
Hold X when starting to enable autoskip.

@Philippo
It's weird these hangs only started getting reported now. Can you try version 1.4? That one to be stable for a very long time...

@Vegeta77
Oh, sorry, I misread. Weird, I'll have to look and see if godmode turns the console off when it's idle for a while. Meanwhile you can enable the logging with Y to get a report every time, I guess.
 
Last edited by skawo,
Hold X when starting to enable autoskip.


It's weird these hangs only started getting reported now. Can you try version 1.4? That one to be stable for a very long time...


Oh, sorry, I misread. Weird, I'll have to look and see if godmode turns the console off when it's idle for a while. Meanwhile you can enable the logging with Y to get a report every time, I guess.
Unfortunately 1.4 seems to also hang. Current hash doesn't even seem to change on that version before crashing.
 
Thank you! I hadn’t seen the option for auto skip. So far it’s at 0 percent complete. 508 indictable and 36 fixed. Any chance a few runs will work, or you think it’s dead?
 
NEW TEST BUILD — please try it and report back!

Hey @Vegeta77 @Phillipo @NyaakoXD @comokepa and everyone else!

We've been working on the cartridge fixer and have a new build for testing. It focuses on the
problems several of you reported, and adds a much friendlier interface.

WHAT'S FIXED (the important stuff)

- No more "is it frozen, or just slow?" If the cartridge stops responding, the tool now detects it
and stops with a clear message ("Cartridge stopped responding. It may be failing or dead.") instead
of sitting there forever while the refresh counter climbs. You no longer have to guess how long to
wait.
- It no longer freezes and ignores the buttons. Before, when the cart got stuck the screen froze and
B/Y did nothing. Now it stays responsive and you can always cancel.
- Fixed a bug that broke verification on healthy cartridges. Recent test builds made "Verify" and the
fixer fail almost immediately on a good cart. That is fixed now — verify and the fixer run through
to the end on a healthy cartridge.
- The fixer now writes a readable report and no longer chokes on very heavily corrupted carts.

NEW: a pre-flight screen

Before the fix starts you get a simple screen to choose what it does — no more memorizing hidden
button combos:
- Turn logging on/off.
- "Refresh on every read" for badly broken carts.
- Choose how patient it should be (Retry limit / Stuck limit), with simple presets.
- Your choices are remembered for next time.

NEW: a live dashboard

While it runs you get a clear screen showing the current phase, overall progress, how many chunks
were fixed or unfixable, elapsed time, and a little "heartbeat" so you can tell it's alive. If a read
stalls, it shows "NO UPDATE FOR Ns" so you know what's going on.

PLEASE TEST

If you have a cartridge you've been trying to rescue — or a healthy one, to confirm nothing broke —
please give this build a try and post your results:
- Does the fixer now get past the point where it used to freeze?
- Do you see the new pre-flight screen and the live dashboard?
- Any numbers you can share (fixed/unfixable chunks, how far it got, how long it took)?

Even "it worked fine on a good cart" is useful. Thanks — your reports are exactly what makes this
better!

Hope you guys find the new Fixer screen useful ;)

Hey @skawo, I will open a draft PR so you can review the changes.
 

Attachments

  • Like
Reactions: Otakyon
Sent you a message. Thanks so much for this.
Post automatically merged:

Should I go ahead and cancel my current run and try the new version? It’s been going (old version) for about 5 hours. It’s currently at 1%. 72 fixed chunks. 1051 unfixable.
 
Last edited by Vegeta77,
  • Like
Reactions: glauberlima
Well, in your case the "hangs" were because it was working really long on really bad chunks, right?
I don't think this version will actually behave differently in that regard (if the chunks refuse to get fixed it still goes at it until someone skips it). Might as well let the current run finish, I think.
 
  • Like
Reactions: Vegeta77
Tested the new version on my Pokemon Omega Ruby.

Ran once with automatic skip enabled. It correctly detected the EXEFS timeout after 271 refreshes, waited 5 seconds, and gave the full error and "reseat cart" after 16 seconds total.
Reseated the cartridge. Ran again with refresh every read. Same expected error about a dead cart.

Popped in Pokemon X. Verified cartridge. No oddities.
 
  • Like
Reactions: skawo
Alright, sounds like the changes work, then. I'll merge them when you make the PR, @glauberlima

@Peffse, kind of sounds like the Omega Ruby cart might have some sort of physical defect. Could be one of those carts that actually need reflowing?
 
Last edited by skawo,
Tested the new version on my Pokemon Omega Ruby.

Ran once with automatic skip enabled. It correctly detected the EXEFS timeout after 271 refreshes, waited 5 seconds, and gave the full error and "reseat cart" after 16 seconds total.
Reseated the cartridge. Ran again with refresh every read. Same expected error about a dead cart.

Popped in Pokemon X. Verified cartridge. No oddities.

Excellent!

Did you notice any issues with the new screen? Overlapping items, heartbeat indicator stuck, etc?
 
This is wild to me. Coming up on 24 hours. 3 percent complete. 4475 unfixable. 213 fixed. Honestly have no clue if I have any shot of saving it, or if this is normal.
 
NEW TEST BUILD — please try it and report back!

Hey @Vegeta77 @Phillipo @NyaakoXD @comokepa and everyone else!

We've been working on the cartridge fixer and have a new build for testing. It focuses on the
problems several of you reported, and adds a much friendlier interface.

WHAT'S FIXED (the important stuff)

- No more "is it frozen, or just slow?" If the cartridge stops responding, the tool now detects it
and stops with a clear message ("Cartridge stopped responding. It may be failing or dead.") instead
of sitting there forever while the refresh counter climbs. You no longer have to guess how long to
wait.
- It no longer freezes and ignores the buttons. Before, when the cart got stuck the screen froze and
B/Y did nothing. Now it stays responsive and you can always cancel.
- Fixed a bug that broke verification on healthy cartridges. Recent test builds made "Verify" and the
fixer fail almost immediately on a good cart. That is fixed now — verify and the fixer run through
to the end on a healthy cartridge.
- The fixer now writes a readable report and no longer chokes on very heavily corrupted carts.

NEW: a pre-flight screen

Before the fix starts you get a simple screen to choose what it does — no more memorizing hidden
button combos:
- Turn logging on/off.
- "Refresh on every read" for badly broken carts.
- Choose how patient it should be (Retry limit / Stuck limit), with simple presets.
- Your choices are remembered for next time.

NEW: a live dashboard

While it runs you get a clear screen showing the current phase, overall progress, how many chunks
were fixed or unfixable, elapsed time, and a little "heartbeat" so you can tell it's alive. If a read
stalls, it shows "NO UPDATE FOR Ns" so you know what's going on.

PLEASE TEST

If you have a cartridge you've been trying to rescue — or a healthy one, to confirm nothing broke —
please give this build a try and post your results:
- Does the fixer now get past the point where it used to freeze?
- Do you see the new pre-flight screen and the live dashboard?
- Any numbers you can share (fixed/unfixable chunks, how far it got, how long it took)?

Even "it worked fine on a good cart" is useful. Thanks — your reports are exactly what makes this
better!

Hope you guys find the new Fixer screen useful ;)

Hey @skawo, I will open a draft PR so you can review the changes.

Tested it on my broken cartridge, and it threw up that error on the first phase.
The options you implemented are quite handy tho, I like it.

works fine on a known working cartridge.

I have tried reflowing this cartridge before, but I may try completely removing the chip and solder it back on the board just to be sure. It can't break it any further
 
This is wild to me. Coming up on 24 hours. 3 percent complete. 4475 unfixable. 213 fixed. Honestly have no clue if I have any shot of saving it, or if this is normal.
Sounds normal for a heavily corrupted card. Probably is unsalvageable in this state unfortunately.
 
NEW TEST BUILD — please try it and report back!

Hey @Vegeta77 @Phillipo @NyaakoXD @comokepa and everyone else!

We've been working on the cartridge fixer and have a new build for testing. It focuses on the
problems several of you reported, and adds a much friendlier interface.

WHAT'S FIXED (the important stuff)

- No more "is it frozen, or just slow?" If the cartridge stops responding, the tool now detects it
and stops with a clear message ("Cartridge stopped responding. It may be failing or dead.") instead
of sitting there forever while the refresh counter climbs. You no longer have to guess how long to
wait.
- It no longer freezes and ignores the buttons. Before, when the cart got stuck the screen froze and
B/Y did nothing. Now it stays responsive and you can always cancel.
- Fixed a bug that broke verification on healthy cartridges. Recent test builds made "Verify" and the
fixer fail almost immediately on a good cart. That is fixed now — verify and the fixer run through
to the end on a healthy cartridge.
- The fixer now writes a readable report and no longer chokes on very heavily corrupted carts.

NEW: a pre-flight screen

Before the fix starts you get a simple screen to choose what it does — no more memorizing hidden
button combos:
- Turn logging on/off.
- "Refresh on every read" for badly broken carts.
- Choose how patient it should be (Retry limit / Stuck limit), with simple presets.
- Your choices are remembered for next time.

NEW: a live dashboard

While it runs you get a clear screen showing the current phase, overall progress, how many chunks
were fixed or unfixable, elapsed time, and a little "heartbeat" so you can tell it's alive. If a read
stalls, it shows "NO UPDATE FOR Ns" so you know what's going on.

PLEASE TEST

If you have a cartridge you've been trying to rescue — or a healthy one, to confirm nothing broke —
please give this build a try and post your results:
- Does the fixer now get past the point where it used to freeze?
- Do you see the new pre-flight screen and the live dashboard?
- Any numbers you can share (fixed/unfixable chunks, how far it got, how long it took)?

Even "it worked fine on a good cart" is useful. Thanks — your reports are exactly what makes this
better!

Hope you guys find the new Fixer screen useful ;)

Hey @skawo, I will open a draft PR so you can review the changes.
It certainly looks very nice. Will give it a shot!
 

Site & Scene News