Android - vanilla-wiiu/vanilla GitHub Wiki
Vanilla officially supports Android phones and tablets, however the restrictive nature of mobile software and hardware means many considerations must be made for it to work.
Challenges
- Rooting: Vanilla requires low-level root access to Wi-Fi hardware to achieve a connection to the Wii U. The vast majority of Android devices are configured to disallow root access from any userspace program, and several have no means to enable it. Additionally, even if you can "root" your device, you may not want to, as rooting reduces security.
- Wi-Fi Hardware Compatibility: Many phone chipsets are FullMAC, meaning they handle all Wi-Fi security protocols internally. This has the benefit of reducing energy consumption, however it inadvertently blocks Vanilla's ability to connect to the Wii U (if the chipset is controlling the security protocols, that means Vanilla can't).
Approaches
Several approaches have been developed to get the best Vanilla experience possible depending on your setup, ranked from best-to-worst:
Fully self-contained/standalone (if you have root access and compatible Wi-Fi hardware)
If your Android device is "rooted" and your Wi-Fi hardware is compatible, you don't need to do anything special. You can just download the Vanilla APK from the Releases section and "Local" mode will work out of the box.
Compatible Devices
Once rooted, the main concern is whether your device's Wi-Fi hardware is compatible. Since Wi-Fi hardware is rarely replaceable in Android devices (outside of the USB Wi-Fi adapter option - see below), this effectively equates to whether whole devices are compatible. If you can verify your device uses a SoftMAC chipset, it should work out of the box with no issues. However, if it uses a FullMAC chipset, it may require significantly more effort.
The following devices are known to either work out of the box or have firmware patches available:
| Device | Identifier | Year | Notes |
|---|---|---|---|
| Nexus 6 | shamu | 2014 | Firmware patch available (see dedicated page) |
| HTC One M9 | hima | 2015 | Untested, but shares the same Wi-Fi chipset as the Nexus 6, so the same instructions should work. |
| Google Pixel 6 | oriole | 2021 | Same Wi-Fi chipset as Pixel 7 |
| Google Pixel 6 Pro | raven | 2021 | Same Wi-Fi chipset as Pixel 7 |
| Google Pixel 6a | bluejay | 2022 | Connection works OOTB, Some graphical issues with HW encode (LineageOS 22); Stock Android 17 also works flawlessly, no issues detected with HW encode |
| Google Pixel 7 | panther | 2022 | No firmware patch needed surprisingly enough. |
| Google Pixel 7 Pro | cheetah | 2022 | Untested, but shares the same Wi-Fi chipset as the Pixel 7 |
| Meta Quest 3 | eureka | 2023 | Seems to pair with a Wii U, but when trying to connect, it hangs on "Connecting to Wii U" forever |
| Meta Quest 3S | panther | 2024 | Untested, but shares the same Wi-Fi chipset as the Quest 3 |
USB Wi-Fi adapter (coming soon)
If your Android phone supports USB OTG (i.e. a USB connected to your phone's USB-C or micro-USB port), Vanilla can talk to an external USB Wi-Fi adapter without requiring root access. The Wi-Fi adapter must be compatible, but there should be no other restrictions.
Dedicated Pipe (coming soon)
If your Android phone supports USB OTG, a dedicated device has been developed that can achieve connection with the Wii U based on the RTL8720DN.
Frontend-only
As a last resort, it is possible to use a middleman device (usually a Linux computer/Raspberry Pi) running vanilla-pipe to make the connection to the Wii U and forward packets to the Android phone. This works, however depending on the quality of your home network, can introduce lag and latency. However, it's the only approach that requires no root access and no USB OTG. Use only if necessary.
Compiling
If you wish to compile Vanilla for Android yourself, the build command is standard for an Android app:
cd android
./gradlew assembleDebug
This assumes you have a viable Android SDK and NDK installed.