Using NAND-AID to repair a broken eMMC (fix 160-0103 system memory error)

Warning

This tutorial is only for advanced users and has a serious risk of bricking the console. Make sure you read it completely before executing any step and that you understand every step and its implications.

While not strictly required, it is still recommended to install ISFShax, before soldering NAND-AID. In case something goes wrong, this then gives more options to troubleshoot the problem.

What is this for?

If you are encountering Error Code 160-0103 "There is a Problem with the system memory" or your Wii U is freezing at bootup it is likely that the eMMC Chip is failing.
This tutorial goes into fixing this Error 160-0103, by cloning your MLC to a SD card and fixing corruptions while doing so. This can become useful if the MLC (eMMC) chip is hardware damaged.

Please note: There are other possible causes for the 160-0103 error (like a CBHC brick).
Also we found other ways to fix this problem. To find the the procedure which is right for you follow the Ultimate Wii U Troubleshooting Guide
In short the other options are:

1690709917882.png


NOTE: In case you can't boot the recovery menu anymore, there is the option of dumping the eMMC using a Cardreader connected to the big pads on the NAND-AID. Else you can use defuse to rebuild a completely fresh MLC instead, so head over to https://gbatemp.net/threads/how-to-upgrading-rebuilding-wii-u-internal-memory-mlc.636309/

NOTE²: In case you get a purple LED but no screen output you might still be able to use the recovery menu blindly. TODO: Give exact steps for this.

Prerequisites

Use this fork of the recovery menu.
Use this fork of wupclient.

1692774079735.png


Before beginning use the recovery menu to dump the syslogs, then search all the .log files for MEDIA ERROR and DATA CORRUPTION.

Only errors concerning the dev:mlc01 are relevant. Here the example for such an error:
Code:
10:48:16:325: FSA: ### MEDIA ERROR ###, dev:mlc01, err:-2228230, cmd:11, path:(null)
Errors concerning the optical disc drive (dev:odd01) can be ignored. Here is such an example, that can be ignored:
Code:
10:48:16:325: FSA: ### MEDIA ERROR ###, dev:odd01, err:-2228230, cmd:11, path:(null)

A media error on mlc01 means the eMMC itself noticed it can no longer retrieve the data error free and indicates a failure of the eMMC.

In case you find a MEDIA ERROR show us the log file, please, so we can add it to https://hackmd.io/d12Fq9g-QlCjN2HJp7Yvew. It's fine to DM the log to @SDIO, @Lazr1026 or me in case you're concerned about the serial number.

In case you find DATA CORRUPTION only this might or might not be a damaged eMMC. It's recommended to show us the logs, too, so we can analyze them more deep. DATA CORRUPTION means the file system of the Wii U detected that a file is corrupted. That could be caused by either a bad eMMC chip or if a write got interrupted (e. g. power loss during save)

Required Knowledge

WARNING: Before you begin, doing anything to mlc/emmc, you need to understand a few core concepts. Make sure to read carfully and be aware of the implications, or you can seriously mess things up, loosing all data. If that happens you need defuse as descibed here.

The Wii U has not just one internal storage, but it has 3:
  • SLCCMPT: Holds all the vWii stuff, the system, the saves, the WiiWare tiles, we don't care for it in this tutorial.
  • MLC: Is where all your userdata goes, like games, saves, your accounts and it also hold the system applications. It's also called eMMC and what this tutorial is about.
  • SLC: Holds the second stage bootloader (boot1), the core Operating Systems (IOSU and CafeOS), the tickets for the installed titles (eShop and system apps), and some config files. Besides that it holds a file "scfm.img".
    This file is used as a block level write cache for the MLC. This means part of the MLC state resides in this file. They need always to be treated as one, if you restore one, you need also to restore the other. If they don't match, because you restored an older version of the mlc for example, the filesystem on top of them will become inconsistent and there will be no way of fixing that. You would either have to restore an older backup of both the SLC and the MLC or you would need to format the MLC. Both are things we try to avoid here.
You always have to carry the current state of the MLC forward.

What you can do: Read the dying eMMC to an Image, then clone it to a SD card and then use the SD card in place of the eMMC, without turning the console on in between.
You could then also read back the state of the current state of the SD card and flash it back to the eMMC and then run off the eMMC again. But only if you don't turn on the Wii U between the read and the swap.

What you can not do: Read the eMMC to an image, then use the console and then replace the eMMC by an SD card with that older image. Because then the SD won't have the current state.
You also can't flash an Image to the SD, use it for a while and then flash the image back a second time.

Where to get a NAND-AID from?

It's always a good idea to ask if someone near you has one. They might be willing to sell it for cheap.
Else here are some available for 3 € : https://gbatemp.net/threads/637225/

If that doesn't work for you you can also go to some PCB manufacturer like https://jlcpcb.com and let them do the printing. This is around $30 for 5 PCBs, so you could resell 4 to other users. The gerber file is available here and the important options are a thickness of 0.6 mm and castellated holes.

Dumping old MLC

Now that you confirmed it's really a hardware damaged MLC it's time to replace and fix it:
  1. Use the recovery menu to dump OTP + SEEPROM.

  2. Dump MLC + SLC from within the recovery menu. Turn your Wii U off by pulling the power cable and don't turn it back on until you replaced the eMMC with the SD card.
    1690709969015.png

    Note: Errors while dumping SLC are harmless and I would be surprised if you get no errors on MLC as it's hardware damages after all.

  3. Merge the dump on the PC, for Windows use copy /b mlc.bin.part01 + mlc.bin.part02 + (...) + mlc.bin.part15 mlc.bin. For linux or mac os x use cat mlc.bin.part* > mlc.bin
  4. Write the MLC dump onto a SD card with the same size of your MLC. So for a 8 GB unit use a 8 GB card and for a 32 GB console use a 32GB card (64GB won't work). 8 GB units can also use 16GB cards, but only 8GB will be usable.
    We currently recommend SanDisk Max Endurance cards for this but other cards have been used, too. Choice is yours.
    On Windows you can use Win32DiskImager or Etcher to write the mlc.bin to the SD card.
    On Linux you can use: dd if=mlc.bin of=/dev/XXX bs=1M status=progress Replace XXX with the name of the block device if the sdcard. You can use lsblk to figure out the name. Also make sure the sd card isn't mounted. Optionally to improve the performance, you can try to run blkdiscard -f first (before the dd) on the SD and then add the conv=sparse option to the dd command.
Soldering NAND-AID

  1. Cut the CLK line (R26) - using a scalpel or an x-acto knife - to disable the eMMC.
    1690709997093.png

  2. Install the NAND-AID and insert the SD. For soldering the NAND-AID it's recommend to first solder the big GND VIA. Since v3.0 you'll see a uncovered VIA on the Wii Us motherboard through this GND hole. This VIA is GND, too, so it doesn't matter if you short with it. Also since v3.0 there's a GND arm right nex to the hole in case you want to solder an alternative GND connection instead.

    The board will suck lots of the heat away, so you need some patience and really need to make sure the solder properly flows. Check that the connections really holds, before you move on to the rest. To make soldering easier, you should first tin the GND pad on the board, so it has fresh solder and preheating the board also helps.

    After GND solder the data connections to the pads/resistors on the board.

    Add the wire for 3V3. Then add the SD slot and after that the capacitor. Also short the DSB pads, which shorts the eMMC CLK to GND. If you ever want to access the eMMC again, you need to open the DSB jumper again.
    1690710029169.png
    1690360176330.png


    NOTE: On some old board revisions there's a capacitor in the way. It's save to just remove it.
    1690710054698.png

    1690710070025.png

    1690710084431.png


    NOTE²: In case you're kind of a patchwork person you can also use a microSD to SD adapter and a capacitor instead of the NAND-AID. How to do this is out of scope of this tutorial through, so you are a bit on your own. See this post for more details: https://gbatemp.net/threads/using-n...0103-system-memory-error.636361/post-10213230
    IMG_20230401_174716.jpg

    1690359335313.png

    TODO: Show adapter installed into a Wii U.
Repairing the corruption

  1. Boot to the recovery menu again, then start the network and wupserver.
    1690710121340.png

    TODO: Add how to add network config to the SD card

  2. Run MLC Checker from recovery and inspect your mlcchecker.txt log.
    • For corrupted files inside of /vol/storage_mlc01/usr/title/ use wupservers delete_title() option, so for example delete_title("/vol/storage_mlc01/usr/title/00050000/1010ED00").
    • For corrupted files inside of /vol/storage_mlc01/sys/title/ use the Install WUP option to reinstall the corresponding system title. It's recommended to do this as a last step. Also some titles might not interrupt the boot, so you could even reinstall them with NUSspli as a very last step.
    • For corrupted folders: These can't be deleted but we have to move them. Even if moved, these still crash a factory reset (so don't do one) The only way to get rid of them is a reformat (see https://gbatemp.net/threads/how-to-upgrading-rebuilding-wii-u-internal-memory-mlc.636309/ ) TODO: Add how to move them while keeping quotas in mind. In case these folders where in /vol/storage_mlc01/sys/ the corresponding title needs to get reinstalled afterwards.
    • For corrupted files at other subfolders in /vol/storage_mlc01/usr/ it should be save to delete the files (with wupclients w.rm()], so for example w.rm("/vol/storage_mlc01/usr/save/00050000/1010ed00/user/80000002/userdata.dat"). This might damage savefiles and stuff through, so always make sure that you know what you're deleting and how to fix the result then (for example by deleting the games save from data management). In case you are unsure ask before doing something stupid!
    • For other corrupted files in /vol/storage_mlc01/sys/ ask us what to do!
    Lastly run flush_mlc() in wupclient.

  3. Run the MLC Checker again to see if you missed anything.
Your Wii U should now work normally again.

Bonus: Work around factory reset crash loop

There are some rare cases where users tried a factory reset while having corrupted folders. This results in a crash loop.

To break out of this loop you first have to install NAND-AID and fix the corruptions as told above. After that use wupclients delete_title() function to remove all titles from /vol/storage_mlc01/usr/title/. Lastly select Set Initial Launch from the recovery menu and then select 0 - Initial Setup.

See also

https://gbatemp.net/threads/how-i-fixed-160-0103-system-memory-error.626448/
https://www.boards.ie/discussion/2058305084/my-wii-u-it-met-with-a-terrible-fate
https://gbatemp.net/threads/how-to-upgrading-rebuilding-wii-u-internal-memory-mlc.636309/

Thanks

@SDIO For figuring anything out, doing all of the hard puzzling and coding night and day to make this possible
@GaryOderNichts For the recovery menu
@Nandster For the pictures as well as for documenting the whole process over at boards.ie
@Voultar For the NAND-AID PCB design
@skawo For providing an earlier Tutorial, we take some passages from
 
Last edited by SDIO,

PowrUpGaming

Member
Newcomer
Joined
Feb 26, 2024
Messages
24
Trophies
0
Age
35
XP
26
Country
United States
you could try to create that folder and copy the files over and see what happens
I can create the folder and transfer the files but it doesnt stick. As soon as I reboot into WiiU IOS the profile doesnt show up. I tried to edit the permission to match of the other profile folders and files but those settings wont stick either. Is my only option to redo step 4 :Erase MLC and Delete scfm.img, folloowed by step 5: put wafel_setup_mlc.ipx on the SD to trigger initial setup again?
 

SDIO

Well-Known Member
Member
Joined
Feb 13, 2023
Messages
2,263
Trophies
0
Age
28
XP
1,382
Country
Germany
Maybe it would also work if you you copy the account back under a different id, but you would also have to adjust the id in the account.dat and then when restoring the saves also take care to restore them to the correct ID
 

PowrUpGaming

Member
Newcomer
Joined
Feb 26, 2024
Messages
24
Trophies
0
Age
35
XP
26
Country
United States
Maybe it would also work if you you copy the account back under a different id, but you would also have to adjust the id in the account.dat and then when restoring the saves also take care to restore them to the correct ID
That seems like a lot of guesswork to get that working right on my part. I'm already not very familiar with the WiiU and its file structure. I haven't got far in restoring everything, so I don't mind starting from step 4 if that wont cause any harm
 

PowrUpGaming

Member
Newcomer
Joined
Feb 26, 2024
Messages
24
Trophies
0
Age
35
XP
26
Country
United States
Before restoring a save make sure you launched the game at least once and let it create it's save data before you restore the old save data. Else quotas or permissions might be wrong.
Do I have to do this with every user before restoring saves? I have all the games downloaded. I only had to use NUSspli for one game. I deleted the fake ticket and restored its original ticket. I created the update folder w/ UFDiine, and uninstalled ISFShax. So transferring saves is the last thing I need to do.
 

PowrUpGaming

Member
Newcomer
Joined
Feb 26, 2024
Messages
24
Trophies
0
Age
35
XP
26
Country
United States
Yes the game needs to be launched for every user you are restoring saves for
One last question: I couldn't get SaveMii to properly restore saves, so I restored the saves by dragging all the subfolders within the 00050000 folder. Within the save folder, there are also folders "00050010" and "00050030" do I need to do anything with them? I'm not sure what they're for. Should I transfer those as well? I'm just curious: where are Wii saves stored? Wii saves were already showing when I launched the Wii menu, but I hadn't restored anything Wii related yet.
 
Last edited by PowrUpGaming,

cga8086

Member
Newcomer
Joined
Jul 7, 2020
Messages
11
Trophies
0
Age
33
XP
101
Country
United States
hey there, the guide says:
Dump MLC + SLC from within the recovery menu. Turn your Wii U off by pulling the power cable and don't turn it back on until step 6.

but there is no step #6 in the guide.


Then i got really lost at:
"Boot to the recovery menu again, then start the network and wupserver."
TODO: Add how to add network config to the SD card
 

thom_hpl

New Member
Newbie
Joined
Apr 6, 2024
Messages
4
Trophies
0
Age
32
XP
10
Country
Belgium
Hello,
Just thought I'd mention that I succesfully used the recovery menu to fix a Wii U that would simply freeze after a minute or so every time it would boot.

!!! PLEASE dont repeat if you care about your WiiU, that could cause even worse damage to your emmc if you have a bad one !!!

I heard that a format to factory settings could fix these kind of freeze, however I wasn't able to launch the format before the console would freeze. I used a pico with UDPIH to launch the recovery menu fork from Jan Hofmeier. I selected the set initial launch to 255 - factory settings to manually trigger the format.

Formatting went smoothly, I was able to go through the whole wii U setup. I am updating the firmware right now, I'll let you know if something bad happens, but as far as I know, this wii U is fixed.

Thank you for the infos and ressources!
Thomas
 
Last edited by thom_hpl,

SDIO

Well-Known Member
Member
Joined
Feb 13, 2023
Messages
2,263
Trophies
0
Age
28
XP
1,382
Country
Germany
Nooo, that is bad advice. You are lucky it didn't brick during the factory reset. Doing the update is stretching the luck again.
 
  • Like
Reactions: Nonstiq

thom_hpl

New Member
Newbie
Joined
Apr 6, 2024
Messages
4
Trophies
0
Age
32
XP
10
Country
Belgium
Nooo, that is bad advice. You are lucky it didn't brick during the factory reset. Doing the update is stretching the luck again.
Well I didnt meant to provide advice, just a testimony basically (maybe I should have disclaimed that explicitly? edit: added a disclaimer). You're obviously way more knowledgeable than me about Wii U issues, but my working theory was that I wasn't really having a bad emmc issue, only a software bug that would be fixed in the format. For two reasons basically: I had no error codes on screen (the console would work fine before freezing), and I found no errors in the logs I dumped (I can give them if it's interesting to you).
But yeah, probably not an exemple to follow, I figured that I could take some risks for a broken wiiU that I bought for 10€ yesterday...
 
Last edited by thom_hpl,

SDIO

Well-Known Member
Member
Joined
Feb 13, 2023
Messages
2,263
Trophies
0
Age
28
XP
1,382
Country
Germany
Did you dump the logs before the factory reset? Because the factory reset deletes all the logs.
You can share them if you want and I can have a look.
What Manufacturer is the eMMC?
Post automatically merged:

The thing is if it bricks during a write it will brick likely so hard that not even UDPIH will work anymore. That's why the general advise is to install ISFShax, as that would allow unbricking from such situations without soldering defuse
 
Last edited by SDIO,

thom_hpl

New Member
Newbie
Joined
Apr 6, 2024
Messages
4
Trophies
0
Age
32
XP
10
Country
Belgium
Did you dump the logs before the factory reset? Because the factory reset deletes all the logs.
You can share them if you want and I can have a look.
What Manufacturer is the eMMC?
Yes I dumped it before the reset. I dumped everything I could but just noticed I already reformatted the sd card I used to dump the MLC... :sleep: I'll definitely dump it again but it's of no use to understanding the issue before the factory reset.

I'm attaching the logs to this post.

System information says it's a hynix chip for the emmc, so I guess it is a potentially risky one. If I wanted to have a future proof console, would you recommend installing a SD card replacement even if the emmc is ok for now?

I'm curious though, a freeze during a factory reset could obviously cause issues with the MLC but how could it prevent to exploit the wiiu USB stack with UDPIH? I guess it's part of the OS in the SLC, a factory reset would touch the SLC? Maybe the OS is also partly stored in the MLC and so it won't enumerate the USB devices anymore?

I agree that the update is indeed very dangerous in case it freezes while doing it.

BTW, the update worked perfectly, I tried letting the wii U running for a while and then played a bit on new super mario wii, no issues anymore.
 

Attachments

  • logs.zip
    517.7 KB · Views: 3

V10lator

Well-Known Member
OP
Member
Joined
Apr 21, 2019
Messages
2,635
Trophies
1
Age
36
XP
5,494
Country
Germany
If I wanted to have a future proof console, would you recommend installing a SD card replacement even if the emmc is ok for now?
No. Just install ISFSHax so the console is able to boot even if the eMMC is completely f***ed up.

how could it prevent to exploit the wiiu USB stack with UDPIH?
Cause if this is really a defctive eMMC, aka a hardware issue, the files will corrupt more and more untill a state the the Wii U can't boot far enough to initialise the USB stack. No USB stack = no UDPIH. Doing massiv writes, like a firmware update, is able to speed this process up dramatically, so basically you're lucky the firmware update didn't crash and take the OS down with it (that's the second thing why UDPIH could stop to work: A partly firmware update causing API breakage and as such a crash of the Wii U before it initialises the USB stack. As SDIO said a firmware update, even if just partly, also removes the logs... So users who think they could have a defective eMMC really should not do a firmware update).

Maybe the OS is also partly stored in the MLC
Exactly.

Anyway, you said there where no errors in the logs, so maybe your issues where really something different (old software like CBHC can crash at any time, for example). As the logs are gone we can't confirm anymore so I would also advise what SDIO said: Install ISFSHax so you're on the save side in case things go worse in the future but else don't do any prep work yet (except maybe regulary savegame backups).
 
Last edited by V10lator,

SDIO

Well-Known Member
Member
Joined
Feb 13, 2023
Messages
2,263
Trophies
0
Age
28
XP
1,382
Country
Germany
I can't see signsof eMMC corruption in the logs. But I think it still wouldn't be a bad idea to run the MLC Checker in the recovery, so all files get checked for corruption.
Also doing a mlc backup and looking for errors / retrys would tell if all sectors (even the ones not used rn) can still be read.

I'm curious though, a freeze during a factory reset could obviously cause issues with the MLC but how could it prevent to exploit the wiiu USB stack with UDPIH? I guess it's part of the OS in the SLC, a factory reset would touch the SLC? Maybe the OS is also partly stored in the MLC and so it won't enumerate the USB devices anymore?
For UDPIH to work the console needs to boot far enough to be in the right state. If you do heavy writing like an update, it is possible that a write only partially overwrites a flash erase block (which is much bigger than a logical sector). If that happens the eMMC needs to read the rest of the erase block back. But if the ECC checks fail on that readback, it won't be able to complete the write. Writes are cached by SCFM on the SLC and the write out will happen some time later. If it hits such a bad erase block with a partial write, you won't get an error, SCFM would just hold the console, which looks like a freez. On the next reboot SCFM would try to repeat the write and if that fails agan, you won't even get a picture because SCFM is one of the first things that init. Long before UDPIH can work...
Also the eMMC could just say: There are too many errors, I am out off spare blocks, I go read only completely. That would have the same effect.

Since ISFShax already exploits boot1, it runs before the OS and before SCFM can crash anything,, thus giving an entry point back in.
 

thom_hpl

New Member
Newbie
Joined
Apr 6, 2024
Messages
4
Trophies
0
Age
32
XP
10
Country
Belgium
No. Just install ISFSHax so the console is able to boot even if the eMMC is completely f***ed up.
Since ISFShax already exploits boot1, it runs before the OS and before SCFM can crash anything,, thus giving an entry point back in.
Will do to the 2 wii U I own, thanks.

... As the logs are gone we can't confirm anymore ...
They aren't gone, I lost the eMMC dump I had but the logs are attached to my last post ;)

Cause if this is really a defctive eMMC, aka a hardware issue, the files will corrupt more and more untill a state the the Wii U can't boot far enough to initialise the USB stack.
For UDPIH to work the console needs to boot far enough to be in the right state. If you do heavy writing like an update, it is possible that a write only partially overwrites a flash erase block (which is much bigger than a logical sector). If that happens the eMMC needs to read the rest of the erase block back. But if the ECC checks fail on that readback, it won't be able to complete the write. Writes are cached by SCFM on the SLC and the write out will happen some time later. If it hits such a bad erase block with a partial write, you won't get an error, SCFM would just hold the console, which looks like a freez. On the next reboot SCFM would try to repeat the write and if that fails agan, you won't even get a picture because SCFM is one of the first things that init.
So basically it's risky simply because the IOS-FS loads before IOS-USB, therefore it could hang the whole system if it's stuck in a bad emmc write operation?

I now understand that I potentially dodged a bullet with the update if my emmc is bad, but was the factory reset very dangerous as well? @SDIO you said that the SCFM load failure would occur during heavy writing, I guess factory reset is more about deleting user and config files in the filesystem than doing heavy writing?

Overall I get the feeling that some failsafe mecanisms could have been implemented by Nintendo to remedy this whole mess, at least to provide some recovery options to their users even if it meant loosing their data.

Anyway, thanks to you both for the time you took sharing this. It really boosted my interest for this WiiU system even if I just bought a couple of broken ones last week to try to have a decent HDMI console to play some Wii and Gamecube games. The scene for this console seems really open, the UDPIH write up from GaryOderNichts is a good read for instance.
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    K3Nv2 @ K3Nv2: Lol rappers still promoting crypto