UDPIH: USB Host Stack exploit + Recovery Menu

It's been a while without any major exploits in the Wii U scene, so I present to you:

USB Descriptor Parsing Is Hard (UDPIH)

An exploit for the Wii U's USB Host Stack. Pronounced like "mud pie" without the M.

The write-up can be found here!

What does this mean?​

Since the USB Stack is running before anything on the PPC side of the Wii U is booted, this allows unbricking things like CBHC bricks without any soldering!


Requirements​

  • A Wii U
  • One of the devices listed below
    Note: Any other linux device capable of USB device emulation should work as well.
    Prebuilt releases are only available for the Pico and Zero.
    I will add more devices below which are confirmed to work.

Supported devices:​

  • A Raspberry Pi Pico or Zero
  • A Nintendo Switch capable of running udpih_nxpayload

Instructions​

Pico​

  • Download the latest udpih.uf2 from the releases page.
  • Hold down the BOOTSEL button on the board and connect the Pico to your PC.
    Your PC will detect the Pi as a storage device.
  • Copy the .uf2 file to the Pico. It will disconnect after a few seconds.
The Pico is now flashed and can be used for udpih. Continue with "Booting the recovery_menu" below.

Raspberry Pi Zero (Linux)​

  • Install the required dependencies:
    Bash:
    sudo apt install build-essential raspberrypi-kernel-headers
  • Clone the repo:
  • Bash:
    git clone https://github.com/GaryOderNichts/udpih.git
    cd udpih
  • Download the latest arm_kernel.bin.h from the releases page and copy it to the arm_kernel directory.
  • Now build the kernel module:
  • Bash:
    cd linux
    make
  • You can now run sudo insmod udpih.ko to insert the kernel module into the kernel.
The Zero is now ready to be used for udpih.
Note that you'll need to insert the module again after rebooting the Zero. You will need 2 USB cables, one for powering the Zero and one which can be connected to the Wii U.

Continue with "Booting the recovery_menu" below.

Booting the recovery_menu​

warning
Important notes for this to work:
  • Make sure no other USB Devices are attached to the console.
  • Only use USB ports on the front of the console, the back ports will not work.
  • If your console has standby mode enabled, pull the power plug and turn it on from a full coldboot state.
  • Copy the latest release of the recovery_menu to the root of your FAT32 formatted SD Card.
  • Insert the SD Card into the console and power it on.
  • As soon as you see the "Wii U" logo on the TV or Gamepad plug in your Zero/Pico.
    This timing is important. If you're already in the menu, the exploit won't work..
  • After a few seconds you should be in the recovery menu.
So what's this recovery menu? The recovery menu allows you to fix several bricks:
screenshot

Wii U Recovery Menu

A simple recovery menu running on the IOSU for unbricking.

Options​

Set Coldboot Title
Allows changing the current title the console boots to.
Useful for unbricking CBHC bricks.
Possible options are:
  • Wii U Menu (JPN) - 00050010-10040000
  • Wii U Menu (USA) - 00050010-10040100
  • Wii U Menu (EUR) - 00050010-10040200
On non-retail systems the following additional options are available:
  • System Config Tool - 00050010-1F700500
  • DEVMENU (pre-2.09) - 00050010-1F7001FF
  • Kiosk Menu - 00050010-1FA81000
Dump Syslogs
Copies all system logs to a logs folder on the root of the SD Card.

Dump OTP + SEEPROM
Dumps the OTP and SEEPROM to otp.bin and seeprom.bin on the root of the SD Card.

Start wupserver
Starts wupserver which allows connecting to the console from a PC using wupclient.

Load Network Configuration
Loads a network configuration from the SD, and temporarily applies it to use wupserver.
The configurations will be loaded from a network.cfg file on the root of your SD.
For using the ethernet adapter, the file should look like this:
Code:
type=eth

For using wifi:
Code:
type=wifi
ssid=ssidhere
key=wifikeyhere
key_type=WPA2_PSK_AES

Pair Gamepad
Displays the Gamepad Pin and allows pairing a Gamepad to the system. Also bypasses any region checks while pairing.
The numeric values represent the following symbols: ♠ = 0, ♥ = 1, ♦ = 2, ♣ = 3.
Note that rebooting the system might be required to use the newly paired gamepad.

Install WUP
Installs a valid signed WUP from the install folder on the root of your SD Card.
Don't place the WUP into any subfolders.

Edit Parental Controls
Displays the current Parental Controls pin configuration.
Allows disabling Parental Controls.

Debug System Region
Fixes bricks caused by setting productArea and/or gameRegion to an invalid value. Symptoms include being unable to launch System Settings or other in-region titles.

System Information
Displays info about several parts of the system.
Including serial number, manufacturing date, console type, regions, memory devices...

Credits​

Special thanks to Maschell, rw-r-r-0644, QuarkTheAwesome, vgmoose, exjam, dimok789, and everyone else who contributed to the Wii U scene!
 
Last edited by GaryOderNichts,

Jehmyson

Active Member
Newcomer
Joined
Apr 28, 2023
Messages
37
Trophies
0
Age
38
XP
241
Country
Brazil
My Wii U also won't boot, it freezes at the Wii U logo and crashes, I have to force the device to shut down every time. My RP Pico doesn't turn on any lights but it was programmed with the files correctly.
 

Jehmyson

Active Member
Newcomer
Joined
Apr 28, 2023
Messages
37
Trophies
0
Age
38
XP
241
Country
Brazil
What brand is MLC chip? Show some picture
I don't know the model yet, I'd have to open the Wii U or make this method work. This week I'll open the device to be sure and post it here to get more information.
Post automatically merged:

Does the led on the Wii U turn purple, when you try udpih?
It doesn't turn purple, just blue with the logo (Nintendo / Wii U) frozen and no buttons working (eject / power), just forcing the device to turn off.
 
Last edited by Jehmyson,

SDIO

Well-Known Member
Member
Joined
Feb 13, 2023
Messages
2,268
Trophies
0
Age
28
XP
1,388
Country
Germany
try aain with a different timings. If it doesn't turn purple (or the Wii U doesn't shut down, in case no SD is inserted) then the FW is probabyl too old for UDPIH and you would need to defuse
 
  • Like
Reactions: Jehmyson

some1ne

Well-Known Member
Member
Joined
Sep 12, 2009
Messages
578
Trophies
1
Website
www.youtube.com
XP
903
Country
United States
I currently have a Wii U that's goes straight to the format screen after powering on, but never finishes formatting it. I tried using UDPIH a while ago, without luck in bringing the recovery menu up. LED stays blue. Screen still shows the format screen:
1696387674831.png


I also got another Wii U, this one without any hdmi or gamepad output. I tried following the same steps but used the dc_init version, without any luck either.

I'm using a 64gb SD card formatted as FAT32 with 32k cluster size and an RP2040 (the same ones used for modding the switch). I don't see any LEDs light up on the pico, is that ok?

I also tried using a switch instead of the rp2040, got the same results. This is the switch's screen:
1696387699792.png
 

some1ne

Well-Known Member
Member
Joined
Sep 12, 2009
Messages
578
Trophies
1
Website
www.youtube.com
XP
903
Country
United States
Thank you very much.

I have a few questions.

Can I use the 3V3 point on the RP2040 zero? On the wiring diagram, it says to use 3V3(OUT) for TP122, but I wanna make sure the 3V3 point on the RP2040 zero is the same as the one on the regular pico. I only have these boards with me right now.
Pinouts:
1696476474974.png
1696476363670.png

After I get it up and running, what should I be looking for exactly? Can I do a NAND backup with it? Can I use the same recovery menu UDPIH uses or is the minute minute menu enough? Should I be following the equivalent to this guide after installing the modchip? https://gbatemp.net/threads/160-0103-error.636361/
 

SDIO

Well-Known Member
Member
Joined
Feb 13, 2023
Messages
2,268
Trophies
0
Age
28
XP
1,388
Country
Germany
Don't connect up the 3V3, we don't need it as the pico is powered over USB anyway.

Once you have minute running, you need to dump otp via PRSHhax in the backup and restore menu
 
  • Like
Reactions: some1ne

fringle

Well-Known Member
Member
Joined
Apr 16, 2009
Messages
704
Trophies
1
XP
1,107
Country
Canada
Thank you very much.

I have a few questions.

Can I use the 3V3 point on the RP2040 zero? On the wiring diagram, it says to use 3V3(OUT) for TP122, but I wanna make sure the 3V3 point on the RP2040 zero is the same as the one on the regular pico. I only have these boards with me right now.
Pinouts:

After I get it up and running, what should I be looking for exactly? Can I do a NAND backup with it? Can I use the same recovery menu UDPIH uses or is the minute minute menu enough? Should I be following the equivalent to this guide after installing the modchip? https://gbatemp.net/threads/160-0103-error.636361/
Edit to remove unnecessary info. Was confusing GP#'s with pin numbers.
 
Last edited by fringle,

V10lator

Well-Known Member
Member
Joined
Apr 21, 2019
Messages
2,648
Trophies
1
Age
36
XP
5,522
Country
Germany
other GND points
There is just one GND connection between the Pico and the Wii U, see https://github.com/shinyquagsire23/wii_u_modchip/tree/main/pico_defuse#wiring
RP2040 zero
I guess this has the same pinout than the tiny? If so havea look at https://github.com/shinyquagsire23/wii_u_modchip/pull/6 (note that you somehow have to define WAVESHARE_TINY so the changed pin layout gets used).

1696542002384.png

1696542011781.png


As SDIO said you don't need to connect the 3.3 V line but in case you decide to do it add a diode so current can flow from the Wii U to the zero board but not the other way around. Don't care about voltage drop, the RP2040 chip works between 1.8 and 3.3 V- ;)
 

fringle

Well-Known Member
Member
Joined
Apr 16, 2009
Messages
704
Trophies
1
XP
1,107
Country
Canada
There is just one GND connection between the Pico and the Wii U, see https://github.com/shinyquagsire23/wii_u_modchip/tree/main/pico_defuse#wiring

I guess this has the same pinout than the tiny? If so havea look at https://github.com/shinyquagsire23/wii_u_modchip/pull/6 (note that you somehow have to define WAVESHARE_TINY so the changed pin layout gets used).

View attachment 397660
View attachment 397661

As SDIO said you don't need to connect the 3.3 V line but in case you decide to do it add a diode so current can flow from the Wii U to the zero board but not the other way around. Don't care about voltage drop, the RP2040 chip works between 1.8 and 3.3 V- ;)
That makes sense. I was confusing gp#'s with pin numbers.
 
  • Like
Reactions: SDIO

Pyoro_

Active Member
Newcomer
Joined
Jul 12, 2020
Messages
38
Trophies
0
Age
54
XP
508
Country
China
does this work with a wii u that gets stuck on a black screen? (bricked from unplugging while doing the 2.0.0 update)
 

sirjman

Member
Newcomer
Joined
Oct 21, 2023
Messages
7
Trophies
0
Age
37
XP
28
Country
Thailand
I have a console that is working, but it seems the HDMI output is dead. I can go blind and get it to dump the logs, but is there any way to get the Gamepad pin to be dumped? I'd like to be able to sync a pad to it and hopefully change to RCA output.
 

YosMakii

New Member
Newbie
Joined
Oct 22, 2023
Messages
2
Trophies
0
Age
18
XP
27
Country
Mexico
(Raspberry Pi pico) With Wupserver I did a process to restore the font Of the Console (My wii u got Brick Font) CafeStd.ttf and CafeKr.ttf
I follow this Steps Command

`python3 -i wupclient.py`


`w.ls("/vol/storage_mlc01/sys/title/0005001b/10042400/content/")`


`w.up("CafeKr.ttf" , "/vol/storage_mlc01/sys/title/0005001b/10042400/content/CafeKr.ttf")`

`ios_reset()`

but it keeps freezing in the pure title that the Wii u has, it barely loads the menu a little and I get a crash

Please Help
 

Attachments

  • 2023-10-16_17-10-06.mp4
    389.3 KB

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • BakerMan @ BakerMan:
    i said i was sleeping...
  • BakerMan @ BakerMan:
    sleeping with uremum
  • K3Nv2 @ K3Nv2:
    Even my mum slept on that uremum
  • TwoSpikedHands @ TwoSpikedHands:
    yall im torn... ive been hacking away at tales of phantasia GBA (the USA version) and have so many documents of reverse engineering i've done
  • TwoSpikedHands @ TwoSpikedHands:
    I just found out that the EU version is better in literally every way, better sound quality, better lighting, and there's even a patch someone made to make the text look nicer
  • TwoSpikedHands @ TwoSpikedHands:
    Do I restart now using what i've learned on the EU version since it's a better overall experience? or do I continue with the US version since that is what ive been using, and if someone decides to play my hack, it would most likely be that version?
  • Sicklyboy @ Sicklyboy:
    @TwoSpikedHands, I'll preface this with the fact that I know nothing about the game, but, I think it depends on what your goals are. Are you trying to make a definitive version of the game? You may want to refocus your efforts on the EU version then. Or, are you trying to make a better US version? In which case, the only way to make a better US version is to keep on plugging away at that one ;)
  • Sicklyboy @ Sicklyboy:
    I'm not familiar with the technicalities of the differences between the two versions, but I'm wondering if at least some of those differences are things that you could port over to the US version in your patch without having to include copyrighted assets from the EU version
  • TwoSpikedHands @ TwoSpikedHands:
    @Sicklyboy I am wanting to fully change the game and bend it to my will lol. I would like to eventually have the ability to add more characters, enemies, even have a completely different story if i wanted. I already have the ability to change the tilemaps in the US version, so I can basically make my own map and warp to it in game - so I'm pretty far into it!
  • TwoSpikedHands @ TwoSpikedHands:
    I really would like to make a hack that I would enjoy playing, and maybe other people would too. swapping to the EU version would also mean my US friends could not legally play it
  • TwoSpikedHands @ TwoSpikedHands:
    I am definitely considering porting over some of the EU features without using the actual ROM itself, tbh that would probably be the best way to go about it... but i'm sad that the voice acting is so.... not good on the US version. May not be a way around that though
  • TwoSpikedHands @ TwoSpikedHands:
    I appreciate the insight!
  • The Real Jdbye @ The Real Jdbye:
    @TwoSpikedHands just switch, all the knowledge you learned still applies and most of the code and assets should be the same anyway
  • The Real Jdbye @ The Real Jdbye:
    and realistically they wouldn't

    be able to play it legally anyway since they need a ROM and they probably don't have the means to dump it themselves
  • The Real Jdbye @ The Real Jdbye:
    why the shit does the shitbox randomly insert newlines in my messages
  • Veho @ Veho:
    It does that when I edit a post.
  • Veho @ Veho:
    It inserts a newline in a random spot.
  • The Real Jdbye @ The Real Jdbye:
    never had that i don't think
  • Karma177 @ Karma177:
    do y'all think having an sd card that has a write speed of 700kb/s is a bad idea?
    trying to restore emunand rn but it's taking ages... (also when I finished the first time hekate decided to delete all my fucking files :wacko:)
  • The Real Jdbye @ The Real Jdbye:
    @Karma177 that sd card is 100% faulty so yes, its a bad idea
  • The Real Jdbye @ The Real Jdbye:
    even the slowest non-sdhc sd cards are a few MB/s
  • Karma177 @ Karma177:
    @The Real Jdbye it hasn't given me any error trying to write things on it so I don't really think it's faulty (pasted 40/50gb+ folders and no write errors)
  • DinohScene @ DinohScene:
    run h2testw on it
  • DinohScene @ DinohScene:
    when SD cards/microSD write speeds drop below a meg a sec, they're usually on the verge of dying
    DinohScene @ DinohScene: when SD cards/microSD write speeds drop below a meg a sec, they're usually on the verge of dying