Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

3DS:Cleaninty and User:EEB7A/sandbox: Difference between pages

From Hacks Guide Wiki
(Difference between pages)
warning
 
EEB7A (talk | contribs)
GUIDE COMPLETE! but with a lil few details left to add
 
Line 1: Line 1:
{{lowercase title}}{{Infobox homebrew
{{DISPLAYTITLE:EEB7A's Sandbox}}
| title = cleaninty
| developers = luigoalma
| version = 0.1.3
| releasedate = 2023-03-18
| github = luigoalma/cleaninty
| githubtag = v0.1.3
| forwindows = 1
| formac = 1
| forlinux = 1
}}
{{imbox
| type = delete
| text = Nintendo Homebrew no longer offers SOAP transfer services. This page is about the tools used, and can be used by anyone with their own console data. Users must provide their own donor console data. Use at your own risk.
}}
'''cleaninty''' is a PC tool used to communicate with Nintendo's [[wikipedia:SOAP|SOAP]] servers. For a 3DS, these servers deal with managing eShop accounts, downloading eShop titles, and system transfers. It is also the tool used for what is informally known as a "SOAP transfer".


== Overview ==
=How to install Haxchi (Or CBHC)=
SOAP transfers involve complex functionality. As a result, the following explanation has been divided into two versions: a simplified user-end version, and the technical version.
Why? I thought it would be fun to make a guide like this! :D
<br>If you do not care about the technical side of things, you may skip that part, and will still be able to understand how to use cleaninty itself.


<tabber>
{{Info|text=IMPORANT: With the closure of the eShop for Wii U and 3DS, It is no longer possible to purchase any new DS VC game. Therefore the only way to install Haxchi is if you already have had a compatible DS game from before.}}
|-|Simplified Explanation=
There are two pieces of data in a 3DS that let it talk to Nintendo's eShop servers with a unique ID: its serial number and its [[3DS:System files|<code>otp.bin</code>]]. If these are copied out of the console and used somewhere else, they can be used to imitate the console - meaning Nintendo's servers can act on commands without the console doing anything on its end.<br>
However, the files cannot communicate on their own, and a connection to Nintendo's servers that acts identically to a console is still needed. This is the part cleaninty handles.


The reason this allows for changing eShop regions easily, and at infinite range, are as follows:
==What's required:==
* '''Ease of Use''': 'Records' of all purchased apps are stored on Nintendo's servers, and some of these records are tied to a separate account that existed before the concept of NNIDs was added - these tickets cannot be removed by normal means, and their presence blocks the console from registering to any other eShop region. (The most common of these tickets is the [[3dbrew:StreetPass Mii Plaza|Mii Plaza 3.x]] update.) The only way to remove these tickets is to transfer them to another console, and cleaninty is able to move ''only'' the legacy account's records by being extremely precise with what commands are and aren't used in the process.
* '''Infinite Range:''' System transfers are effectively divided into three parts: the local content transfer, the NNID transfer, and the legacy account transfer.<br>The local content transfer is the important part here, as on an actual console, these three must be done at the same time - but if cleaninty sends the commands for a legacy account transfer, it doesn't start the content transfer, and thus the consoles do not have to be next to each other. (Technically, this also means a [[3DS:MM|Movable Moveover]] is the exact opposite of a SOAP transfer.)


|-|Technical Explanation=
*A legally purchased DS Virtual Console game compatible with Haxchi (most common is Brain Age)
First, some background info: there are two accounts for the eShop.
*An SD Card (Recomended 32 GB)
*A device such as a computer that can transfer files to the SD card
*A Wii U with internet access (With no homebrew present, isfshax is okay but make sure wafel_payloader.ipx has been removed)


<ol>
==SD Prep:==
<li>Legacy DeviceID-based accounts, which were in use starting from the first system version but are mostly unused now.
This section will place all the required files needed to get started, as well as some additional homebrew apps.
<li>NNID-based accounts, which were introduced by system firmware v7.0 and remain as the main account type.
</ol>


Additionally, it should be mentioned that there are four main parts of the 3DS eShop's servers that are related to SOAP operations. Connecting to most of them requires the use of two cerificates from the console(s) to verify it's a real console, those certificates being [[3dbrew:ClCertA|ClCertA]] and [[3dbrew:CTCert|CTCert]]. (The needed data from CTCert is stored inside the console's <code>otp.bin</code> [[3dbrew:OTP Registers|from offsets 0x20 to 0x80]].)
===What You Need:===


<ol>
*The [https://raw.githubusercontent.com/EEB7ADev/thecloud/main/Haxchi%20Complete%20All%20in%20One.zip Haxchi/CBHC Complete All in One] zip file (Direct Download)
<li>ECS: Handles management of NNID accounts and tickets. Requires certificates.
*Your SD card formatted as FAT32
<li>IAS: Handles management of legacy accounts, and has IVS as a sub-service for identity verification (including a stored copy of movable.sed).
{{Info|text=Be sure to have your SD card formatted as FAT32, not exFAT or NTFS. You can use [http://ridgecrop.co.uk/index.htm?guiformat.htm GUIFormat] with 32K (32768) allocation unit size to format it.}}{{Info|text=A quick note about SD Cards: you cannot use a USB adapter and plug it into the back of the console, it wont work. You need to use the front SD card slot on the console. Micro SD to normal SD adaptors work here.}}
<li>CAS: Outputs lists of title metadata, country-related info, and valid currency management options. Requires certificates.
<li>NUS: Downloads of games, updates and system titles. Does '''not''' require certificates for system titles, but does require them for games and updates.
</ol>


NUS and CAS are not relevant to this specifically, but it is worth knowing about them in general.
===Instructions:===


More detailed information on this subject can be found on [https://yifan.lu/2015/04/22/opening-up-cardboard-crafting-an-american-new-3ds-non-xl/ this page.]
#Insert your SD card into your computer.
#Copy the 4 folders from the <code>Haxchi Complete All in One.zip</code>  (the "haxchi", "cbhc", "install", and "wiiu" folders) to the root of your SD card.


----
====Wait, that's it?====
Yes, that zip file included all the apps and files needed to homebrew, but we are not finished homebrewing yet.


The issue that makes system transfers required at all is that legacy accounts are still used in some specific edge cases, when they shouldn't be.
====Here is what we just copied over:====


Specifically, certain titles are not linked to the NNID when purchased/downloaded (the exact cause is still unknown, but a leading theory is that it's because they were delisted from the eShop), and as such, those titles' tickets will instead attach to the legacy account and stay there. The titles that do this will be called '''legacy titles''' for the remainder of this explanation.
*Homebrew Launcher Installer
**Launches the Homebrew Launcher through an online exploit
*The Homebrew Launcher
**Launches various homebrew apps
*The Homebrew Launcher Channel
**Lets you launch the Homebrew Launcher from the Wii U Home Menu
*WUP Installer GX2
**Installs WUP formatted applications (For example, the Homebrew Launcher Channel)
*Wii U NAND Dumper
**Backs up your Wii U's internal storage incase of a disaster
*SaveMii
**A save manager for your Wii U
*The Homebrew App Store
**Where you can get new homebrew apps
*Haxchi Installer
**Installs Haxchi
*CBHC Installer
**Installs CBHC


Since the legacy account is meant to be entirely out of use, legacy titles are far harder to remove than 'normal' ones - an NNID can be moved anywhere with relative ease because ECS just throws ownership over and lets the console do proper region checks later, but IAS has significantly more checks with the legacy account.
Thats alot of stuff right? Don't worry, they will be very useful.


Specifically, if there are still titles on the legacy account, then a specific call to IVS to create a new eShop account will fail because it will refuse to mismatch the legacy account's region with its titles.
==Browser Exploit==
<br>In this scenario, trying to do a normal system transfer to fix eShop works if done before region changing. But attempting to system transfer after the region change will also fail, because the console(s) detect that they're region changed at the firmware level before it even starts.
Congrats on making it this far! I fully believe you can make it all the way!
<br> And on top of that, the average user does not have a second console to system transfer to in the first place. This is where cleaninty comes in.


Specifically, cleaninty's role is to create a PC-based connection to Nintendo's servers using the same certificates that validate a normal connection, and then give the user extremely fine precision over which commands they do or don't want to use. Additionally, since it only uses the consoles' files and only talks to the servers, the physical consoles do not have to be present for any part of the process.
Now, to install cfw on the system, we need to launch the Homebrew Launcher through a browser exploit. Be sure you have internet access on your Wii U.


Using this PC-based connection, it is entirely possible to pick and choose in a very specific way that bypasses normal requirements, using two consoles (the "donor" and "recipient"):
===Instructions:===


First, the donor must already have a blank legacy account (either through luck or through its own SOAP transfer). This allows it to perform <code>EShopRegionChange</code> freely without restrictions, as there are no legacy titles holding it back.
#Eject, and remove your SD card from your computer and insert it into your Wii U.
Once the donor has a blank account, it can <code>EShopRegionChange</code> to match the recipient's eShop account region, and then proceed to take the recipient's account through a <code>SysTransfer</code>.  
#Launch the internet browser and navigate to <code>wiiuexploit.xyz</code> website.
<br>The reason this works is because when cleaninty does the <code>SysTransfer</code>, the command is run in isolation - so it will not check the consoles' firmware regions, make no requests to ECS, and immediately move the account only after checking they're the same region '''without touching anything else'''.
#Click on <code>Run Exploit!</code> to launch the exploit. Your console should launch the homebrew launcher.


Once the legacy account is moved, the recipient will create a new blank account when it next opens the eShop - and in turn, because the new account is made entirely from scratch, this new account's region will match the console's firmware even if it's region-changed. This gives the 'recipient' working eShop access and the ability to change its own region freely - and as the eShop has closed all new purchases and delisted titles cannot be redownloaded from the eShop, it should not be possible for it to receive legacy titles a second time, meaning this fix is effectively permanent.
*The browser should go to a blank web page after clicking Run Exploit! After a few seconds it should fade to a white screen, then fade to a screen with the WIi U logo at the bottom right, with the loading sound playing.
*If your Wii U gets stuck on a white or otherwise frozen screen, wait a few seconds. If nothing happens, reboot the console, [https://en-americas-support.nintendo.com/app/answers/detail/a_id/1507/~/how-to-delete-the-internet-browser-history reset the browser's save data] and try again.
{{Info|text=Important: Do not search for the website, the search engine does not work. Instead, type the URL in the bar at the top of the gamepad.}}


Also note that the donor also remains 'free' when this happens, as the transferred legacy titles vanish at some point along the way instead of being properly moved to its account. This means that a donor can be used infinite times, the only limit being the seven-day cooldown between each individual <code>SysTransfer</code>.
==Making A NAND Backup==
Now we need to create a NAND backup that can be restored incase anything goes wrong.


</tabber>
===Instructions:===
{{Info|text=Making an MLC dump is optional, the MLC contains game and save data and is not needed to recover most types of bricks. If you do decide to dump your MLC, make sure you have an SD card that is larger than 8 or 32 GB depending on your console.}}


#Navigate through the Homebrew Launcher and launch the <code>Wii U NAND Dumper</code> app.
#Use the Wii U GamePad’s D-Pad to enter the following configuration:
#*Dump SLC: yes
#*Dump SLCCMPT: yes
#*Dump MLC: optional
#*Dump OTP: yes
#*Dump SEEPROM: yes
#Press the A button to start the dumping process.
#When the process completed, power off your Wii U, take your SD Card out of the Wii U and plug it into your PC.
#To make sure you don’t lose the files, copy the <code>slc.bin</code>, <code>slccmpt.bin</code>, <code>seeprom.bin</code>, <code>otp.bin</code> and if you chose to go with a full backup, <code>every mlc.bin.part</code> file to your computer.
#*They will appear on the root of your SD card
#Delete the files from your SD card to free up space.


== Features ==
Nice! You just backed up your NAND incase something goes wrong, like a brick for example.


When the required constants have been supplied through <code>SetupConstants</code> and you have the unique data (<code>otp.bin</code> and either <code>SecureInfo_A</code> or the serial number) of a console, cleaninty can act as that console and do the following:
==Installing Haxchi:==
With all that done, we can finally install Haxchi onto our console!


* <code>GenJson</code>: Compiles the console's data into a single JSON file. This JSON is required for all other commands except <code>RecoverIVS</code>.
First, we will download the DS game, then use the Haxchi Installer to install it.
* <code>CheckReg</code>: Obtains the console's eShop status, eShop region, and any titles attached to its eShop account, then updates the JSON file with the new data.
* <code>SysTransfer</code>: Moves the eShop titles of the source console to the target console. This is the only needed command for a SOAP transfer if the console has legacy tickets.
** A successful use of this command triggers a 7-day cooldown on system transfers for both consoles, the same as a full system transfer.
* <code>NNIDTransfer</code>: <u>(Still experimental. Use with caution.)</u> Moves only the NNIDs of the source console to the target console. This is not affected by system transfer cooldowns and does not trigger a cooldown.
* <code>LastTransfer</code>: Provides the date&time of the given console's last system transfer, the number of transfers it has ever done, and the time at which the current transfer cooldown will expire if there is one active.
* <code>GetIVS</code>: Downloads the console's stored copy of <code>movable.sed</code> from the SOAP servers, if they have one.
* <code>SetIVS</code>: Uploads the chosen JSON's stored <code>movable.sed</code> to the SOAP servers. This will overwrite the current stored movable.
* <code>RecoverIVS</code>: Tries to recover a console's <code>movable.sed</code> using only its raw <code>otp.bin</code> and eShop region data.
* <code>EShopDelete</code>: Deletes the target console's eShop account. This is the secondary part of a SOAP transfer if the console has no legacy tickets, as the console will then automatically register an account in the correct region when it next accesses the eShop.
* <code>EShopRegionChange</code>: Attempts to delete and then recreate the target console's eShop account for the entered region. This is the main part of a SOAP transfer if the console has no legacy tickets, but an <code>EShopDelete</code> should still be done afterward.
* <code>ETickets</code>/<code>ETicketDownload</code>/<code>ETikTitleDownload</code>: Lists all owned eShop tickets / downloads all tickets / downloads the titles attached to all tickets, respectively, from the given console's eShop account.


====Console Prep:====


== Installation ==
#Unplug all USB devices from the back of the console (The Host DS VC game is not allowed to be on a USB drive)
#Power on your Wii U and ensure you are logged into your NNID with the DS VC game
#Navigate to the Nintendo eShop and redownload your chosen game [https://github.com/FIX94/haxchi/blob/master/installer/src/gameList.h#L14-L102 here is a list]


Instructions for installation & setup are {{GitHub|luigoalma/cleaninty#Installing|on the GitHub page}}, but the installation instructions may need to be interpreted for your OS.
Once the download is complete you may as well test it to make sure it works. (always a good idea, not necessary)


====Launching The Installer====


Regardless of your OS, you will need a 3DS with both custom firmware and [[3DS:GodMode9|GodMode9]] installed to dump all of the files required to do <code>SetupConstants</code>. The vast majority of them are dumped using [https://raw.githubusercontent.com/luigoalma/cleaninty/master/gm9scripts/ExtractSystemElements.gm9 ExtractSystemElements.gm9], but the the [[wikipedia:Advanced_Encryption_Standard|AES]] Constant "C" is found using the full set of instructions [https://3ds.goombi.fr/convertMii/0x31.html on this page].
#As described before, launch the Homebrew Launcher using the Browser Exploit
{{critical|The AES Constant, along with all other constants used by cleaninty, are copyrighted data. Obtaining them from your own console(s) is fine, but '''do not''' share the constants with anyone else.}}
#Navigate to Haxchi Installer
{{info|These constants are the same on all consoles. Once one set is dumped, you will not need to redump in the future unless you lose access to them.}}
#Click on it, and press <code>load</code>
=== Windows ===
The console should now reboot into the home menu


Don't bother trying to install cleaninty on Windows directly. Windows has OpenSSL disabled in its <code>curl.exe</code>, but cleaninty requires OpenSSL to function. Working around this issue manually is obnoxious and not worth the time spent.
{{Info|text=If the game did not appear in the Haxchi Installer, please make sure that the game got installed on the System Memory (NAND) and not a USB drive. If you have a USB drive, make sure it is removed when installing Haxchi.}}


Instead, there are two options:
You should now see your DS game be replaced with a Haxchi Icon or name. If you launch it, the console will reboot, now with cfw enabled!
# Install a Linux distro through [https://learn.microsoft.com/en-us/windows/wsl/install WSL] and then install cleaninty inside the WSL instance using the macOS/Linux instructions. (This is the simpler path, and WSL is useful for many other things. If you choose this instead of msys2, it is recommended that you also install the {{GitHub|microsoft/terminal|Windows Terminal}}.)
# Install [https://www.msys2.org/ msys2] and then install cleaninty inside the msys2 instance using the below instructions.


To install cleaninty inside msys2, open the terminal <code>mingw64.exe</code> that is inside the msys2 installation folder, then run the following two commands one at a time:
You may now reattach any USB drives you unpluged.
* <code>pacman -Syu mingw-w64-x86_64-python mingw-w64-x86_64-python-defusedxml mingw-w64-x86_64-python-cryptography mingw-w64-x86_64-python-pycurl</code>
* <code>python -m pip install cleaninty</code>


Once this is completed, from here on out you will need to open the msys2 <code>mingw64.exe</code> terminal to use cleaninty.  
{{Info|text=Please note that Haxchi is a temporary CFW, meaning it wont persist on the next reboot. To bypass this, we can install CBHC. More on that later...}}


{{info|Be aware that when using cleaninty through msys2, the place it will look in to find <code>boot9.bin</code>, <code>SSLCertificates</code>, and <code>ctr_constants.json</code> is a folder named <code>3ds</code> inside your msys2 <code>home</code> folder.}}
====Installing the Homebrew Laauncher Channel====
For now, in order to launch the Homebrew Launcher, you need to launch the Haxchi app, then launch it again while holding A.


=== macOS and Linux ===
There is something we can install in order to make it just a bit easier.


First, ensure you have Python 3.7 or newer. You can check if your Python version is new enough by opening a terminal and running the command <code>python3 --version</code>. If you do not, install a compatible version from either your package manager or [https://www.python.org/downloads/ the Python website].
#Launch Haxchi to enable CFW, this will enable mods and take you back to the Wii U Menu
#Launch the Haxchi app again but this time hold A while doing so, this will take you to the Homebrew Launcher
#Navigate to WUP Installer GX2, and load it
#Once at WUP Installer GX2, select Homebrew Launcher Channel using the touchscreen, then touch Install
#Click Yes, then choose NAND as the Install location


Then, either install cleaninty directly from <code>pip</code> or clone its repo via the command <code>git clone https://github.com/luigoalma/cleaninty.git</code> and then run the <code>setup.py</code> script.
The Console will now appear to load the Wii U Men- wait no, its WUP Installer GX2 🙃


After its done installing, it will take you back to the Mii Make- wait, its WUP Installer GX2 again :D


== Usage ==
Now you can press the Home button about two times to take you back to the Homebrew Launcher, then... the Mii Maker? Then finally, you can just exit the Mii Maker to get back to the Home Menu.
{{critical|Make sure the files for all consoles you compile into a json are accurate before using them in cleaninty, or else the commands may affect a different console than they "should be" affecting (or simply fail outright).  


The easiest way to do this is by checking the serial sticker(s) on the console against the copy of the serial in [[3dbrew:Nandrw/sys/SecureInfo_A|SecureInfo_A]].<br>
'''Once you have exited the Homebrew Launcher by pressing the Home Button a bunch of times, you may notice a new app called Homebrew Launcher. This is what we want! This is what we just installed with WUP Installer GX2.'''
If none of the stickers agree with the SecureInfo, also check against the copy in [[3dbrew:Twln/sys/log/inspect.log|inspect.log]] and make sure its listed MAC Address matches the one within firmware by booting the console normally and going into '''System Settings -> Internet Settings -> Other Information -> Confirm MAC Address'''.}}


There is no graphical interface for cleaninty. All commands are ran through the command line.
{{Info|text=From now on, to launch the Homebrew Launcher, you can simply launch the Homebrew Launcher app on the Home Menu. Note that if you get error 199-9999 while launching it, or any homebrew app you installed on the Home Menu, you likely forgot to launch the Haxchi app beforehand. (Or CBHC magically uninstalled itself)}}


=== Manual command line ===
==That's it!==
Congratulations! 🎉 🥳 👏  You just successfully installed Haxchi onto your system, and are now at a point where you can start customizing and install homebrew apps. (If you want to install CBHC, that is a bit further down)


The commands are the same on all operating systems. Run <code>cleaninty ctr (command) --help</code> for information on an individual command's syntax.
It's good to know what we just did, that way you understand what steps took place and not blindly following a guide.


As an example, the minimum list of commands needed to set up two consoles' data and perform a SOAP transfer between them would be as follows:
Up to this point, we have:
# <code>cleaninty ctr GenJson --otp otp.bin --secureinfo secinfo.bin --out soap_donor.json</code>
# <code>cleaninty ctr GenJson --otp otp1.bin --secureinfo secinfo1.bin --out soap_target.json</code>
# <code>cleaninty ctr CheckReg -C soap_donor.json</code>
# <code>cleaninty ctr CheckReg -C soap_target.json</code>
#* The CheckReg commands are not necessary if you are already certain the donor and target have the same region.
# <code>cleaninty ctr EShopRegionChange -C soap_target.json -r (eShop region) -c  (eShop country - not required if region is JPN/KOR/CHN)</code>
#* You can use any region/country for this command other than the one listed in the <code>soap_target.json</code>'s <code>CheckReg</code>.
# Depending on whether the EShopRegionChange was successful or not, only do '''one''' of the following commands.
<tabber>
|-|Succeeded=
<ol>
<li value="7"><code>cleaninty ctr EShopDelete -C soap_target.json</code></li>
</ol>


|-|Failed=
#Loaded essential CFW files onto our SD card
<ol>
#Used a browser exploit to launch the homebrew launcher
<li value="7"><code>cleaninty ctr SysTransfer -s soap_target.json -t soap_donor.json</code></li>
#Made a NAND backup
</ol>
#Installed a DS Virtual Console game
</tabber>
#Injected Haxchi into that DS VC game
#Loaded a Homebrew app called WUP Installer GX2 to install a "forwarder" channel/app to make launching the Homebrew Launcher easier.
#I congratulated you!


===Now What?===
CBHC is still a bit furhter down if you want to install it 😅


=== Autosoap script ===
You can now:


{{warning|Although this script is far simpler to use than manually inputting commands, errors may still occur during edge cases. Knowledge of the command line will still likely be required to debug if this occurs.}}
*Install homebrew apps from the Homebrew App Store
*Dump your discs
*Use Bloopair
*Run mods with SDCafiine
*Customize the Haxchi appearance (ie. the icon, name, and boot sound.)
{{Info|text=Note: I highly recommend downloading the "Close HBL" app from the app store so that you dont have to go through the Mii Maker in order to exit the Homebrew Launcher. Does not apply to the Homebrew Launcher Channel}}{{Info|text=Note: The Homebrew App store included in the bundle is the latest designed for Aroma support. That being said it still works with the Haxchi. The only difference is that pressing - to exit will go to the Home Menu rather than the Homebrew Launcher}}


If you are inexperienced with the command line or just don't want to type the commands manually every time, there is a {{GitHub|StarlitSkies/autosoap|SOAP bash script}} made by StarlitSkies that heavily simplifies the process.
==Very Optional: Installing CBHC (Cold Boot Haxchi)==
If you are tired to launching CFW every time you boot up, there is a way to bypass that. We can install CBHC, aka Cold Boot Haxchi, ontop of Haxchi.


Read the instructions on its page for setup and usage.
There are many risks when installing CBHC, here be dragons!
{{Warning|text=When installing CBHC, you must take EXTREME caution that none of the following occurs:<br>
- The DS game has to be legit from the eShop!<br>
- Don't format the system while CBHC is installed!<br>
- Don't delete the account that bought the game!<br>
- Don't reinstall the DS game using WUP Installer or the eShop!<br>
- Don't Install Haxchi over CBHC! (You won't brick, but it will cause a bootloop! Hold A when booting to access the Homebrew Launcher and uninstall CBHC.)<br>
- Don't uninstall the DS game WITHOUT [https://wiiu.hacks.guide/uninstall-cbhc.html properly uninstalling CBHC!]<br>
- Don't move the DS game to a USB Drive!}}{{Warning|text=If you would like to take precautions to protect yourself from potential bricks, you can move the DS game to the last page on the Home Menu and/or enable Parental Controls to block Data Management.}}
Sincw we already have Haxchi fully installed, half the work is done!


[[Category:Nintendo 3DS guides]]
We just need to install CBHC over Haxchi and we are done.
 
===What You Need:===
 
*Your Wii U modded with Haxchi
*Confidence that you wont brick your console, nowadays using [https://github.com/GaryOderNichts/udpih UDPIH] you can easily recover from a CBHC brick.
 
===Instructions:===
 
#Boot up your console and launch Haxchi
#Launch the Homebrew Launcher
#Navigate to CBHC Installer and load it
#Select your DS Game using the DPAD and A
#After reading the warning, press A to install CBHC
#Now reboot your console
#If the installation succeeded, you will see a new menu titled <code>CBHC v1.6 by FIX94</code>
#Use the DPAD to scroll down to <code>Autoboot: Disabled</code>
#Press A to turn it from Disabled to System Menu (FYI: CBHC is not compatible with the quick start menu, if you have it enabled, you should disable it)
#Scroll back up to <code>Boot System Menu</code>
#Press A to select it and boot
Thats it!
 
{{Info|text=Note: You may have noticed your DS game now has an exclamation mark and is now named DONT TOUCH ME. This is just another precaution to protect your system from bricks. Also, dont launch the DONT TOUCH ME app, it might crash. Nothing a good old force reboot can't solve.}}{{Info|text=Note: If for whatever reason you dont have your gamepad and you need to use the CBHC boot menu, you can do so using the sync button, where one click scrolls through, and double clicks selects the option.}}{{Info|text=So here's a quick tip to check if CBHC is installed or not, because its happened that CBHC magically uninstalls itself through a system update.<br>
- The screen blacks for a bit on boot showing the CBHC v1.6 screen<br>
- The system version is 99.99.99<br>
- if the two above were not true, then launch the DONT TOUCH ME app, if it launches CBHC successfully, then CBHC has been uninstalled}}
 
==GUIDE COMPLETE!==
Thats basically it for installing Haxchi or CBHC! If you are wondering how everything works, then read along! Although Ididnt make any of these homebrew apps, I can gie you an idea of what each step did/does
 
====How It All Works:====
 
*The browser exploit looks for a file named <code>sd:/wiiu/payload.elf</code>
*The SD card must be formatted in FAT32 with a MBR partition style or the Wii U cant read it. This results in common errors like <code>FSGetMountSource failed</code> or <code>SD Mount failed</code>
*The <code>payload.elf</code> file can be programmed to do different things, in this case, it is meant to open the Homebrew Launcher. When installing Aroma, this launches payloadloader.
*When Haxchi is being installed its taking advantage of an exploit present in some DS VC games.
*WUP Installer GX2 installs WUP formatted applications which cant be run normally without cfw, they will give error 199-999. cfw is required to launch apps installed by WUP Installer GX2.
*does the homebrew launcher channel need the app in the sd card or no? i need to check
*The way CBHC works is by changing the Boot Title of the Wii U from the Home Menu to the DS Game. If you are thinking that this is the same as Aroma, it is but its alot safer because the injected program is not a game that can be moved around and deleted, rather its a system app that isnt going anywhere.
Thats it.

Revision as of 16:41, 18 October 2025


How to install Haxchi (Or CBHC)

Why? I thought it would be fun to make a guide like this! :D

Info icon IMPORANT: With the closure of the eShop for Wii U and 3DS, It is no longer possible to purchase any new DS VC game. Therefore the only way to install Haxchi is if you already have had a compatible DS game from before.

What's required:

  • A legally purchased DS Virtual Console game compatible with Haxchi (most common is Brain Age)
  • An SD Card (Recomended 32 GB)
  • A device such as a computer that can transfer files to the SD card
  • A Wii U with internet access (With no homebrew present, isfshax is okay but make sure wafel_payloader.ipx has been removed)

SD Prep:

This section will place all the required files needed to get started, as well as some additional homebrew apps.

What You Need:

Info icon Be sure to have your SD card formatted as FAT32, not exFAT or NTFS. You can use GUIFormat with 32K (32768) allocation unit size to format it.
Info icon A quick note about SD Cards: you cannot use a USB adapter and plug it into the back of the console, it wont work. You need to use the front SD card slot on the console. Micro SD to normal SD adaptors work here.

Instructions:

  1. Insert your SD card into your computer.
  2. Copy the 4 folders from the Haxchi Complete All in One.zip (the "haxchi", "cbhc", "install", and "wiiu" folders) to the root of your SD card.

Wait, that's it?

Yes, that zip file included all the apps and files needed to homebrew, but we are not finished homebrewing yet.

Here is what we just copied over:

  • Homebrew Launcher Installer
    • Launches the Homebrew Launcher through an online exploit
  • The Homebrew Launcher
    • Launches various homebrew apps
  • The Homebrew Launcher Channel
    • Lets you launch the Homebrew Launcher from the Wii U Home Menu
  • WUP Installer GX2
    • Installs WUP formatted applications (For example, the Homebrew Launcher Channel)
  • Wii U NAND Dumper
    • Backs up your Wii U's internal storage incase of a disaster
  • SaveMii
    • A save manager for your Wii U
  • The Homebrew App Store
    • Where you can get new homebrew apps
  • Haxchi Installer
    • Installs Haxchi
  • CBHC Installer
    • Installs CBHC

Thats alot of stuff right? Don't worry, they will be very useful.

Browser Exploit

Congrats on making it this far! I fully believe you can make it all the way!

Now, to install cfw on the system, we need to launch the Homebrew Launcher through a browser exploit. Be sure you have internet access on your Wii U.

Instructions:

  1. Eject, and remove your SD card from your computer and insert it into your Wii U.
  2. Launch the internet browser and navigate to wiiuexploit.xyz website.
  3. Click on Run Exploit! to launch the exploit. Your console should launch the homebrew launcher.
  • The browser should go to a blank web page after clicking Run Exploit! After a few seconds it should fade to a white screen, then fade to a screen with the WIi U logo at the bottom right, with the loading sound playing.
  • If your Wii U gets stuck on a white or otherwise frozen screen, wait a few seconds. If nothing happens, reboot the console, reset the browser's save data and try again.
Info icon Important: Do not search for the website, the search engine does not work. Instead, type the URL in the bar at the top of the gamepad.

Making A NAND Backup

Now we need to create a NAND backup that can be restored incase anything goes wrong.

Instructions:

Info icon Making an MLC dump is optional, the MLC contains game and save data and is not needed to recover most types of bricks. If you do decide to dump your MLC, make sure you have an SD card that is larger than 8 or 32 GB depending on your console.
  1. Navigate through the Homebrew Launcher and launch the Wii U NAND Dumper app.
  2. Use the Wii U GamePad’s D-Pad to enter the following configuration:
    • Dump SLC: yes
    • Dump SLCCMPT: yes
    • Dump MLC: optional
    • Dump OTP: yes
    • Dump SEEPROM: yes
  3. Press the A button to start the dumping process.
  4. When the process completed, power off your Wii U, take your SD Card out of the Wii U and plug it into your PC.
  5. To make sure you don’t lose the files, copy the slc.bin, slccmpt.bin, seeprom.bin, otp.bin and if you chose to go with a full backup, every mlc.bin.part file to your computer.
    • They will appear on the root of your SD card
  6. Delete the files from your SD card to free up space.

Nice! You just backed up your NAND incase something goes wrong, like a brick for example.

Installing Haxchi:

With all that done, we can finally install Haxchi onto our console!

First, we will download the DS game, then use the Haxchi Installer to install it.

Console Prep:

  1. Unplug all USB devices from the back of the console (The Host DS VC game is not allowed to be on a USB drive)
  2. Power on your Wii U and ensure you are logged into your NNID with the DS VC game
  3. Navigate to the Nintendo eShop and redownload your chosen game here is a list

Once the download is complete you may as well test it to make sure it works. (always a good idea, not necessary)

Launching The Installer

  1. As described before, launch the Homebrew Launcher using the Browser Exploit
  2. Navigate to Haxchi Installer
  3. Click on it, and press load

The console should now reboot into the home menu

Info icon If the game did not appear in the Haxchi Installer, please make sure that the game got installed on the System Memory (NAND) and not a USB drive. If you have a USB drive, make sure it is removed when installing Haxchi.

You should now see your DS game be replaced with a Haxchi Icon or name. If you launch it, the console will reboot, now with cfw enabled!

You may now reattach any USB drives you unpluged.

Info icon Please note that Haxchi is a temporary CFW, meaning it wont persist on the next reboot. To bypass this, we can install CBHC. More on that later...

Installing the Homebrew Laauncher Channel

For now, in order to launch the Homebrew Launcher, you need to launch the Haxchi app, then launch it again while holding A.

There is something we can install in order to make it just a bit easier.

  1. Launch Haxchi to enable CFW, this will enable mods and take you back to the Wii U Menu
  2. Launch the Haxchi app again but this time hold A while doing so, this will take you to the Homebrew Launcher
  3. Navigate to WUP Installer GX2, and load it
  4. Once at WUP Installer GX2, select Homebrew Launcher Channel using the touchscreen, then touch Install
  5. Click Yes, then choose NAND as the Install location

The Console will now appear to load the Wii U Men- wait no, its WUP Installer GX2 🙃

After its done installing, it will take you back to the Mii Make- wait, its WUP Installer GX2 again :D

Now you can press the Home button about two times to take you back to the Homebrew Launcher, then... the Mii Maker? Then finally, you can just exit the Mii Maker to get back to the Home Menu.

Once you have exited the Homebrew Launcher by pressing the Home Button a bunch of times, you may notice a new app called Homebrew Launcher. This is what we want! This is what we just installed with WUP Installer GX2.

Info icon From now on, to launch the Homebrew Launcher, you can simply launch the Homebrew Launcher app on the Home Menu. Note that if you get error 199-9999 while launching it, or any homebrew app you installed on the Home Menu, you likely forgot to launch the Haxchi app beforehand. (Or CBHC magically uninstalled itself)

That's it!

Congratulations! 🎉 🥳 👏 You just successfully installed Haxchi onto your system, and are now at a point where you can start customizing and install homebrew apps. (If you want to install CBHC, that is a bit further down)

It's good to know what we just did, that way you understand what steps took place and not blindly following a guide.

Up to this point, we have:

  1. Loaded essential CFW files onto our SD card
  2. Used a browser exploit to launch the homebrew launcher
  3. Made a NAND backup
  4. Installed a DS Virtual Console game
  5. Injected Haxchi into that DS VC game
  6. Loaded a Homebrew app called WUP Installer GX2 to install a "forwarder" channel/app to make launching the Homebrew Launcher easier.
  7. I congratulated you!

Now What?

CBHC is still a bit furhter down if you want to install it 😅

You can now:

  • Install homebrew apps from the Homebrew App Store
  • Dump your discs
  • Use Bloopair
  • Run mods with SDCafiine
  • Customize the Haxchi appearance (ie. the icon, name, and boot sound.)
Info icon Note: I highly recommend downloading the "Close HBL" app from the app store so that you dont have to go through the Mii Maker in order to exit the Homebrew Launcher. Does not apply to the Homebrew Launcher Channel
Info icon Note: The Homebrew App store included in the bundle is the latest designed for Aroma support. That being said it still works with the Haxchi. The only difference is that pressing - to exit will go to the Home Menu rather than the Homebrew Launcher

Very Optional: Installing CBHC (Cold Boot Haxchi)

If you are tired to launching CFW every time you boot up, there is a way to bypass that. We can install CBHC, aka Cold Boot Haxchi, ontop of Haxchi.

There are many risks when installing CBHC, here be dragons!

Warning icon When installing CBHC, you must take EXTREME caution that none of the following occurs:

- The DS game has to be legit from the eShop!
- Don't format the system while CBHC is installed!
- Don't delete the account that bought the game!
- Don't reinstall the DS game using WUP Installer or the eShop!
- Don't Install Haxchi over CBHC! (You won't brick, but it will cause a bootloop! Hold A when booting to access the Homebrew Launcher and uninstall CBHC.)
- Don't uninstall the DS game WITHOUT properly uninstalling CBHC!

- Don't move the DS game to a USB Drive!
Warning icon If you would like to take precautions to protect yourself from potential bricks, you can move the DS game to the last page on the Home Menu and/or enable Parental Controls to block Data Management.

Sincw we already have Haxchi fully installed, half the work is done!

We just need to install CBHC over Haxchi and we are done.

What You Need:

  • Your Wii U modded with Haxchi
  • Confidence that you wont brick your console, nowadays using UDPIH you can easily recover from a CBHC brick.

Instructions:

  1. Boot up your console and launch Haxchi
  2. Launch the Homebrew Launcher
  3. Navigate to CBHC Installer and load it
  4. Select your DS Game using the DPAD and A
  5. After reading the warning, press A to install CBHC
  6. Now reboot your console
  7. If the installation succeeded, you will see a new menu titled CBHC v1.6 by FIX94
  8. Use the DPAD to scroll down to Autoboot: Disabled
  9. Press A to turn it from Disabled to System Menu (FYI: CBHC is not compatible with the quick start menu, if you have it enabled, you should disable it)
  10. Scroll back up to Boot System Menu
  11. Press A to select it and boot

Thats it!

Info icon Note: You may have noticed your DS game now has an exclamation mark and is now named DONT TOUCH ME. This is just another precaution to protect your system from bricks. Also, dont launch the DONT TOUCH ME app, it might crash. Nothing a good old force reboot can't solve.
Info icon Note: If for whatever reason you dont have your gamepad and you need to use the CBHC boot menu, you can do so using the sync button, where one click scrolls through, and double clicks selects the option.
Info icon So here's a quick tip to check if CBHC is installed or not, because its happened that CBHC magically uninstalls itself through a system update.

- The screen blacks for a bit on boot showing the CBHC v1.6 screen
- The system version is 99.99.99

- if the two above were not true, then launch the DONT TOUCH ME app, if it launches CBHC successfully, then CBHC has been uninstalled

GUIDE COMPLETE!

Thats basically it for installing Haxchi or CBHC! If you are wondering how everything works, then read along! Although Ididnt make any of these homebrew apps, I can gie you an idea of what each step did/does

How It All Works:

  • The browser exploit looks for a file named sd:/wiiu/payload.elf
  • The SD card must be formatted in FAT32 with a MBR partition style or the Wii U cant read it. This results in common errors like FSGetMountSource failed or SD Mount failed
  • The payload.elf file can be programmed to do different things, in this case, it is meant to open the Homebrew Launcher. When installing Aroma, this launches payloadloader.
  • When Haxchi is being installed its taking advantage of an exploit present in some DS VC games.
  • WUP Installer GX2 installs WUP formatted applications which cant be run normally without cfw, they will give error 199-999. cfw is required to launch apps installed by WUP Installer GX2.
  • does the homebrew launcher channel need the app in the sd card or no? i need to check
  • The way CBHC works is by changing the Boot Title of the Wii U from the Home Menu to the DS Game. If you are thinking that this is the same as Aroma, it is but its alot safer because the injected program is not a game that can be moved around and deleted, rather its a system app that isnt going anywhere.

Thats it.