Some devices require additional setup for UDPIH to work. Click on the device you want to use:
Raspberry Pi Zero (W) / A / A+ / Zero 2 W / 4 / 5 (Expand)
ℹ️ For the Pi Zero and Zero 2 W you will need 2 USB cables, one for powering the Zero and one which can be connected to the Wii U.
ℹ️ For the Pi 4 and 5 you need to provide power through the power headers or use an OTG splitter. This is because the USB-C port is the only port supporting USB OTG, which must get connected to the Wii U. Unfortunately, when trying to power the Pi over USB-C using the Wii U's USB ports, the Pi doesn't boot fast enough.
The USB-A ports do not support USB OTG and cannot be used for this exploit: You must connect the USB-C port to the Wii U during the exploit.
ℹ️ This guide expects that you use Raspberry Pi OS.
To use USB gadgets(OTG) you need to enable dwc2 by running the command below:
⚠️ Prior to Raspberry Pi OS Bookworm, Raspberry Pi OS stored the boot partition at/boot/.
echo "dtoverlay=dwc2" | sudo tee -a /boot/firmware/config.txtAfter running the command reboot the system.
To install the required dependencies run the command below:
sudo apt install git build-essential raspberrypi-kernel-headersSteam Deck (Expand)
To build and use UDPIH on the Steam Deck, you need to disable the read-only filesystem and initialize the pacman keyring. If you haven't done this before you can follow this guide.
Install the required dependencies by running the command below:
sudo pacman -S base-develNext you need to install the required linux headers. Start with figuring out the kernel version by running the following command:
uname -rYou'll get an output like this:
6.1.52-valve16-1-neptune-61In this case you'd want to install the linux headers for neptune-61:
sudo pacman -S linux-neptune-61-headers # replace neptune-61 with your kernel versionNext you'll have to enable USB Dual Role Device in the BIOS:
- Power off the Steam Deck.
- Enter the BIOS by holding the Volume Up (+) button and pressing the Power button.
- Select
Setup Utility. - Navigate to
Advanced>USB Configurationand selectUSB Dual Role Device. - Change it from
XHCItoDRD. - Navigate to
Exitand selectExit Saving Changes.
- Clone the repo:
git clone https://github.com/GaryOderNichts/udpih.git cd udpih - Download the latest
arm_kernel.bin.hfrom the releases page and copy it to thearm_kerneldirectory.
You can also simply run:curl -L https://github.com/GaryOderNichts/udpih/releases/latest/download/arm_kernel.bin.h > arm_kernel/arm_kernel.bin.h - Now build the kernel module:
cd linux make
Start your device and leave it running for the duration of the exploit. You will leave the device on for all attempts at getting the timing right.
Run the command below to insert the kernel module into the kernel:
sudo insmod udpih.koThe device is now ready to be used for udpih.
Note
If you reboot your udpih device, you will need to load the kernel module again with the above command.
Continue with "Booting the recovery_menu".
If you want to remove the module from the kernel:
sudo rmmod udpihTo show logs and debug information:
sudo dmesg -w