Skip to main content

Splatlogger

A CLI PID (Principal ID)/Network ID grabber and match logger for Splatoon, written in Python.

Both the Wii U and Cemu (Windows & Linux, macOS not tested) are supported.

Prerequisites (Wii U)

Your console will need to have either the Tiramisu or Aroma environment set up or have another way to run homebrew, such as Haxchi or the browser exploit.

On Tiramisu, use TCPGecko, Geckiine, or any other app with the TCPGecko server.

On Aroma, use TCPGecko-Plugin.

Usage

Running the executable

Windows and Linux executables are provided on the Releases page.

Run Splatlogger with:

path/to/Splatlogger-executable --ip IP [options]

where IP is your Wii U's LAN IP address.

Open a command prompt/terminal window and drag the executable into it to automatically get the path.

Running with Python

You can install Splatlogger as a package from PyPI:

pip install Splatlogger

The run with:

splatlogger --ip IP [options]

(if that fails, try python -m splatlogger) where IP is your Wii U's LAN IP address.

To run from source instead, download the latest source archive from the Releases page and extract it, then open a terminal window in the extracted directory.

Install the required dependencies:

pip install -r requirements.txt

Then move into the src directory and run:

python -m spatlogger --ip IP [options]

Options

  • -c [PID], --cemu [PID] - Switch to Cemu mode. The --ip argument is not required.

    • PID - PID of the Cemu process (optional).
  • --log-level option - Set how much data should be logged.

    • none - Don't create a log file.
    • standard - Log only basic player information, the same as what's printed to the console (default).
    • extended - Log all player information and additional match information.
    • stats - Same as above with the addition of player stats (points, K/D). Requires the match to end to finish logging; if it ends abruptly, the stats won't be logged.
  • --service - Choose which network service you're using.

    • pretendo - Pretendo Network (default).
    • spfn - Splatfestival Network.
  • -a [option], --auto [option] - Enable auto logging. When enabled will automatically log every match you play. The log level must be at least standard.

    • all - Save a log of all matches you play (default).
    • latest - Save a log of only the latest match.
  • --stack Address (in hex) - (Cemu only, optional) Beginning address of the stack space for Default Core 1 (Debug > View PPC threads). Only required for logging stats. If the default values don't work, you'll need to specify this manually.

    (example)
  • -n, --no-fetch - Disable fetching network IDs and Mii names.

  • -s, --silent - Disable printing logs to the console.

For example, splatlogger --ip 192.168.1.100 --log-level extended --auto latest will save an extended log of the latest match you play (replace 192.168.1.100 with your actual IP address).

Logs are saved in your documents folder in Splatlogger/logs/.

To always run with the same IP and options without having to type them in manually, create a options.txt file in (User)/Documents/Splatlogger/ and put them in there. Afterward, run splatlogger without any arguments.

Troubleshooting

Only one program can be connected to TCPGecko at a time. If you have something else connected, disconnect it beforehand.

If it keeps failing to connect, make sure that:

  • Your device and Wii U are on the same local network.
  • Port 7331 isn't blocked by the firewall.
  • TCPGecko is running.

For Cemu users on Linux, if you have ptrace protection enabled, you'll need to run Python as root. In that case, it's best to run the package from source or use the executable instead.

Important notes

  • The data collected by Splatlogger is public player info shared by the game with every user you encounter in online matches.

  • Network IDs and Mii names are fetched from the Pretendo or SPFN account server; this can be disabled with the --no-fetch option.

  • Splatlogger does not collect any sensitive information such as account email addresses or IP addresses.

  • All data collected stays on your machine and is not sent anywhere.

  • Please handle the logs responsibly. I do not encourage sharing other users' data without their permission, even if no real harm can be done with it.

Building the executable with PyInstaller

Set up a virtual environment and install PyInstaller as well as the required dependencies.

In match_logger.py, replace from importlib import resources with import sys and

names_path = resources.files(__package__).joinpath("resources", "names.json")

with

names_path = Path(sys._MEIPASS) / "resources/names.json"

Then run:

pyinstaller --noconfirm --onefile --console --name "Splatlogger-v1.x" --upx-dir "path/to/upx" --optimize "2" --add-data "path/to/Splatlogger/src/splatlogger/resources:resources/" --icon "NONE" "path/to/Splatlogger/src/run.py"

replacing the placeholder paths with the actual ones.

You can omit --upx-dir if you're not using UPX to compress the executable and --optimize "2" to disable bytecode optimization.

On Linux, add --bootloader-ignore-signals

Acknowledgments

  • pyGecko authors for the reference implementation of a TCPGecko library.

  • Everyone who found or helped me with finding the addresses/pointers used in this project.

  • c8ff/winterberry for finding a method to get Cemu's base address without reading the log file.

License

This project is licensed under the MIT License.

The executables include third-party components; their license texts are contained in THIRD_PARTY_LICENSES.md.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

splatlogger-1.0.0.tar.gz (23.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

splatlogger-1.0.0-py3-none-any.whl (26.0 kB view details)

Uploaded Python 3

File details

Details for the file splatlogger-1.0.0.tar.gz.

File metadata

  • Download URL: splatlogger-1.0.0.tar.gz
  • Upload date:
  • Size: 23.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.11.16

File hashes

Hashes for splatlogger-1.0.0.tar.gz
Algorithm Hash digest
SHA256 fa455b9acbcf3a183e417300751b249540ef1aa2aa8acf7e94c3bbf9b5b45e0e
MD5 43b0445452e30cb00953ea05b6238b00
BLAKE2b-256 57518eee70d314414b168aba6633ca9c9191474ade3401578a70bd2d34b5c02e

See more details on using hashes here.

File details

Details for the file splatlogger-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: splatlogger-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 26.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.11.16

File hashes

Hashes for splatlogger-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 14331ff097e45e52efb44de793c56158394e9530f45806fb9be527cbf72c7349
MD5 b389d929460a8596b173ebb5d6a4e243
BLAKE2b-256 893ffb60e5edc3d63777984bde7a2f3032f14157f81c71c8ef7ae7d132dba13b

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page