TCPGecko Plugin is a Wii U Aroma plugin that exposes a TCP Gecko-compatible server for development, debugging, memory inspection, and cheat-code workflows. The server listens on TCP port 7331.
Warning
TCPGecko provides powerful memory and code-execution commands. Use it only on a trusted local network and only with software and hardware you are authorized to inspect.
- TCP Gecko-compatible server on port
7331 - User and kernel memory read/write commands
- General and latest code-handler modes
- SD
.gctucheat loading and optional combination with client-uploaded codes - Breakpoint, thread, stack-trace, symbol, memory-search, and remote-call commands
- Screenshot and file-operation support
- Persistent raw assembly execution
- Configurable server enablement and thread priority through the WUPS configuration menu
Some low-level commands can crash the running title or the console when given invalid addresses or code. Save your work before testing.
- A Wii U running Aroma
- WiiUPluginLoaderBackend
- NotificationModule
- A TCP Gecko-compatible client on the same trusted network
Use mutually compatible versions of Aroma and its modules. The current Aroma package normally supplies the required runtime modules.
The recommended build path requires Docker Desktop or another Linux-container-compatible Docker installation. A native build requires devkitPro/devkitPPC, WUT, WiiUPluginSystem, libwupsbackend, libnotifications, and the port libraries referenced by the Makefile.
-
Build the project or obtain
TCPGeckoPlugin.wpsfrom a trusted release. -
Copy it to:
sd:/wiiu/environments/aroma/plugins/TCPGeckoPlugin.wps -
Start Aroma or reload its plugins.
-
Open the Aroma/WUPS plugin configuration menu to change TCPGecko settings.
-
Connect a compatible client to the Wii U's local IP address on port
7331.
For a non-default Aroma environment, replace aroma in the path with that environment's directory name.
| Setting | Purpose |
|---|---|
| Enable TCPGecko | Starts or stops the TCPGecko service. Disconnect the client before changing it. |
| Code Handler | Selects the general or latest embedded code handler. |
| Enable SD cheats | Loads the current title's .gctu file from the SD card. |
| Combine SD and client cheat codes | Appends SD codes when compatible codes are uploaded by a client. |
| Serialize assembly execution | Enables the existing mutual-exclusion behavior around persistent assembly execution. |
| TCPGecko thread priority | Selects low, normal, high, or real-time priority. Use real-time with care. |
SD cheat files use this layout:
sd:/codes/<16-digit-title-id>.gctu
For example, use the title ID as 16 uppercase hexadecimal digits followed by the .gctu extension.
From the repository root:
docker build --tag tcpgecko-plugin-builder .
docker run --rm --volume "${PWD}:/project" tcpgecko-plugin-builder make -j2The build creates these files in the repository root:
TCPGeckoPlugin.wps— installable Aroma pluginTCPGeckoPlugin.elf— ELF build artifact for development and symbol inspection
To build with logging:
docker run --rm --volume "${PWD}:/project" tcpgecko-plugin-builder make DEBUG=1 -j2For verbose logging:
docker run --rm --volume "${PWD}:/project" tcpgecko-plugin-builder make DEBUG=VERBOSE -j2Clean generated files separately before switching build modes:
docker run --rm --volume "${PWD}:/project" tcpgecko-plugin-builder make cleanThese commands work in PowerShell and POSIX-style shells. On Windows, Docker Desktop must be using Linux containers.
After installing the dependencies and setting DEVKITPRO, run:
make -j2The Makefile supports the same DEBUG=1 and DEBUG=VERBOSE options as the Docker build.
src/main.cpp Plugin metadata, lifecycle, settings, and storage
src/tcpgecko/ TCP Gecko protocol and code-handler implementation
src/tcpgecko/libs/ Wii U filesystem, patching, sound, and system helpers
src/utils/ Logging, exceptions, threading, and general utilities
Dockerfile Reproducible devkitPPC/WUPS build environment
Makefile Source list, compiler options, and link dependencies
Keep changes focused and readable, and preserve existing copyright notices. Before submitting a change:
- Run a clean normal build.
- Run a clean
DEBUG=1build when changing logging or diagnostics. - Run
git diff --check. - Describe any runtime validation performed on a Wii U or emulator separately from build-only validation.
This project is a fork of BullyWiiPlaza/tcpgecko, adapted for use as an Aroma plugin by Katope. This project also contains work from TCP Gecko and Wii U homebrew contributors; individual source files retain their applicable copyright and license notices.
This project is distributed under the GNU General Public License v3.0, matching the upstream project. Files containing additional notices remain subject to those notices. See LICENSE for the full terms.
This project is not affiliated with or endorsed by Nintendo.