Introduction
Ce tutoriel est réservé aux utilisateurs avancés et présente un risque sérieux de bricker la console.
Assurez-vous de le lire entièrement avant de vous lancer des cette aventure.
Si vous rencontrez le code d'erreur 160-0103 "Il y a un problème avec la mémoire système" ou si votre Wii U se bloque au démarrage, il est probable que la puce eMMC soit défaillante.
Ce tutoriel explique comment corriger cette erreur 160-0103, en clonant votre MLC sur une carte SD et en corrigeant les corruptions memoires.
Remerciements :
- GaryOderNichts : Développeur du "Recovery Menu"
- skawo : Membre actif de la scene Wii-U, et développeur du tool "MLCFilter".
- V10lator : Membre actif de la scene Wii-U
- SDIO : Membre actif de la scene Wii-U
- Serjio193 : Membre actif de la scene Wii-U
- Voultar : Designer du PCB "NAND-AID"
Difficulté
Matériel nécessaire
- Tournevis Security Bit
- Tournevis cruciforme
-
Wii-U version 32g :
Wii-U version 8g :1x Carte microSD 32g (SanDisk Max Endurance recommandée)
1x Carte microSD 64g1x Carte microSD 8g (SanDisk Max Endurance recommandée)
1x Carte microSD 16g - 1x Kit PCB NAND-AID :
viewtopic.php?t=543 - 1x Raspberry Pi Pico
1 - UDPIH Exploit
Dans un premier temps, il nous faut pouvoir accéder au "Recovery Menu".
Pour ce faire, il nous faut utiliser une back door, le UDPIH Exploit !
Pour installer UDPIH sur Raspberry Pi Pico :
- Téléchargez la dernière version de udpih.uf2 :
https://github.com/GaryOderNichts/udpih/releases
- Maintenez le bouton BOOTSEL de la carte enfoncé et connectez le Pico à votre PC.
- Votre PC détectera le Pi comme une clé USB.
- Copiez le fichier .uf2 téléchargé précédemment sur le Pico. Il se déconnectera automatiquement une fois l'opération effectuée.
- Le Pico est maintenant flashé et peut être utilisé en tant que UDPIH
2 - Recovery Menu
2.1 Formater la carte SD 16g / 64g en FAT32
Formater votre carte SD en FAT32 via utilitaire windows :
2.2 Copier "Recovery_Menu" option "Dumper" sur votre carte SD
- Téléchargez "recovery_menu_dumper.zip" et décompressez-le : Renommer le fichier décompressé "recovery_menu_dumper" en "recovery_menu"
Copier le fichier "recovery_menu" a la racine de votre carte SD 16g / 64g
2.3 Lancer le Recovery Menu via UDPIH
- Ejecter votre carte SD 16g / 64g "proprement" de votre PC via la fonction "Ejection de votre OS".
- Insérer votre carte SD 16g / 64g dans le port SD votre Wii-U, disponible en face avant de la console.
Allumer votre console, et au moment ou apparait le logo "Wii-U", connecter rapidement votre Raspberry Pi Pico précédement préparer pour l'expoit UDPIH
3 - Décharger les Logs, OTP, SEEPROM de la Wii U
Il est très important de récupérer les trois items suivants, en cas de brick total, ils serviront à decrypter le dump de vos SLC/MLC
- Logs : Journal d'activité de la console, comprenant les differents bugs récemment rencontrés par la console
- OTP : One Time Programmable memory - Contient un assortiment de données en lecture seule, y compris les clés de chiffrement/déchiffrement de la console.
- SEEPROM : SPI EEPROM : Contient la configuration hardware de la console
- Dans le menu de "Recovery_Menu", a l'aide du bouton "Eject, sélectionnez "Dumps Syslogs" et appuyé sur "Power".
Les logs de la console seront sauvegardés dans un dossier "logs" a la racine de votre carte SD
- Dans le menu de "Recovery_Menu", a l'aide du bouton "Eject, sélectionnez "Dumps OTP + SEEPROM" et appuyé sur "Power".
OTP + SEEPROM seront sauvegardés dans un dossier la racine de votre carte SD
Petite vidéo de présentation du menu "Recovery Menu" :
4 - Dump NAND MLC & SLC
Pour information, la console utilise deux types de mémoires différentes : MLC & SLC
La SLC sert de mémoire tampon a la MLC. L'une ne fonctionne pas sans l'autre.
MLC : C'est là que vont toutes vos données utilisateur, comme les jeux, les sauvegardes, vos comptes et il contient également les applications système. Il s'appelle également eMMC et en quoi consiste ce didacticiel.
SLC : contient le chargeur de démarrage de deuxième étape (boot1), les systèmes d'exploitation principaux (IOSU et CafeOS), les tickets pour les titres installés (eShop et applications système) et certains fichiers de configuration.
En plus de cela, SLC il contient un fichier "scfm.img".
Ce fichier est utilisé comme cache d'écriture de niveau bloc pour le MLC.
Cela signifie qu'une partie de l'état du MLC réside dans ce fichier. Elles doivent toujours être traitées comme un seul , si vous restaurez l'un, vous devez également restaurer l'autre.
S'ils ne correspondent pas , parce que vous avez restauré une ancienne version du mlc par exemple, le système de fichiers deviendra incohérent et il n'y aura aucun moyen de corriger cela.
Vous devrez soit restaurer une sauvegarde plus ancienne du SLC et du MLC, soit formater le MLC. Ce sont deux choses qui ne seront pas abordées dans ce tutoriel.
Sur une Wii-U 32G, on aura donc :
- 1X NAND MLC de 32G
- 1X SLC de 512Mo
Bien que votre console soit briqué à cause de la NAND défectueuse, nous devons dans un premier temps sauver un maximum de donnée encore accessible.
Nous allons donc réaliser un dump complet des deux mémoires.
Dans le menu de "Recovery Menu" mod "Dumper", selection la première ligne a l'aide du bouton"Eject"de votre console et valider par "Power".
Le dumper se lancera et exécutera un dump dans cette ordre :
- Dump SLC
- Dump MLC
Si le dump de votre SLC échoue, pas d'inquiétude, il programme refera un passe a la suite du dump de la MLC.
A la fin du dump, veuillez éteindre votre console et débrancher la ! Ne surtout pas essayer de la rallumer !
5 - Ecriture du DUMP MLC sur votre carte SD de 32GPour rappel, la SLC et la memoire tampon de la MLC, si vous rallumer votre console, la console écrira des fichiers logs sur la MLC, ce qui désynchronisera votre dump, rendant le dump de la MLC inutile, vous devrez refaire l'opération...
5.1 Concatenation des fichiers dump .partXX
Ejectez la carte SD de 16g / 64g de votre Wii-U et insérer la dans votre PC.
Le dumper a dû vous créer plusieurs fichiers comme l'image ci-dessous :
Nous devons les contacter pour reconstruire limage en un seul fichier.
Sous windows, nous utiliserons la commande "Copy"
Sous OSX ou linux, nous utiliserons la commande "Cat"
Voici un exemple pour concatener les fichiers sous OSX :
Code : Tout sélectionner
cat mlc.bin.part01 mlc.bin.part02 mlc.bin.part03 mlc.bin.part04 mlc.bin.part05 mlc.bin.part06 mlc.bin.part07 mlc.bin.part08 mlc.bin.part09 mlc.bin.part10 mlc.bin.part11 mlc.bin.part12 mlc.bin.part13 mlc.bin.part14 mlc.bin.part15 > mlc.bin
Code : Tout sélectionner
copy /b mlc.bin.part01 + mlc.bin.part02 + mlc.bin.part03 + mlc.bin.part04 + mlc.bin.part05 + mlc.bin.part06 + mlc.bin.part07 + mlc.bin.part08 + mlc.bin.part09 + mlc.bin.part10 + mlc.bin.part11 + mlc.bin.part12 + mlc.bin.part13 + mlc.bin.part14 + mlc.bin.part15 mlc.bin
Nous allons preparer la carte SD qui remplacera la NAND 32G défectueuse de la console Wii U
Pour réaliser cette étape, vous aurez besoin de l'utilitaire "Win32diskimager" disponible a cette adresse :
https://win32diskimager.org/
Voici une petite video de presentation de Win32diskimager :
- Sélectionnez l'image mlc.bin précédement concaténée
- Sélectionnez votre carte SD
- Cliquez sur "Write" et attendez la fin de l'écriture.
Félicitations, votre carte SD de remplacement eMMc (MLC) est faite
6 - Démontage de la Wii-U
Pour ouvrir votre console, je vous propose de suivre directement cette vidéo explicative.
L'objectif et d'avoir accès a la NAND MLC de la console
Attention, arrêtez-vous a 6minutes et 17 secondes, pas besoin d'aller plus loin
7 - Installation du PCB NAND-AIC
Veuillez couper la piste d'horloge de la NAND comme mentionnée sur l'image ci-dessous :
Si vous avez un condensateur "C655" a cet emplacement, veuillez le retirer :
Pre-étamer avec de l'étain les différents points suivants :
Procéder a la mise en place du PCB NAND-AID :
Souder les différents points suivants :
Souder le support microSD :
Veuillez fermer le pont DIS du pcb et raccorder les 2 points supplementaires :
Insérez votre carte SD de 32g dans laquelle vous avez précédemment injécter le dump de votre MLC
Démarrez votre Wii-U (sans Raspberry Pi), elle devrait booter jusqu'a avoir l'erreur 160-0103 (idem avant le remplacement de votre MLC par la microSD).
Si votre console démarre, félicitations, les modifs hardware sont terminées !
Vous pouvez remonter votre Wii-U
Si votre console ne démarre pas, veuillez verifier vos soudures.
8 - Remise en état de la mémoire corrompue
Nous allons maintenant faire un check des fichiers corrompus.
8.1 - Etat des lieux de la corruption mémoire
- Téléchargez "recovery_menu_mlc_checker.zip" et décompressez-le : Renommer le fichier décompressé "recovery_menu_dumper" en "recovery_menu"
Copier le fichier "recovery_menu" a la racine de votre carte SD 16g / 64g, en écrasant le précèdent fichier.
- Ejecter votre carte SD 16g / 64g "proprement" de votre PC via la fonction "Ejection de votre OS".
- Insérer votre carte SD 16g / 64g dans le port SD votre Wii-U, disponible en face avant de la console.
Allumer votre console, et au moment ou apparait le logo "Wii-U", connecter rapidement votre Raspberry Pi Pico précédemment préparer pour l'expoit UDPIH
8.2 MLC Checker
- Dans le menu de "Recovery_Menu", a l'aide du bouton "Eject, sélectionnez "MLC Checker" et appuyer sur "Power".
MLC Checker effectuera un test complet des fichiers de la MLC, il creera un fichier mlc_checker.txt a la racine de votre carte SD 16g / 64g.
- Quand l'operation sera terminée, éteignez votre console via le menu en sélectionnant "Shutdown".
- Débrancher la cable d'alimentation de votre Wii-U
- Ejecter votre carte carte SD 16g / 64g de votre Wii-U et insérer la dans votre PC
- Copier le fichier mlc_checker.txt a la racine de votre carte SD 16g / 64g sur votre PC.
Voici un exemple d'un fichier mlc_checker.txt :
Code : Tout sélectionner
StartOpenDir;/vol/storage_mlc01;-00000000
StartReadDir;/vol/storage_mlc01/;-00000000
StartOpenDir;/vol/storage_mlc01/sys;-00000000
StartReadDir;/vol/storage_mlc01/sys/;-00000000
StartOpenDir;/vol/storage_mlc01/sys/config;-00000000
StartReadDir;/vol/storage_mlc01/sys/config/;-00000000
CloseDir;/vol/storage_mlc01/sys/config/;-00000000
StartReadDir;/vol/storage_mlc01/sys/;-00000000
StartOpenDir;/vol/storage_mlc01/sys/import;-00000000
StartReadDir;/vol/storage_mlc01/sys/import/;-00000000
CloseDir;/vol/storage_mlc01/sys/import/;-00000000
StartReadDir;/vol/storage_mlc01/sys/;-00000000
StartOpenDir;/vol/storage_mlc01/sys/title;-00000000
StartReadDir;/vol/storage_mlc01/sys/title/;-00000000
StartOpenDir;/vol/storage_mlc01/sys/title/00050010;-00000000
StartReadDir;/vol/storage_mlc01/sys/title/00050010/;-00000000
StartOpenDir;/vol/storage_mlc01/sys/title/00050010/10040200;-00000000
StartReadDir;/vol/storage_mlc01/sys/title/00050010/10040200/;-00000000
StartOpenDir;/vol/storage_mlc01/sys/title/00050010/10040200/code;-00000000
StartReadDir;/vol/storage_mlc01/sys/title/00050010/10040200/code/;-00000000
StartOpenFile;/vol/storage_mlc01/sys/title/00050010/10040200/code/app.xml;-00000000
StartReadFile;/vol/storage_mlc01/sys/title/00050010/10040200/code/app.xml;-00000000...
Au vu du nombre de ligne, un utilitaire a vu le jour pour faire le trie des ligne ne se terminant pas pas "-00000000" ... MLC filter !
- Téléchargez "MLC filter" et décompressez-le : - A l'aide de l'invite de commande windows, executer MLCFilter en lui donnant votre mlc_checker.txt en argument :
Usage: mlcfilter.exe mlc_checker.txt
Code : Tout sélectionner
mlcfilter.exe mlc_checker.txt
- MLC Filter créera un fichier "Out.txt" a partir de votre fichier "mlc_checker.txt" comprenant uniquement la liste des fichiers corrompus de votre MLC
Voici un exemple du fichier out.txt comprenant des fichiers corrompus:
Code : Tout sélectionner
ReadFile;/vol/storage_mlc01/sys/title/00050010/10040200/content/Common/Sound/Men/stream/BGM_SET_ACS.bfstm;-0003001B
ReadFile;/vol/storage_mlc01/sys/title/00050010/10047200/code/set.rpx;-0003001B
ReadFile;/vol/storage_mlc01/sys/title/00050010/10049200/content/Common/Sound/Acs/cafe_barista_acs.bfsar;-0003001B
ReadFile;/vol/storage_mlc01/sys/title/00050010/10049200/content/Eu/Model/AccountTvCap_Eu.szs;-0003001B
ReadFile;/vol/storage_mlc01/sys/title/00050010/1004a200/content/arclayout/layout.sgarc.cmp;-0003001B
ReadFile;/vol/storage_mlc01/sys/title/00050010/1004a200/content/sound/stream/BGM_STR_MII_EDIT_ORCH_TV.dspadpcm.bfstm;-0003001B
ReadFile;/vol/storage_mlc01/sys/title/00050010/1004a200/meta/bootSound.btsnd;-0003001B
ReadFile;/vol/storage_mlc01/sys/title/00050010/1004b200/code/libwkc.rpl;-0003001B
ReadFile;/vol/storage_mlc01/sys/title/00050010/1004c200/content/Common/Sound/Ply/stream/BGM_PLY.bfstm;-0003001B
ReadFile;/vol/storage_mlc01/sys/title/00050010/1004c200/meta/bootTvTex.tga;-0003001B
ReadFile;/vol/storage_mlc01/sys/title/00050010/1004d200/content/Common/Package/Inf.pack;-0003001B
ReadFile;/vol/storage_mlc01/sys/title/00050010/1004d200/content/EuPortuguese/Message/AllMessage.szs;-0003001B
ReadFile;/vol/storage_mlc01/sys/title/00050010/1004d200/meta/bootTvTex.tga;-0003001B
ReadFile;/vol/storage_mlc01/sys/title/00050010/1005a200/content/art/FE/FEGroupMainUI_res.data;-0003001B
ReadFile;/vol/storage_mlc01/sys/title/0005001b/10059200/meta/WUP-N-HASP-EUR.bfma;-0003001B
ReadFile;/vol/storage_mlc01/sys/title/00050030/10010209/content/Common/Package/Hbm.pack;-0003001B
ReadFile;/vol/storage_mlc01/sys/title/00050030/1001320a/code/title.fst;-0003001B
ReadFile;/vol/storage_mlc01/sys/title/00050030/1001320a/code/title.tmd;-0003001B
ReadFile;/vol/storage_mlc01/sys/title/00050030/1001320a/content/vino_config.txt;-0003001B
ReadFile;/vol/storage_mlc01/sys/title/00050030/1001420a/code/randgen.rpl;-0003001B
ReadFile;/vol/storage_mlc01/sys/title/00050030/1001520a/content/Common/Package/Frd.pack;-0003001B
ReadFile;/vol/storage_mlc01/sys/title/00050030/1001520a/meta/meta.xml;-0003001B
ReadFile;/vol/storage_mlc01/usr/title/00050000/1010ed00/content/audio/driver/SNDG_BbMario.bars;-0003001B
ReadFile;/vol/storage_mlc01/usr/title/00050000/1010ed00/content/audio/driver/SNDG_Heyho.bars;-0003001B
ReadFile;/vol/storage_mlc01/usr/title/00050000/1010ed00/content/audio/driver/SNDG_Jugem.bars;-0003001B
ReadFile;/vol/storage_mlc01/usr/title/00050000/1010ed00/content/audio/stream/BGM_select_TV.yi.32.dspadpcm.bfstm;-0003001B
ReadFile;/vol/storage_mlc01/usr/title/00050000/1010ed00/content/audio/stream/HyoSyo1-3.ry.32.dspadpcm.bfstm;-0003001B
ReadFile;/vol/storage_mlc01/usr/title/00050000/1010ed00/content/audio/stream/pBGM_3DS_DK_JUNGLE_N.bfstm;-0003001B
ReadFile;/vol/storage_mlc01/usr/title/00050000/1010ed00/content/audio/stream/pBGM_3DS_MUSIC_PARK_F.bfstm;-0003001B
ReadFile;/vol/storage_mlc01/usr/title/00050000/1010ed00/content/audio/stream/pBGM_3DS_PACKUN_SLIDER_F.bfstm;-0003001B
8.2 Téléchargement des packages corrompus
En vous appuyant sur le fichier Out.txt précédemment créé par MLCFilter, veuillez lister tous les packages qui devront être télécharger en suivant cette exemple :
Exemple fichier Out.txt :
Code : Tout sélectionner
ReadFile;/vol/storage_mlc01/sys/title/00050010/10047200/code/set.rpx;-0003001B
ReadFile;/vol/storage_mlc01/sys/title/00050010/10049200/content/Common/Sound/Acs/cafe_barista_acs.bfsar;-0003001B
ReadFile;/vol/storage_mlc01/sys/title/00050010/10049200/content/Eu/Model/AccountTvCap_Eu.szs;-0003001B
ReadFile;/vol/storage_mlc01/sys/title/c/content/arclayout/layout.sgarc.cmp;-0003001B
ReadFile;/vol/storage_mlc01/sys/title/00050010/1004a200/content/sound/stream/BGM_STR_MII_EDIT_ORCH_TV.dspadpcm.bfstm;-0003001B
Pour information, vous trouverez la désignation des packages a l'aide de ce site web :00050010-10047200
00050010-10049200
00050010-1004a200
Wii U - Title database
Dans notre exemple, on peut constater que :
- Téléchargez "NUSGrabber" et décompressez-le : - A l'aide de NUSGrabber, depuis l'invite de commande windows, télécharger tous les packages précédemments identifiés a l'aide de la commande suivante :00050010-10047200 = System Settings / EUR
00050010-10049200 = User Settings / EUR
00050010-1004a200 = Mii Maker / EUR
Veuillez noter que le "-" de l'ID package est a supprimer lors de la commande.NUSgrabber.exe ID_Package
Voici un exemple des commandes pour notre liste ci dessus :
Code : Tout sélectionner
NUSgrabber.exe 0005001010047200
NUSgrabber.exe 0005001010049200
NUSgrabber.exe 000500101004a200
Une fois les package téléchargés, vous devriez les retrouver a la racine du dossier de "NUSGrabber" :
8.3 Re-installation des packages corrompus
- Nous devons installer les packages précédemment télécharger un par un.
Dans notre exemple, nous allons re-installer le package "0005001010047200"
- A la racine de votre carte SD 16G / 64G, veuillez créer un dossier "install"
- Copier le contenu du dossier "0005001010047200" dans le dossier "install" de votre carte SD :
- Insérez notre carte dans WII U et lancer le "Recovery Menu".
Pour rappel :
Allumer votre console, et au moment ou apparait le logo "Wii-U", connecter rapidement votre Raspberry Pi Pico précédemment préparer pour l'expoit UDPIH
Pour rappel, petite vidéo de présentation du menu "Recovery Menu" :
- Recommencer l'operation pour tous les packages identifiés corrompus et precedement téléchargés avec NUSGrabber.
Félicitations, a ce stade votre Wii-U est repartie pour une longue vie sereine