Skip to main content

Python compat PyPI

GnWManager

GnWManager is THE game-and-watch device manager. GnWManager is a command line tool who's responsible for getting firmware onto your device, managing the filesystem, and other device administrative tasks.

GnWManager accomplishes this via a small bundled pre-compiled firmware that gets executed from the STM32's RAM.

Features

  • Simple installation.
  • Works on all operating systems (Linux, MacOS, Windows).
  • Automatic debugging probe detection.
    • No need to specify if you have a stlink, jlink, CMSIS-DAP, or Raspberry Pi.
  • Fast internal and external flash firmware flashing.
    • Hardware-accelerated hashing for rapid duplicate discovery.
      • Only syncs changed data.
      • Minimizes flash erases and writes, extending flash lifespan.
    • Double buffered, asynchronous, LZMA-compressed transfers for maximum speed.
  • Complete filesystem management.
    • Backup and restore files.
    • Interactive filesystem explorer.
  • Automatic Real-Time-Clock (RTC) configuration.
  • Developer tools:
    • Easily monitor device printf statements and launch GDB sessions.
    • Capture screenshots, regardless of the running firmware.

Tutorials

Tutorials useful for typical end-users

Tutorials useful for developers

Compatibility

GnWManager works with all major operating systems: Windows, Mac, and Linux. GnWManager is also compatible with the following probes:

  1. Raspberry Pi Pico (Recommended)
  2. STLink
  3. JLink
  4. DAPLink
  5. Raspberry Pi (GPIO)

Raspberry Pi Pico

All Raspberry Pi Picos can be transformed into programmers via the picoprobe project.

  1. Download picoprobe.uf2 from picoprobe releases.
  2. Hold BOOT button on the pico and plug it into the computer. It should show up as a USB drive. Drag and drop picoprobe.uf2 to it.
  3. Hook up the 3 wires (GND, GP2, GP3) to (GND, SDCLK, SWDIO), respectively.

Hook up your STLink to your game and watch as follows:

Attention, Pinout can be different:

Raspberry Pi (GPIO)

Hook up your Raspberry Pi to your game and watch as follows:

Usage

To see available commands, run gnwmanager --help.

$ gnwmanager --help

 Usage: gnwmanager [OPTIONS] COMMAND [ARGS]...

 Game And Watch Device Manager.
 Manages device flashing, filesystem management, peripheral configuration, and more.

╭─ Options ──────────────────────────────────────────────────────────────────────────╮
│ --version    -v                  Print gnwmanager version.                         │
│ --frequency  -f      INT_PARSER  Probe frequency. [default: None]                  │
│ --backend    -b      [pyocd]     OCD Backend. [default: pyocd]                     │
│ --help                           Show this message and exit.                       │
╰────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ─────────────────────────────────────────────────────────────────────────╮
│ debug             GnWManager internal debugging tools                              │
│ disable-debug     Disable the microcontroller's debug block.                       │
│ erase             Erase a section of flash.                                        │
│ flash             Flash firmware to device.                                        │
│ format            Format device's filesystem.                                      │
│ gdb               Launch a gdbserver and connect to it with gdb.                   │
│ gdbserver         Launch a gdbserver.                                              │
│ install           Install third party executables, like openocd.                   │
│ lock              Re-lock your device.                                             │
│ ls                List contents of device directory.                               │
│ mkdir             Create a directory on device.                                    │
│ monitor           Monitor the device's stdout logging buffer.                      │
│ mv                Move/Rename a file or directory.                                 │
│ pull              Pull a file or folder from device.                               │
│ push              Push file(s) and folder(s) to device.                            │
│ sdpush            Push file(s) to SD Card connected to device.                     │
│ screenshot        Capture and transfer screenshots from device.                    │
│ shell             Launch an interactive shell to browse device filesystem.         │
│ start             Start firmware at location.                                      │
│ tree              List contents of device directory and its descendants.           │
│ unlock            Backs up and unlocks a stock Game & Watch console.               │
╰────────────────────────────────────────────────────────────────────────────────────╯

Need Help?

If you need any help, either open up a github issue here, or join the stacksmashing discord for live help. When sharing gnwmanager output, it is recommended to increase the verbosity level:

  • Via CLI argument: gnwmanager --verbosity=debug
  • Via environment variable export GNWMANAGER_VERBOSITY=debug

Developer Installation

If developing for GnWManager, perform the following steps to setup your local environment. We use pre-commit to run linting, and uv for python management.

git clone git@github.com:BrianPugh/gnwmanager.git
cd gnwmanager
uv sync  # Creates a virtual environment and installs dependencies.
uv run pre-commit install  # Ensures linting passes prior to committing
make -j4  # Builds stm32 firmware binaries.

When changing C sources, make must be re-ran to update the binaries located at:

gnwmanager/firmware.bin
gnwmanager/unlock.bin

Remote programmer server

Install gnwmanager and start a server using the usual backend options:

pip install gnwmanager
gnwmanager serve
# Or use an existing gwmeu GDB server:
gnwmanager --backend gdb --gdb-host localhost --gdb-port 1234 serve
# Or use PyOCD:
gnwmanager --backend pyocd serve

The backend is selected at startup. OpenOCD retains its existing programmer auto-detection, including Raspberry Pi GPIO. The WebSocket cannot select backends or run CLI commands. It exposes serialized low-level memory, register, clock, and explicit target-control operations. The client remains responsible for firmware mailbox coordination and flash operations.

The default endpoint is ws://127.0.0.1:8765/gdb, separately from the GDB TCP port. The server stays available when no target is connected; clients can retry attachment. Only one client can own the programmer at a time. Attachment, target control, and cleanup use the selected backend's existing behavior, including the GDB backend's normal halt/resume behavior. The server does not introduce a new GPIO driver or change backend policies.

For a Raspberry Pi, tunnel the default loopback endpoint from the browser computer:

ssh -L 8765:127.0.0.1:8765 user@raspberrypi

For direct network access, use serve --bind 0.0.0.0 --origin <browser-origin>. --origin may be repeated. HTTPS clients can use --cert <certificate> --key <private-key> and a browser-trusted wss:// endpoint.

OpenOCD GPIO wiring follows the existing GnWManager configuration: SWCLK GPIO25 (pin22), SWDIO GPIO24 (pin18), and GND. Existing Raspberry Pi support is unchanged.

Metadata

Release files for gnwmanager 0.24.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gnwmanager 0.24.0
File Size Uploaded
gnwmanager-0.24.0.tar.gz 13.6 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for gnwmanager 0.24.0
File Interpreter ABI Platform
gnwmanager-0.24.0-py3-none-any.whl Python 3 none any Details

Total release size: 13.8 MB

Release files / gnwmanager-0.24.0.tar.gz

Download URL gnwmanager-0.24.0.tar.gz
Size 13.6 MB
Tags Source
SHA-256 checksum
How to use checksums
3e5dea76c51bbc0e168a183df6bbce599a005ac1c840eaa29d42b42085b44b11
BLAKE2b-256 checksum
How to use checksums
90e1eb1e3f9564ce8f406dc52175bebad1a4d7bc16ad1d0903f912bbb2a75ba8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 2, 2026.

Transparency log

Release files / gnwmanager-0.24.0-py3-none-any.whl

Download URL gnwmanager-0.24.0-py3-none-any.whl
Size 194.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0fa469b9bd422c1bafe0f5e310fafd5d46667a611cb9fa3e9838b9efad17bc20
BLAKE2b-256 checksum
How to use checksums
8106189eb17371cc6ceedc4212f7ba7cb5be9dce86684fb777d9588569496778
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 2, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.24.0 This release

2 release files

0.23.0

2 release files

0.22.1

2 release files

0.21.1

2 release files

0.21.0

2 release files

0.19.1

2 release files

0.19.0

2 release files

0.17.0

2 release files

0.16.1

2 release files

0.16.0

2 release files

0.15.1

2 release files

0.15.0

2 release files

0.14.0

2 release files

0.12.0

2 release files

0.11.0

2 release files

0.10.4

2 release files

0.10.3

2 release files

0.10.2

2 release files

0.10.1

2 release files

0.10.0

2 release files

0.9.3

2 release files

0.9.2

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.0

2 release 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