Go back
Hacking the Wii U into a decent PowerPC Linux setup 2025-05-24

Why?

Funny. also, Linux.

I wanted a dedicated console for just messing with Linux, because I'd like to do some hardware hacking to it. One trip to eBay later I have a bricked console, for almost nothing!

de_Fuse

Step 0: Install a modchip, because the OS is totally bricked. As expected. See https://github.com/StroopwafelCFW/wii_u_modchip. Also while I'm in here, I decided to add a USB-C PD trigger board I had on the bottom pins of the power connector, because it can do 15V, which is the same as the Wii U.

Render of main PCB Render of main PCB Render of main PCB

Yellow Linux?

We can try to boot into Linux from de_Fuse/minute directly, but it's not quite right: Render of main PCB Apparently this is because the GPU isn't set up properly, and the framebuffer is set to the opposite endianness... This means for a RGBX framebuffer it gets interpreted as XRGB, so only the G and B components make it through untouched (hence, yellow).

Unbricc

So, we need a working OS to boot Linux. Sad. There's a way to format and rebuild all of the OS with wafel_setup_mlc, but the OS was too old for it to work. I had to install all the SLC titles for the latest OS first, then I could finally reinstall all the other titles. And it works: Render of main PCB I'm not sure what happened to the original NAND, usually this happens because the eMMC is physically dying, but it worked fine after reformatting.

Linux still broke

Even though the WiiU OS works now, linux-loader isn't happy with the state of my NAND:

[INFO] Trying to load kernel from sdmc:/linux/dtbImage.wiiu...
ancast: failed to open slc:/sys/title/00050010/1000400a/code/kernel.img (88).

minute can mount the SLC just fine, and the code in linux-loader for it is relatively old. shrug
for now I just patched linux-loader to load that off the SD card separately.

Why do we need this to boot? Usually the PowerPC cores' bootrom verifies that the code it's loading is signed by Nintendo. Luckily, Nintendo are bad at writing code, so if we load the signed PowerPC kernel and then replace part of it after it's verified (but before it's booted), we can launch arbitrary code.

NanoKVM

Now this Wii U is just a fancy computer anyway - I had a spare NanoKVM lying around. It seems to work fine, including mouse&keyboard emulation.

Render of main PCB Render of main PCB

Now I wanted to be able to control the power button remotely as well, because you can't navigate the minute menus with a USB keyboard. The NanoKVM has the ability to do this, so I just have to hook it up...

Render of main PCB Render of main PCB

SATA?

With an adapter PCB, you can connect a normal SATA drive to the custom disc drive port - even though it's custom, it's just SATA underneath. Shoutouts to quarky for making this! Render of main PCB The drive type needs to be set correctly in the EEPROM for the disk to be initialized by Cafe OS, Linux seems to rely on it.
In minute go to Backup and Restore -> Set SEEPROM SATA device type and set it to GEN2-HDD (Kiosk CAT-I with HDD). This is usually for devkits, but it's fine for any drive.