Skip to main content

No project description provided

Project description

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.

STLink

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

STLink Clone

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

Project details


Download files

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

Source Distribution

gnwmanager-0.22.1.tar.gz (13.6 MB view details)

Uploaded Source

Built Distribution

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

gnwmanager-0.22.1-py3-none-any.whl (185.8 kB view details)

Uploaded Python 3

File details

Details for the file gnwmanager-0.22.1.tar.gz.

File metadata

  • Download URL: gnwmanager-0.22.1.tar.gz
  • Upload date:
  • Size: 13.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for gnwmanager-0.22.1.tar.gz
Algorithm Hash digest
SHA256 1f86a0845e2fd9323c3cdb3126e4b9027790d47e6de238836131a986f5c1b323
MD5 36355916559129771163a1dc9b2e99fb
BLAKE2b-256 1bd7d6df5c1aa9bf61efd2f2919fd589112ef12b8ae2e6dea65b192a565a733e

See more details on using hashes here.

Provenance

The following attestation bundles were made for gnwmanager-0.22.1.tar.gz:

Publisher: deploy.yaml on BrianPugh/gnwmanager

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gnwmanager-0.22.1-py3-none-any.whl.

File metadata

  • Download URL: gnwmanager-0.22.1-py3-none-any.whl
  • Upload date:
  • Size: 185.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for gnwmanager-0.22.1-py3-none-any.whl
Algorithm Hash digest
SHA256 573c3890b0d1253fc3b25121142aa4c5b34e131439cf9dc0a76806b7d8367e70
MD5 30f2ebc110e7657eaf85c5b0a0ae4a24
BLAKE2b-256 9b2d550317f0d8c2f62e9084e746a07bd65ae38730b12c243b80ec92361dcc06

See more details on using hashes here.

Provenance

The following attestation bundles were made for gnwmanager-0.22.1-py3-none-any.whl:

Publisher: deploy.yaml on BrianPugh/gnwmanager

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page