This plugin is named after the type of coffee. The logo is a sort-of depiction of what it looks like.
Ristretto is a plugin for Aroma that provides a foundation for smart home automation on the Wii U with a HTTP server. This will allow for other devices to communicate with the Wii U, and can then be used to extend existing home automation sofftware.
Currently, integrations exist for Homebridge and Home Assistant, with hopefully more in the future. These platforms can serve as a bridge for an external service, like Google Home or Alexa, to integrate with the console. Have fun!
For more information, see the Wii U Smart Home Project.
There are some limitations that currently prevent this from perfection. Some are unavoidable, others can be mitigated or solved in the future.
- The console cannot be powered on remotely. This may be solved in the future by emulating a GamePad or Wii Remote, but the console does not support Wake-on-LAN. In the meantime, consider buying another smart device that serves as a "power button pusher".
- Problems with the application being in the background state. If the Home menu, electronic manual, or any system applet is open, the server will not respond. Because of how Cafe OS, the Wii U's operating system, is designed, the server ends up getting put in the "background" where it loses access to some system resources and memory. Some operations like trying to shutdown the console will cause a crash. Some operations, like switching to the e-manual or home button menu, are one time operations. You can switch in, but you cannot switch out. Blog post on this coming soon, there may be a solution.
- Offline server in Wii mode. At this point, the console is no longer in Cafe OS. The "fix" to this would be implementing a server through IOS patching, which is being considered but not ready yet. However, patching the Wii IOS would be the solution for running a server on the original Wii console, which would be amazing. Stay tuned.
- Copy the file
Ristretto.wpsintosd:/wiiu/environments/aroma/plugins. - Requires the WiiUPluginLoaderBackend in
sd:/wiiu/environments/aroma/modules. - Requires the NotificationModule in
sd:/wiiu/environments/aroma/modules. - Requires the SDHotSwapModule in
sd:/wiiu/environments/aroma/modules.
Start the environment and the backend should load the plugin. By default, the port runs on :8572. You'll know the server is working when you open http://(wiiu_ip_address):8572 in your browser and you should see the text "Ristretto".
For building you need:
Install them (in this order) according to their README's. Don't forget the dependencies of the libs itself.
Then you should be able to compile via make (with no logging) or make DEBUG=1 (with logging).
Two other libraries, MiniJson and a modified version of tinyhttp are compiled with the source.
Building via make only logs errors (via OSReport). To enable logging via the LoggingModule set DEBUG to 1 or VERBOSE.
make Logs errors only (via OSReport).
make DEBUG=1 Enables information and error logging via LoggingModule.
make DEBUG=VERBOSE Enables verbose information and error logging via LoggingModule.
If the LoggingModule is not present, it'll fallback to UDP (Port 4405) and CafeOS logging.
It's possible to use a docker image for building. This way you don't need anything installed on your host system.
# Build docker image (only needed once)
docker build . -t ristretto-builder
# make
docker run -it --rm -v ${PWD}:/project ristretto-builder make DEBUG=1
# make clean
docker run -it --rm -v ${PWD}:/project ristretto-builder make clean
docker run --rm -v ${PWD}:/src ghcr.io/wiiu-env/clang-format:13.0.0-2 -r ./src -i
Ristretto is a big project. It explores so many different areas of the Wii U and opens the door to more opportunities when it comes to home automation, homebrew, reverse engineering and so much more.
- Maschell - For everything he has done with the Wii U homebrew scene, and for helping me in general
- Daniel K.O. - Helping in general, debugging, advice with sockets, threading, function hooking
- TraceEntertains - Defining endian functions (e.g. bswap32) for Wii U, config menu, research with title information
- Wish - Original Ristretto logo
- Artisan71 - Current Ristretto logo
- You, for checking out this project.