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.