SDUSB - The modern way to play Wii U games from SD - at full speed

Why?

Even though the Wii U has a built in SD slot, it doesn't support using it as a storage expansion to store Wii U games (unlike it's predecessor). USB pen drives are notoriously unreliable and hard drives are bulky and require extra power or a Y cable, using up multiple ports. Today big reliable SD cards have become cheap. Since a SD is needed anyway for homebrew, it would be nice to use that too as storage for games.
There have been solutions in the past like Loadiine, but this had various problems, the biggest of them performance and is not longer supported by current homebrew environments (Aroma).

SDUSB

SDUSB solves these problems. It uses a second partition on the SD card, which will be formatted to the Wii Us native file system and therefore run at full speed. The partition will show up as a USB device and can therefore be managed using the built in Data Management in the system settings. SaveMii, WUP Installers etc. all work with this, like it is a USB storage device. Also HAI (VC Wii Titles) work with SDUSB.
SDUSB does all that by patching IOSU (the OS that runs on the ARM processor). It is implemented as a stroopwafel plugin.

If you instead want to partition your USB HDD to use it for Wii U games and other stuff look here: https://gbatemp.net/threads/usb-partition-use-partitioned-usb-hdds-with-the-wii-u.656209/

Wafel Installer



As a alternative to following this manual guide, you can now use the wafel installer. It guides you through installing the prerequisites, partitioning and setting up the plugin.
If you want to follow the manual setup, skip to the next section (Prerequisites)

On unmodded console
If you haven't modded your console yet, or lost the SD or SD content, just go to https://wafel.xyz on the Wii U web browser (Internet applet) and you can launch the wafel installer directly from that website. It guides you through partitioning the SD card.
Installing Aroma is optional.
Stroopwafel and ISFShax are required (will guide you through the setup).

On Aroma
If you are already using Aroma and want to keep the homebrew setup on the SD, then you need to manually shrink the existing partition on the SD (you can use Minitool Partition Wizard for that) and then put the wafel_installer.wuhb into your wiiu/apps folder on the SD. You find the download here: https://github.com/zer00p/wafel_installer/releases

If you don't care for your existing hombrew setup, boot without the SD card in and launch the wafel installer from the the web browser on the wii u https://wafel.xyz. When it tells you no SD detected just click abort

Once in the wafel installer main menu go to SDUSB to start the setup, it guides you through everything, including reinstalling Aroma, if needed.


Prerequisites

You need two things:
  1. a way to launch minute
  2. a reliable SD card
For 1. the recommended way is to setup ISFShax, for that we have a guide here: How to set up ISFShax
If you don't want to commit to installing ISFShax yet you can skip the "Installing ISFShax" step in the ISFShax setup guide and instead run it manually through the chosen exploit on every reboot.
Instead if ISFShax you can also use defuse, in case you have that already.

For 2. It is highly recommended that you use an Endurance branded SD card from a reputable brand. Since your save games will also be saved there, you rather want to spend $5 more then to lose all your save games because your cheapo sd card died. Also be aware of fakes, even on Amazon you can get fake SD cards...
The speed of the SD card isn't too important, as the Wii U is limited to 25MB/s (same as the internal memory) anyway. Every somewhat recent SD card should be able to get that speed. Choose Reliability > Access Time > Throughput.

Setup

Partitioning the SD card​

On Windows you need to use a third party tool like Paragon Partition Manager Community Edition, Minitool Partition Wizard or Easeus, on Linux you can use gparted.
You need to have two primary partitions on the card:
  1. FAT32 - (in gparted set lba flag). This is what the PC will see and all your homebrew goes (you should already have this)
  2. NTFS - This partition will be the "USB", you use to store the Wii U games on (don't assign a drive letter)
Instead of NTFS you can also use exFAT. Shrink the existing FAT32 partition to make room and then create the primary NTFS partition after it. It's recommended to align the Partitions on 64MiB boundaries and use a multiple of 64MiB for the size. NTFS won't be the file system the Wii U will be using, it is just there to tell SDUSB which partition to use (it will pick the first NTFS one). The Wii U will later format it with it's own file system.

Installing the Plugin​

Get the latest 5sdusb.ipx from here: https://github.com/jan-hofmeier/wafel_sd_usb/releases and place it in your ios_plugins folder. That is either wiiu/ios_plugins on the SD card or /sys/hax/ios_plugins on the slc. For slc you have to rename it to something shorter like sdusb.ipx

Using SDUSB

If you now boot back up, the Partition shows up as a USB device, which needs to be formatted and can then be used as usual. After formatting the SDUSB, you can also connect an existing USB storage and copy stuff over.
sdusb.jpg

Known Problems

  • GC VC Injectes don't work when installed to the SDUSB (they still work from Internal Memory)
 
Last edited by SDIO,
Every time I add the NTFS partition to the SD card, it keeps saying "Failed to load payload.elf." How do I fix it?
 
So I modified the nintendont forwarder to load a modified internal nintendont that never touches the SD card and used the "Specify custom Nintendont Forwarder" in TeconMoon's WiiVC Injector to use it for a Gamecube inject and it works :) I can load GC Injects from the SD card's Wii U "SDUSB partition".

But there's no way to access the SD card that I can work out - so you can't use memory card emulation meaning there's no way to save your game. So not sure how useful that is to anyone. If anyone has any ideas to try - let me know!
 
  • Like
Reactions: rommy667 and SDIO
Maybe you could write the saves to the slccmpt?
Post automatically merged:

Every time I add the NTFS partition to the SD card, it keeps saying "Failed to load payload.elf." How do I fix it?
Maybe you created the partitions in the wrong order. Can you do a list part in diskpart on the SD?
 
@SDIO: I might as a last resort - but I want to try and figure out why the SD card gets locked, but only when loading from the USB partition. It's not just the forwarder (which is trying to load sd:/apps/nintendont/boot.dol) nintendont itself doesn't have access to the SD either. But does when you load the inject from nand. Do you have any thoughts why booting from the VC Inject from the SD's USB Partition also locks the SD FAT partition?
 
Yes, because there only can be one driver controlling the SD. Unlike on the Wii U where you have the SD card completely controlled by the IOSU including the file system on the Wii you have the PPC app talk to the SD controller only through a very thin abstraction. You are sending the RAW SD/MMC commands.
If the HAIIOS is controlling the SD card for the Disc Drive Emulation, then it has it exclusive, so the PPC app can't have it.
 
Ah ok - so I have no idea how to workaround that or if it's even possible. And looked into writing to the slccmpt and that just seems a bad idea for lots of reasons. So think I'll give up for now :)

But just in case anyone ever wants to load a GC Inject from the SDUSB and doesn't care about saving games/memory cards then:
nic.hopto.org/open/nintendont/main.dol
Use that via "Specify custom Nintendont Forwarder" in TeconMoon's WiiVC Injector.
 
Wii Games write their saves to nand too. So Nintendo could just use the same functionality, which should be straight forward. You could just make up title IDs based on the name of the game. Then they could even be managed by the vWii data management
 
Maybe you could write the saves to the slccmpt?
Post automatically merged:


Maybe you created the partitions in the wrong order. Can you do a list part in diskpart on the SD?
Actually, I found out what the main problem is, but not why. When formatting any SD card for extra storage, even a separate SD card, I think the Wii U boots from that one because it keeps telling me it can't find the payload.elf, so it's not a partision error
 
which should be straight forward
As far as I can tell, it's really not straightforward. Firstly, nintendont is running without a title id and has no permissioned title saves location to save to - but I can bypass all that in the same way UBS Loader GX does so I can ISFS_CreateFile, etc wherever I want. But once nintendont hands over from the PPC loader to the ARM Kernel to run the game (which is where the memory card loading/saving happens) - IOS is gone and so is any access I have to ISFS and the NAND. So not sure it's possible.
 
Get the latest 5sdusb.ipx from here: https://github.com/jan-hofmeier/wafel_sd_usb/releases and place it in your ios_plugins folder. That is either wiiu/ios_plugins on the SD card or /sys/hax/ios_plugins on the slc. For slc you have to rename it to something shorter like sdusb.ipx
Thanks for this and all the other things you've made, SDIO.

Just got a Wii U and all of this is new. Why does the name need to be shorter for SLC?
Do other plugins in /sys/hax/ios_plugins also need to have short names?
 
Hm ok, I am not that familiar with nitendont. But if it is using it's own arm kernel, how does it access the virtual disc drive, normally provided by HAI IOS?
 
I have my sd card as 1/2 fat 32 and 1/2 ntfs. I put the .ipx file on the ntfs side, but when I go to format usb in settings searches forever, any advice?
 
@GiSwampy: I'm new to all this too :) Seems filenames in /sys/hax/ios_plugins do need to be very short (people seem to stick to 8.3 style format). The plugin was originally named wafel_sd_usb.ipx - that's why I think the download is now called 5sdusb.ipx

@SDIO: Seems I was mistaken - I can use the ARM kernel to access the NAND (it's just a little fiddly). So should be able to do it when I next find time :)
 
  • Like
Reactions: GiSwampy and SDIO
I have my sd card as 1/2 fat 32 and 1/2 ntfs. I put the .ipx file on the ntfs side, but when I go to format usb in settings searches forever, any advice?
You don't put anything on the NTFS partition, that will be formatted by the Wii U. You need to put the plugin in /wiiu/ios_plugins.

Why does the name need to be shorter for SLC?
Do other plugins in /sys/hax/ios_plugins also need to have short names?
It's a hard limitation by the file system the Wii / Wii U uses for the SLC. If you look here at the Filename field, you see it has space for exactly 12 ASCII Characters: https://wiibrew.org/wiki/Hardware/NAND#FST
While 8.3 just fits, it's not enforced, you can use any 12 ascii characters. But for plugins the extention .ipx is mandatory.
 
  • Like
Reactions: GiSwampy
You don't put anything on the NTFS partition, that will be formatted by the Wii U. You need to put the plugin in /wiiu/ios_plugins.


It's a hard limitation by the file system the Wii / Wii U uses for the SLC. If you look here at the Filename field, you see it has space for exactly 12 ASCII Characters: https://wiibrew.org/wiki/Hardware/NAND#FST
While 8.3 just fits, it's not enforced, you can use any 12 ascii characters. But for plugins the extention .ipx is mandatory.
gotcha, I removed the file from my ntfs, but now when I go to format usb in the settings it still infinitely spins, any ideas for what im doing wrong?
 
Have NAND savegames working now for Gamecube Injects saved to USB

nic.hopto.org/open/nintendont/main_nand_saves.dol
^ Use that via "Specify custom Nintendont Forwarder" in TeconMoon's WiiVC Injector

This puts the gamecube savegames in
/slccmpt01/title/00010001/69696969/data (you can view it over FTP using Aroma's FTPiiu plugin)

Use completely at your own risk! I'm new to all this and have no idea if writing saves to the NAND could lead to issues - but seems to work fine for me.
 
  • Like
Reactions: rommy667 and SDIO
gotcha, I removed the file from my ntfs, but now when I go to format usb in the settings it still infinitely spins, any ideas for what im doing wrong?
And did you put the file in the correct location?


Have NAND savegames working now for Gamecube Injects saved to USB
Do they show up in the vWii Datamanagement?
 
Do they show up in the vWii Datamanagement?
No, sadly not. 1) Because I'm not sure what I'd need to do that 2) I was worried about polluting more than one directory - at least this way they are all in one place and isolated.
 
My assumption was to just have a directory in the right place. You could put all the Nintendont saves there if you don't want multiple saves. Else you could check what metadata the other saves have
 
I spent like five hours trying to fix an issue, so I've come to this thread for help.

I've launched minute frequently using the built in menu. i've also used autoboot.

Used paragon partition manager to set up my sd card. its in mbr, unformatted (WAS ntfs), and no drive letter assigned.

Any assistance that you can help me with? try to make it easy to understand.

Reverted the formatting back to its wiped state so I can use my wii u in the meantime.
 

Site & Scene News

Popular threads in this forum