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 Wii U:ISFShax: Difference between pages

From Hacks Guide Wiki
(Difference between pages)
Shinobijolteon (talk | contribs)
No edit summary
 
Vanny1987 (talk | contribs)
Change link to releases location
Tags: Mobile edit Mobile web edit
 
Line 1: Line 1:
{{lowercase title}}{{Infobox homebrew
'''ISFShax''' exploits boot1 using a specially designed ISFS (SLC filesystem) superblock. Once installed, it offers similar capabilities to defuse. Since it runs before IOSU, it can apply early patches to IOSU and repair most types of bricks. However, it cannot protect against bricks caused by boot1 corruption, seeprom issues, or installing a faulty ISFShax superblock. Additionally, ISFShax cannot help if the Wii U is already bricked.
| 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
}}
'''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 ==
== Features ==
 
*Rebuilding or upgrading the MLC
*Removing the 64GB MLC limit and disabling SCFM
*Brick protection, such as before performing a region change
*Cold booting redNAND, which is helpful when the eMMC is failing
*Providing a minimal CFW that can launch old homebrew using the homebrew launcher (though this might be less useful with Aroma and Tiramisu available)
*Preventing the Wii U from turning on the GamePad during boot using a stroopwafel plugin
 
{{info|text= To protect against Nintendo pushing a boot1 update, which would brick a console with ISFShax, '''system updates get blocked''' by the <code>wafel_isfshax_patch</code> plugin. If you need to perform a system update, use v1.0 of said plugin, which doesn't contain the update block.}}
 
== Exploit Methods ==
 
There are quite a few ways to launch the ISFShax installer.
 
*If you already have Tiramisu or Aroma installed and can launch it, follow the Instructions for Aroma
*If you already have Haxchi or CBHC installed, follow Instructions for Haxchi
*If the Browser still works and you can launch the browser exploit u.wiidb.de, follow the Instructions for Browser
*If you can't access the Browser, but Settings still work follow Instructions for DNSpresso
*If your Wii U crashes in the initial setup on Mii creation, follow Instructions for DNSpresso
*If your Wii U can't launch the browser anymore or can't connect to the internet, follow the Instructions for UDPIH
 
Make sure your SD card is FAT32, although this should already be the case if you have an environment installed.
 
== SD Preparation ==
 
You will need:
*The [https://github.com/isfshax/isfshax_installer/releases ISFShax installer] (<code>ios.img</code>)
*The [https://github.com/isfshax/isfshax/releases ISFShax Superblocks] (<code>superblock.img</code> and <code>superblock.img.sha</code>)
*The [https://github.com/jan-hofmeier/stroopwafel/releases stroopwafel] (<code>wafel_core.ipx</code>)
*The [https://github.com/isfshax/wafel_isfshax_patch/releases IOSU ISFShax tolerance patch] (<code>wafel_isfshax_patch.ipx</code>)
 
*The [https://github.com/jan-hofmeier/minute_minute/releases minute image] (<code>fw_encrypted.img</code>) '''[Aroma/Haxchi/Browser/DNSpresso]'''
*The [https://github.com/wiiu-env/fw_img_payload/releases fw_img_payload] zip '''[Browser/DNSpresso only]'''
*The [https://github.com/wiiu-env/PayloadFromRPX/releases root.rpx] '''[DNSpresso only]'''
*The [https://github.com/jan-hofmeier/minute_minute/releases minute images] (<code>fw.img</code> and <code>boot1.img</code> '''[UDPIH only]'''
*The [https://github.com/jan-hofmeier/recovery_menu/releases recovery_menu] '''[UDPIH only]'''


There are two pieces of data a 3DS that give it a unique ID to Nintendo's eShop servers: 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>
# Copy the <code>ios.img</code> to the root of your SD card.
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 part is where cleaninty comes in.
# Copy the <code>superblock.img</code> and <code>superblock.img.sha</code> to root of your SD card.
# Copy the <code>wafel_core.ipx</code> and <code>wafel_isfshax_patch.ipx</code> to the <code>ios_plugins</code> folder in the <code>wiiu</code> folder.
# Copy the <code>fw_encrypted.img</code> to the root of your SD card and rename it to <code>fw.img</code>. '''(Aroma/Haxchi/Browser/DNSpresso)'''
# Extract the contents of the <code>fw_img_payload</code> zip to the root of your SD card. '''(Browser/DNSpresso)'''
# Copy the <code>root.rpx</code> to the root of your SD card and rename it to <code>launch.rpx</code> '''(DNSpresso)'''
# Copy the <code>fw.img</code> and <code>boot1.img</code> to the root of your SD card. '''(UDPIH)'''
# Copy the <code>recovery_menu</code> to the root of your SD card. '''(UDPIH)'''


The reason this allows for changing eShop regions easily, and at infinite range, are as follows:
* '''Ease of Use''': Tickets for both system software & purchased apps are stored on Nintendo's servers, and some of these tickets are region-locked - meaning their presence blocks the console from registering to any other eShop region. (The most common of these tickets are from preinstalled games and 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 tickets with a single command.
* '''Infinite Range:''' System transfers are effectively divided into two parts: the content transfer (done entirely on consoles), and the NNID/title transfer (done entirely on servers).<br>On an actual console, these two must be done at the same time - but if cleaninty sends the commands for a server transfer, it doesn't start a content transfer and thus the consoles do not have to be next to each other. (Technically, this also means a [[3DS:MMM|Manual Movable Moveover]] is the exact opposite of a SOAP transfer.)


The structure on the SD should look like this:
{{Tree list}}


== Features ==
* {{Tree icon|sd}} (root)
** {{Tree icon|f}} boot1.img (UDPIH only)
** {{Tree icon|f}} fw.img
** {{Tree icon|f}} ios.img
** {{Tree icon|f}} recovery_menu (UDPIH only)
** {{Tree icon|f}} launch.rpx (DNSpresso only)
** {{Tree icon|f}} superblock.img
** {{Tree icon|f}} superblock.img.sha
** {{Tree icon|d}} wiiu
*** {{Tree icon|f}} payload.elf (Browser, DNSpresso only)
*** {{Tree icon|d}} ios_plugins
**** {{Tree icon|f}} wafel_core.ipx
**** {{Tree icon|f}} wafel_isfshax_patch.ipx
{{Tree list/end}}
 
==Booting into Minute ==
 
Choose the appropriate method to boot into Minute based off of the setup you have.
 
<tabber>
 
|-|Aroma=
 
<span>
# Hold B on boot or while launching Health and Safety (whether you coldboot or not) to boot into the PayloadLoader.
# You will be asked to choose your payload.
# Select "fw_img_loader".
 
{{info|text= If the fw_img_loader isn't present, grab it from the [https://aroma.foryour.cafe Aroma Website].}}
</span>
 
|-|Haxchi=
 
<span>
# Hold A on the GamePad while launching the Haxchi or DO NOT TOUCH ME app.
# Alternatively, if you have CHBC, you can hold A on the GamePad while booting the console.
</span>
 
|-|Browser=
 
<span>
# Navigate to the browser and type in "u.wiidb.de" in the address bar.
# Click on "HAXX".
</span>
 
|-|DNSpresso=
 
<span>
If you can access the settings, follow the instructions provided here (you already have the correct files on the SD card): [https://gbatemp.net/threads/dnspresso-a-wii-u-dns-exploit.642123/ DNSpresso - A Wii U DNS Exploit.]
 
If you are stuck on User/Mii creation during the initial setup:
 
# If your Wii U is already connected to your AP/Router, turn off the AP/Router or disable its WiFi.
# When the setup asks if you already have a NNID, select "Yes" (even if you don't have one).
# The system will attempt to connect to the Internet, fail, and then prompt you to return to the WiFi settings.
# Turn your AP/Router back on and wait for it to start.
# If your WiFi is not already configured, connect to it now, but enter an incorrect password.
# Edit your WiFi connection and set 85.215.57.182 as the Primary DNS. If you entered a wrong password before, correct it now.
# Press (B) to go back and select "Connection Test."
</span>
 
|-|UDPIH=


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.bin</code> or the serial number) of a console, cleaninty can act as that console and do the following:
<span>
# Boot into recovery_menu as per [https://gbatemp.net/threads/udpih-usb-host-stack-exploit-recovery-menu.613369/ this guide]
# Unplug the pico or Switch.
# Select "Load BOOT1 Payload" from the list and continue on.


* <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>.
{{info|text=(If your tv doesn't display an output, you'll have to navigate blindly: 18x eject, 1x power, 1 eject, 1 power)}}
* <code>CheckReg</code>: Obtains the console's eShop status, eShop region, and any titles attached to its eShop account, then updates the JSON file if any differences in the data are found.
</span>  
* <code>SysTransfer</code>: Moves the eShop titles of the source console to the target console. This is the only part of a SOAP transfer if the console has region-locked tickets, as it will do an <code>EShopDelete</code> as part of the transfer.
** 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 one. 
* <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 <code>movable.sed</code> from the SOAP servers, if the servers have a stored copy.
* <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> from 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, 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 region-locked 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.


</tabber>


== Installation ==
You should now see the minute main menu. If not, ensure you have the correct fw.img file on the SD card.


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.
In minute, use the power button to move the cursor and the eject button to select (this is opposite to the recovery menu controls).


{{info|text=Minute only outputs 1080p through HDMI, with no display on the GamePad or analog outputs. Some users have reported that the screen output doesn't work when minute is loaded from the recovery_menu. If you've verified that the fw.img file is correct and your TV supports 1080p HDMI, you can still proceed by pressing the appropriate buttons blindly. Make sure to wait long enough between presses to allow the system to load. Without display output, skip the first backup and go directly to installing ISFShax.}}


Regardless of your OS, you will need a 3DS with both custom firmware and [[3DS:GodMode9|GodMode9]] installed to dump the vast majority of the files required to do <code>SetupConstants</code> using [https://raw.githubusercontent.com/luigoalma/cleaninty/master/gm9scripts/ExtractSystemElements.gm9 ExtractSystemElements.gm9]. A guide to legally deriving the only constant ''not'' dumped via this method, the [[wikipedia:Advanced_Encryption_Standard|AES]] Constant "C", can be found [https://3ds.goombi.fr/convertMii/0x31.html on this page].
{{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.}}
=== Windows ===


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.
==Backup and Installation==
We will now start with a fresh NAND backup.


Instead, there are two options:
#Navigate to <code>Backup and Restore</code>
# 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}}.)
#Select <code>Dump OTP and Seeprom</code>
# Install [https://www.msys2.org/ msys2] and then install cleaninty inside the msys2 instance using the below instructions.
#When that is done, select <code>Dump SLC.RAW</code>
#Once that is done, return to the main menu.


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:
===Installing ISFShax ===
* <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>  
#Select <code>Boot ios.img</code> (blind combo is Power 6x, Eject 1x)
* <code>python -m pip install cleaninty</code>
# The ISFShax installer will launch after a brief moment.
#Follow the onscreen instructions, the buttons are the same as minute's (3x Eject, 1x Power, 3x Eject).
# The console should now turn off.
# Replace the encrypted <code>fw.img</code> on the SD with the <code>fw.img</code> '''(NOT the encrypted one)'''. (Aroma/Haxchi/Browser/DNSpresso)
#If it successfully installed, the Wii U will directly boot into minute once you boot again.


Once this is completed, from here on out you will need to open the msys2 <code>mingw64.exe</code> terminal to use cleaninty.  
===Backing up ISFSHax ===
Go back to Backup and Restore and Dump the SLC.RAW again. This will replace the previous SLC.RAW file you dumped earlier. It's required if you want to restore the SLC for unbricking, without losing ISFShax, in case the superblock protection fails. Keep that backup somewhere safe.


{{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.}}
==Booting with ISFShax ==


=== macOS and Linux ===
From this point on, the Wii U can still boot without the SD card, but will have some patches applied (ISFShax tolerance for IOSU, update blocking).
To boot into the Wii U OS in minute, select <code>Patch (sd) and boot IOS (slc)</code> (2x Power, 1x Eject).


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].
{{info|text= If your console bootloops through minute over and over again, you're probably coldbooting Aroma or Tiramisu and replaced the <code>wiiu/payload.elf</code> with the fw_img loader. Just replace it with the proper <code>wiiu/payload.elf</code> for Aroma [https://github.com/wiiu-env/PayloadLoaderPayload/releases here] (This also applies to Tiramisu).}}


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.
===Launching Aroma/Tiramisu with ISFShax ===
You can use ISFShax to boot into Aroma or Tiramisu.
To begin, you will need the latest files from the sites.


{{info|text=If you are already coldbooting Tiramisu or Aroma via the PayloadLoader , you need to disable the coldboot in the PayloadLoader Installer first.}}


== Usage ==
*Aroma: Download [https://aroma.foryour.cafe here]
{{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".  
*Tiramisu: Download [https://tiramisu.foryour.cafe here]
*The [https://github.com/jan-hofmeier/wafel_payloader/releases/tag/v2.0 wafel_payloader.ipx]
# Put the wafel_payloader.ipx file in the ios_plugins folder.
#Place the root.rpx file from [https://github.com/wiiu-env/PayloadFromRPX/releases PayloadFromRPX] in the wiiu folder on the SD card.
#*Alternatively, if you have Aroma and/or Tiramisu already, you can just grab the root.rpx from your environment of choice's folder from <code>wiiu/environments/[ENVIRONMENT]/</code> and place it  in the wiiu folder of the SD card.


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>
===Booting without SD ===
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 in '''System Settings -> Internet Settings -> Other Information -> Confirm MAC Address.'''}}


There is no graphical interface for cleaninty. All commands are ran through the command line.
This step is optional but highly recommended. Without the SD card, the Wii U will still boot, but will only have minimal patches applied.


=== Manual command line ===
To fix this, we need to install minute (fw.img) and the stroopwafel plugins (wafel_core + wafel_isfshax_patch) to the internal memory (SLC). This can be done using FTPiiU-Everywhere, which can be launched from Tiramisu and is part of the Aroma Package (enable in the plugin settings), or you can use the [https://github.com/mackieks/haxcopy haxcopy homebrew].


The commands are the same on all operating systems. Run <code>cleaninty ctr (command) --help</code> for information on an individual command's syntax.
Haxcopy is recommended for most users, but if you accidentally copy a wrong plugin to the SLC or need to delete one, you'll still need to use FTP.


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:
# <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>
<tabber>
|-|Succeeded=
<ol>
<li value="7"><code>cleaninty EShopDelete -C soap_target.json</code></li>
</ol>


|-|Failed=
|-|Haxcopy=
<ol>
<span>
<li value="7"><code>cleaninty ctr SysTransfer -s soap_target.json -t soap_donor.json</code></li>
# Create a folder named "hax" on the SD card.
</ol>
# Copy the fw.img to the hax folder.
# Create a subfolder named "ios_plugins" in the hax folder.
# Rename wafel_core.ipx to 0core.ipx and copy it to the hax/ios_plugins folder.
# Rename wafel_isfshax_patch.ipx to 6isfshax.ipx and copy it to the hax/ios_plugins folder.
# If you want to coldboot Aroma or Tiramisu, rename wafel_payloader.ipx to 9payldr.ipx and copy it to the hax/ios_plugins folder.
# If you need other plugins like wafel_unlimit.ipx, rename and copy them to the hax/ios_plugins folder.
# Download the <code>haxcopy.wuhb</code> from [https://github.com/mackieks/haxcopy/releases here] and copy it to to the wiiu/apps folder (as you would normally install homebrew).
# Insert the SD card into the Wii U and run haxcopy to transfer the hax folder to the SLC.
</span>
 
|-|FTP=
<span>
{{info|text=You do not need to do the first two steps if you already have system file access enabled in the FTPiiU configuration.}}
#Open the Aroma Plugin Configuration Menu using L + Down + SELECT (-) on the GamePad or Pro Controller (or B + Down + Minus (-) for WiiMotes).
#Open the FTPiiU option, then settings, and set ‘Allow access to system files’ to ‘true’ by pressing A.
# Use an FTP client on the PC to browse to /storage_slc/.
# If you see a scfm.img file and sys folder, go into the sys folder. If you see folders like config, import, logs, proc, rights, security, title, and tmp, move to the next step.
# Create a subfolder named "hax" and enter it.
# Ensure your FTP client is in binary mode (not ASCII mode).
# Upload the minute fw.img to the /storage_slc/sys/hax folder.
# Create another subfolder named "ios_plugins" in /storage_slc/sys/hax.
# Enter the /storage_slc/sys/hax/ios_plugins folder.
# Rename wafel_core.ipx to 0core.ipx and upload it.
# Rename wafel_isfshax_patch.ipx to 6isfshax.ipx and upload it.
# If you want to coldboot Aroma or Tiramisu, rename wafel_payloader.ipx to 9payldr.ipx and upload it.
# If you need other plugins like wafel_unlimit.ipx, rename and upload them too.
</span>
</tabber>
</tabber>
Now, the Wii U should autoboot if no SD card is inserted. If an SD card is inserted, the minute menu should show up (even if the SD doesn't contain a fw.img). In that menu, you can select the Patch (SLC) and boot IOS (SLC) to load the plugins from the SLC and boot (no need to have them on the SD anymore).
{{info|text=The Wii U will first try to load the fw.img from the SLC, and if that fails, it will fall back to the SD. If you install a broken fw.img that doesn't load, you can force ISFShax to load the fw.img from the SD by repeatedly pressing the power button until the menu shows up.}}
{{warning|text=A factory reset will delete the hax folder. Without the fw.img on the SD, the Wii U will boot with minimal patches, but some actions (such as leaving the System Settings) may be slower. It's recommended to set up minute and stroopwafel again.}}
===Autobooting with SD (Optional) ===
To enable autoboot on the Wii U with an SD card inserted, create the file <code>sd:/minute/minute.ini</code> with the following content:
<syntaxhighlight>
[boot]
autoboot=1
autoboot_timeout=3
</syntaxhighlight>
You can adjust the timeout (in seconds) to your preference. The <code>autoboot</code> option determines which entry from the minute menu will be loaded. Setting it to <code>1</code> corresponds to <code>Patch (slc) and boot IOS (slc)</code>, which loads the ios_plugins from the SLC. If you haven't installed them to the SLC or want to load them from the SD for any reason, change the value to <code>3</code>, which corresponds to <code>Patch (sd) and boot IOS (slc)</code>.
{{info|text=If you combine autobooting minute with the wafel_payloader plugin, you can autoboot Aroma or Tiramisu without having Health and Safety injected at all!}}
As an alternative, check out the Fastboot option below.
===Fastbooting (Optional) ===
To make the Wii U boot as fast as possible, without showing minute, you can now use the fw_fastboot.img. This won't work with redNAND
It is hardcoded to go straight to the first option (booting the SLC, with patches from SLC). It won't display anything and ignore any autoboot configuration in the minute.ini.
#First make sure the system can boot using the first option in minute. (see Booting without SD)
#Replace the the fw.img in the hax folder on the SLC with the fastboot image (fw_fastboot.img renamed to fw.img)
If you get stuck for whatever reason and need to fully load minute from your SD, you can do this:
#Place the minute fw.img on the SD card
#Repeatedly press the power button until the minute menu shows up on the screen.
==Uninstalling ISFShax ==
{{warning|text=Do NOT restore an older SLC backup, as it will break SCFM!}}
Ensure your Wii U doesn't rely on any patches (like wafel_unlimit_mlc.ipx or redNAND). You can verify this by booting with only the wafel_core.ipx and wafel_isfshax_ipx plugins in the ios_plugins directory on the SD card and selecting the "Patch (sd) and boot IOS (slc)" option.


To proceed:


=== Autosoap script ===
#Delete the /storage_slc/sys/hax folder if you have set up SLC booting.
# Run the ISFShax installer again from minute and follow the on-screen instructions to uninstall.


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.
==Recommended Plugins ==


Read the instructions on its page for setup and usage.
Here is a list of currently available stroopwafel plugins you can use with ISFShax:


[[Category:Nintendo 3DS guides]]
# [https://github.com/jan-hofmeier/wafel_noinit_tablet wafel_noinit_tablet] - Prevents the GamePad from turning on while booting the console.
# [https://github.com/jan-hofmeier/wafel_sd_usb/releases SDUSB] - Allows you to run games from the SD Card.
# [https://github.com/jan-hofmeier/wafel_usb_partition/releases USB Partition] - Allows you to use partitioned USB devices with the Wii U.
# [https://github.com/jan-hofmeier/wafel_setup_mlc/releases wafel_setup_mlc] - Allows you to rebuild or upgrade the MLC.

Revision as of 19:34, 5 September 2024

ISFShax exploits boot1 using a specially designed ISFS (SLC filesystem) superblock. Once installed, it offers similar capabilities to defuse. Since it runs before IOSU, it can apply early patches to IOSU and repair most types of bricks. However, it cannot protect against bricks caused by boot1 corruption, seeprom issues, or installing a faulty ISFShax superblock. Additionally, ISFShax cannot help if the Wii U is already bricked.

Features

  • Rebuilding or upgrading the MLC
  • Removing the 64GB MLC limit and disabling SCFM
  • Brick protection, such as before performing a region change
  • Cold booting redNAND, which is helpful when the eMMC is failing
  • Providing a minimal CFW that can launch old homebrew using the homebrew launcher (though this might be less useful with Aroma and Tiramisu available)
  • Preventing the Wii U from turning on the GamePad during boot using a stroopwafel plugin
Info icon To protect against Nintendo pushing a boot1 update, which would brick a console with ISFShax, system updates get blocked by the wafel_isfshax_patch plugin. If you need to perform a system update, use v1.0 of said plugin, which doesn't contain the update block.

Exploit Methods

There are quite a few ways to launch the ISFShax installer.

  • If you already have Tiramisu or Aroma installed and can launch it, follow the Instructions for Aroma
  • If you already have Haxchi or CBHC installed, follow Instructions for Haxchi
  • If the Browser still works and you can launch the browser exploit u.wiidb.de, follow the Instructions for Browser
  • If you can't access the Browser, but Settings still work follow Instructions for DNSpresso
  • If your Wii U crashes in the initial setup on Mii creation, follow Instructions for DNSpresso
  • If your Wii U can't launch the browser anymore or can't connect to the internet, follow the Instructions for UDPIH

Make sure your SD card is FAT32, although this should already be the case if you have an environment installed.

SD Preparation

You will need:

  1. Copy the ios.img to the root of your SD card.
  2. Copy the superblock.img and superblock.img.sha to root of your SD card.
  3. Copy the wafel_core.ipx and wafel_isfshax_patch.ipx to the ios_plugins folder in the wiiu folder.
  4. Copy the fw_encrypted.img to the root of your SD card and rename it to fw.img. (Aroma/Haxchi/Browser/DNSpresso)
  5. Extract the contents of the fw_img_payload zip to the root of your SD card. (Browser/DNSpresso)
  6. Copy the root.rpx to the root of your SD card and rename it to launch.rpx (DNSpresso)
  7. Copy the fw.img and boot1.img to the root of your SD card. (UDPIH)
  8. Copy the recovery_menu to the root of your SD card. (UDPIH)


The structure on the SD should look like this:

  • SD card icon (root)
    • File icon boot1.img (UDPIH only)
    • File icon fw.img
    • File icon ios.img
    • File icon recovery_menu (UDPIH only)
    • File icon launch.rpx (DNSpresso only)
    • File icon superblock.img
    • File icon superblock.img.sha
    • Folder icon wiiu
      • File icon payload.elf (Browser, DNSpresso only)
      • Folder icon ios_plugins
        • File icon wafel_core.ipx
        • File icon wafel_isfshax_patch.ipx

Booting into Minute

Choose the appropriate method to boot into Minute based off of the setup you have.

  1. Hold B on boot or while launching Health and Safety (whether you coldboot or not) to boot into the PayloadLoader.
  2. You will be asked to choose your payload.
  3. Select "fw_img_loader".
Info icon If the fw_img_loader isn't present, grab it from the Aroma Website.

  1. Hold A on the GamePad while launching the Haxchi or DO NOT TOUCH ME app.
  2. Alternatively, if you have CHBC, you can hold A on the GamePad while booting the console.

  1. Navigate to the browser and type in "u.wiidb.de" in the address bar.
  2. Click on "HAXX".

If you can access the settings, follow the instructions provided here (you already have the correct files on the SD card): DNSpresso - A Wii U DNS Exploit.

If you are stuck on User/Mii creation during the initial setup:

  1. If your Wii U is already connected to your AP/Router, turn off the AP/Router or disable its WiFi.
  2. When the setup asks if you already have a NNID, select "Yes" (even if you don't have one).
  3. The system will attempt to connect to the Internet, fail, and then prompt you to return to the WiFi settings.
  4. Turn your AP/Router back on and wait for it to start.
  5. If your WiFi is not already configured, connect to it now, but enter an incorrect password.
  6. Edit your WiFi connection and set 85.215.57.182 as the Primary DNS. If you entered a wrong password before, correct it now.
  7. Press (B) to go back and select "Connection Test."

  1. Boot into recovery_menu as per this guide
  2. Unplug the pico or Switch.
  3. Select "Load BOOT1 Payload" from the list and continue on.
Info icon (If your tv doesn't display an output, you'll have to navigate blindly: 18x eject, 1x power, 1 eject, 1 power)

You should now see the minute main menu. If not, ensure you have the correct fw.img file on the SD card.

In minute, use the power button to move the cursor and the eject button to select (this is opposite to the recovery menu controls).

Info icon Minute only outputs 1080p through HDMI, with no display on the GamePad or analog outputs. Some users have reported that the screen output doesn't work when minute is loaded from the recovery_menu. If you've verified that the fw.img file is correct and your TV supports 1080p HDMI, you can still proceed by pressing the appropriate buttons blindly. Make sure to wait long enough between presses to allow the system to load. Without display output, skip the first backup and go directly to installing ISFShax.


Backup and Installation

We will now start with a fresh NAND backup.

  1. Navigate to Backup and Restore
  2. Select Dump OTP and Seeprom
  3. When that is done, select Dump SLC.RAW
  4. Once that is done, return to the main menu.

Installing ISFShax

  1. Select Boot ios.img (blind combo is Power 6x, Eject 1x)
  2. The ISFShax installer will launch after a brief moment.
  3. Follow the onscreen instructions, the buttons are the same as minute's (3x Eject, 1x Power, 3x Eject).
  4. The console should now turn off.
  5. Replace the encrypted fw.img on the SD with the fw.img (NOT the encrypted one). (Aroma/Haxchi/Browser/DNSpresso)
  6. If it successfully installed, the Wii U will directly boot into minute once you boot again.

Backing up ISFSHax

Go back to Backup and Restore and Dump the SLC.RAW again. This will replace the previous SLC.RAW file you dumped earlier. It's required if you want to restore the SLC for unbricking, without losing ISFShax, in case the superblock protection fails. Keep that backup somewhere safe.

Booting with ISFShax

From this point on, the Wii U can still boot without the SD card, but will have some patches applied (ISFShax tolerance for IOSU, update blocking). To boot into the Wii U OS in minute, select Patch (sd) and boot IOS (slc) (2x Power, 1x Eject).

Info icon If your console bootloops through minute over and over again, you're probably coldbooting Aroma or Tiramisu and replaced the wiiu/payload.elf with the fw_img loader. Just replace it with the proper wiiu/payload.elf for Aroma here (This also applies to Tiramisu).

Launching Aroma/Tiramisu with ISFShax

You can use ISFShax to boot into Aroma or Tiramisu. To begin, you will need the latest files from the sites.

Info icon If you are already coldbooting Tiramisu or Aroma via the PayloadLoader , you need to disable the coldboot in the PayloadLoader Installer first.
  1. Put the wafel_payloader.ipx file in the ios_plugins folder.
  2. Place the root.rpx file from PayloadFromRPX in the wiiu folder on the SD card.
    • Alternatively, if you have Aroma and/or Tiramisu already, you can just grab the root.rpx from your environment of choice's folder from wiiu/environments/[ENVIRONMENT]/ and place it in the wiiu folder of the SD card.

Booting without SD

This step is optional but highly recommended. Without the SD card, the Wii U will still boot, but will only have minimal patches applied.

To fix this, we need to install minute (fw.img) and the stroopwafel plugins (wafel_core + wafel_isfshax_patch) to the internal memory (SLC). This can be done using FTPiiU-Everywhere, which can be launched from Tiramisu and is part of the Aroma Package (enable in the plugin settings), or you can use the haxcopy homebrew.

Haxcopy is recommended for most users, but if you accidentally copy a wrong plugin to the SLC or need to delete one, you'll still need to use FTP.

  1. Create a folder named "hax" on the SD card.
  2. Copy the fw.img to the hax folder.
  3. Create a subfolder named "ios_plugins" in the hax folder.
  4. Rename wafel_core.ipx to 0core.ipx and copy it to the hax/ios_plugins folder.
  5. Rename wafel_isfshax_patch.ipx to 6isfshax.ipx and copy it to the hax/ios_plugins folder.
  6. If you want to coldboot Aroma or Tiramisu, rename wafel_payloader.ipx to 9payldr.ipx and copy it to the hax/ios_plugins folder.
  7. If you need other plugins like wafel_unlimit.ipx, rename and copy them to the hax/ios_plugins folder.
  8. Download the haxcopy.wuhb from here and copy it to to the wiiu/apps folder (as you would normally install homebrew).
  9. Insert the SD card into the Wii U and run haxcopy to transfer the hax folder to the SLC.

Info icon You do not need to do the first two steps if you already have system file access enabled in the FTPiiU configuration.
  1. Open the Aroma Plugin Configuration Menu using L + Down + SELECT (-) on the GamePad or Pro Controller (or B + Down + Minus (-) for WiiMotes).
  2. Open the FTPiiU option, then settings, and set ‘Allow access to system files’ to ‘true’ by pressing A.
  3. Use an FTP client on the PC to browse to /storage_slc/.
  4. If you see a scfm.img file and sys folder, go into the sys folder. If you see folders like config, import, logs, proc, rights, security, title, and tmp, move to the next step.
  5. Create a subfolder named "hax" and enter it.
  6. Ensure your FTP client is in binary mode (not ASCII mode).
  7. Upload the minute fw.img to the /storage_slc/sys/hax folder.
  8. Create another subfolder named "ios_plugins" in /storage_slc/sys/hax.
  9. Enter the /storage_slc/sys/hax/ios_plugins folder.
  10. Rename wafel_core.ipx to 0core.ipx and upload it.
  11. Rename wafel_isfshax_patch.ipx to 6isfshax.ipx and upload it.
  12. If you want to coldboot Aroma or Tiramisu, rename wafel_payloader.ipx to 9payldr.ipx and upload it.
  13. If you need other plugins like wafel_unlimit.ipx, rename and upload them too.

Now, the Wii U should autoboot if no SD card is inserted. If an SD card is inserted, the minute menu should show up (even if the SD doesn't contain a fw.img). In that menu, you can select the Patch (SLC) and boot IOS (SLC) to load the plugins from the SLC and boot (no need to have them on the SD anymore).

Info icon The Wii U will first try to load the fw.img from the SLC, and if that fails, it will fall back to the SD. If you install a broken fw.img that doesn't load, you can force ISFShax to load the fw.img from the SD by repeatedly pressing the power button until the menu shows up.
Warning icon A factory reset will delete the hax folder. Without the fw.img on the SD, the Wii U will boot with minimal patches, but some actions (such as leaving the System Settings) may be slower. It's recommended to set up minute and stroopwafel again.

Autobooting with SD (Optional)

To enable autoboot on the Wii U with an SD card inserted, create the file sd:/minute/minute.ini with the following content:

[boot]
autoboot=1
autoboot_timeout=3

You can adjust the timeout (in seconds) to your preference. The autoboot option determines which entry from the minute menu will be loaded. Setting it to 1 corresponds to Patch (slc) and boot IOS (slc), which loads the ios_plugins from the SLC. If you haven't installed them to the SLC or want to load them from the SD for any reason, change the value to 3, which corresponds to Patch (sd) and boot IOS (slc).

Info icon If you combine autobooting minute with the wafel_payloader plugin, you can autoboot Aroma or Tiramisu without having Health and Safety injected at all!

As an alternative, check out the Fastboot option below.

Fastbooting (Optional)

To make the Wii U boot as fast as possible, without showing minute, you can now use the fw_fastboot.img. This won't work with redNAND It is hardcoded to go straight to the first option (booting the SLC, with patches from SLC). It won't display anything and ignore any autoboot configuration in the minute.ini.

  1. First make sure the system can boot using the first option in minute. (see Booting without SD)
  2. Replace the the fw.img in the hax folder on the SLC with the fastboot image (fw_fastboot.img renamed to fw.img)

If you get stuck for whatever reason and need to fully load minute from your SD, you can do this:

  1. Place the minute fw.img on the SD card
  2. Repeatedly press the power button until the minute menu shows up on the screen.

Uninstalling ISFShax

Warning icon Do NOT restore an older SLC backup, as it will break SCFM!

Ensure your Wii U doesn't rely on any patches (like wafel_unlimit_mlc.ipx or redNAND). You can verify this by booting with only the wafel_core.ipx and wafel_isfshax_ipx plugins in the ios_plugins directory on the SD card and selecting the "Patch (sd) and boot IOS (slc)" option.

To proceed:

  1. Delete the /storage_slc/sys/hax folder if you have set up SLC booting.
  2. Run the ISFShax installer again from minute and follow the on-screen instructions to uninstall.

Here is a list of currently available stroopwafel plugins you can use with ISFShax:

  1. wafel_noinit_tablet - Prevents the GamePad from turning on while booting the console.
  2. SDUSB - Allows you to run games from the SD Card.
  3. USB Partition - Allows you to use partitioned USB devices with the Wii U.
  4. wafel_setup_mlc - Allows you to rebuild or upgrade the MLC.