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 because the USB-C port is the only port the supports USB OTG and 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.txt
After running the command reboot the system.
To install the required dependencies run the command below:
sudo apt install git build-essential raspberrypi-kernel-headers
Steam 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-devel
Next you need to install the required linux headers. Start with figuring out the kernel version by running the following command:
uname -r
You'll get an output like this:
6.1.52-valve16-1-neptune-61
In 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 version
Next 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 Configuration
and selectUSB Dual Role Device
. - Change it from
XHCI
toDRD
. - Navigate to
Exit
and selectExit Saving Changes
.
- Clone the repo:
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 thearm_kernel
directory.
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.ko
The 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 udpih
To show logs and debug information:
sudo dmesg -w