https://github.com/brianpugh/gnwmanager

https://github.com/brianpugh/gnwmanager

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (10.8%) to scientific vocabulary

Keywords from Contributors

parallel projection pypi generic distributed archiving transformers energy-system-model mesh serializer
Last synced: 10 months ago · JSON representation

Repository

Basic Info
  • Host: GitHub
  • Owner: BrianPugh
  • License: apache-2.0
  • Language: C
  • Default Branch: main
  • Size: 13.4 MB
Statistics
  • Stars: 37
  • Watchers: 3
  • Forks: 6
  • Open Issues: 1
  • Releases: 43
Created almost 3 years ago · Last pushed 11 months ago
Metadata Files
Readme Contributing Funding License

README.md

![Python compat](https://img.shields.io/badge/>=python-3.9-blue.svg) [![PyPI](https://img.shields.io/pypi/v/gnwmanager.svg)](https://pypi.org/project/gnwmanager/)

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 - Installation - Device Unlocking - Binary Flashing - Filesystem Management - Extracting Screenshots

Tutorials useful for developers - Device Locking - Stdout Monitoring - Flash Erasing

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:

Raspberry Pi (GPIO)

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

Usage

To see available commands, run gnwmanager --help.

```console $ 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 poetry for python management.

bash git clone git@github.com:BrianPugh/gnwmanager.git cd gnwmanager pre-commit install # Ensures linting passes prior to committing poetry install make -j4 # Builds stm32 firmware binaries.

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

bash gnwmanager/firmware.bin gnwmanager/unlock.bin

Owner

  • Name: Brian Pugh
  • Login: BrianPugh
  • Kind: user
  • Location: Washington D.C.

Deep Learning Scientist and blockchain enthusiast

GitHub Events

Total
  • Create event: 101
  • Issues event: 6
  • Release event: 13
  • Watch event: 16
  • Delete event: 86
  • Issue comment event: 30
  • Push event: 108
  • Pull request review comment event: 3
  • Pull request review event: 5
  • Pull request event: 167
  • Fork event: 3
Last Year
  • Create event: 101
  • Issues event: 6
  • Release event: 13
  • Watch event: 16
  • Delete event: 86
  • Issue comment event: 30
  • Push event: 108
  • Pull request review comment event: 3
  • Pull request review event: 5
  • Pull request event: 167
  • Fork event: 3

Committers

Last synced: about 1 year ago

All Time
  • Total Commits: 488
  • Total Committers: 7
  • Avg Commits per committer: 69.714
  • Development Distribution Score (DDS): 0.482
Past Year
  • Commits: 143
  • Committers: 5
  • Avg Commits per committer: 28.6
  • Development Distribution Score (DDS): 0.643
Top Committers
Name Email Commits
Brian Pugh b****7@g****m 253
dependabot[bot] 4****] 121
pre-commit-ci[bot] 6****] 94
Sylverb s****u@g****m 14
marian m****r@s****m 4
Nick Peng p****u@g****m 1
Adam Minchinton a****n@g****m 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 11 months ago

All Time
  • Total issues: 7
  • Total pull requests: 337
  • Average time to close issues: 12 days
  • Average time to close pull requests: about 16 hours
  • Total issue authors: 6
  • Total pull request authors: 8
  • Average comments per issue: 4.29
  • Average comments per pull request: 0.09
  • Merged pull requests: 287
  • Bot issues: 0
  • Bot pull requests: 252
Past Year
  • Issues: 3
  • Pull requests: 170
  • Average time to close issues: 7 days
  • Average time to close pull requests: about 18 hours
  • Issue authors: 2
  • Pull request authors: 5
  • Average comments per issue: 5.33
  • Average comments per pull request: 0.11
  • Merged pull requests: 138
  • Bot issues: 0
  • Bot pull requests: 131
Top Authors
Issue Authors
  • pymumu (2)
  • aut0mat3d (1)
  • Icing-weaponry (1)
  • aminch (1)
  • shadow2560 (1)
  • dadagm (1)
Pull Request Authors
  • dependabot[bot] (166)
  • pre-commit-ci[bot] (120)
  • BrianPugh (75)
  • sylverb (4)
  • marian-m12l (2)
  • pymumu (2)
  • aminch (1)
  • karansoin (1)
  • shadow2560 (1)
Top Labels
Issue Labels
bug (2)
Pull Request Labels
dependencies (166) python (43)

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 313 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 43
  • Total maintainers: 1
pypi.org: gnwmanager
  • Versions: 43
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 313 Last month
Rankings
Dependent packages count: 7.5%
Average: 38.6%
Dependent repos count: 69.7%
Maintainers (1)
Last synced: 11 months ago

Dependencies

pyproject.toml pypi
.github/workflows/deploy.yaml actions
  • JRubics/poetry-publish v1.16 composite
  • actions/checkout v3 composite
  • actions/upload-artifact v3 composite
  • carlosperate/arm-none-eabi-gcc-action v1.7.1 composite
poetry.lock pypi
  • alabaster 0.7.13
  • appdirs 1.4.4
  • appnope 0.1.3
  • asttokens 2.2.1
  • babel 2.12.1
  • backcall 0.2.0
  • capstone 4.0.2
  • certifi 2023.7.22
  • cffi 1.15.1
  • cfgv 3.4.0
  • charset-normalizer 3.2.0
  • click 8.1.7
  • cmsis-pack-manager 0.5.2
  • colorama 0.4.6
  • coverage 7.3.0
  • decorator 5.1.1
  • distlib 0.3.7
  • docutils 0.18.1
  • exceptiongroup 1.1.3
  • executing 1.2.0
  • filelock 3.12.2
  • gitdb 4.0.10
  • gitpython 3.1.32
  • hidapi 0.14.0
  • identify 2.5.26
  • idna 3.4
  • imagesize 1.4.1
  • importlib-metadata 6.8.0
  • importlib-resources 6.0.1
  • iniconfig 2.0.0
  • intelhex 2.3.0
  • intervaltree 3.1.0
  • ipdb 0.13.13
  • ipython 8.12.2
  • jedi 0.19.0
  • jinja2 3.1.2
  • lark 1.1.7
  • libusb-package 1.0.26.2
  • line-profiler 4.1.0
  • littlefs-python 0.1.dev96+g43319b1
  • markdown-it-py 3.0.0
  • markupsafe 2.1.3
  • matplotlib-inline 0.1.6
  • mdurl 0.1.2
  • natsort 8.4.0
  • nodeenv 1.8.0
  • packaging 23.1
  • parso 0.8.3
  • pexpect 4.8.0
  • pickleshare 0.7.5
  • pillow 10.0.0
  • platformdirs 3.10.0
  • pluggy 1.2.0
  • pre-commit 3.3.3
  • prettytable 3.8.0
  • prompt-toolkit 3.0.39
  • psutil 5.9.5
  • ptyprocess 0.7.0
  • pure-eval 0.2.2
  • pycparser 2.21
  • pyelftools 0.29
  • pygments 2.16.1
  • pylink-square 1.2.0
  • pyocd 0.1.dev2755
  • pytest 7.4.0
  • pytest-cov 4.1.0
  • pytest-mock 3.11.1
  • pytz 2023.3
  • pyusb 1.2.1
  • pyyaml 6.0.1
  • requests 2.31.0
  • rich 13.5.2
  • setuptools 68.1.0
  • six 1.16.0
  • smmap 5.0.0
  • snowballstemmer 2.2.0
  • sortedcontainers 2.4.0
  • sphinx 6.2.1
  • sphinx-copybutton 0.5.2
  • sphinx-rtd-theme 1.2.2
  • sphinxcontrib-applehelp 1.0.4
  • sphinxcontrib-devhelp 1.0.2
  • sphinxcontrib-htmlhelp 2.0.1
  • sphinxcontrib-jquery 4.1
  • sphinxcontrib-jsmath 1.0.1
  • sphinxcontrib-qthelp 1.0.3
  • sphinxcontrib-serializinghtml 1.1.5
  • stack-data 0.6.2
  • tamp 1.1.6
  • tomli 2.0.1
  • tqdm 4.66.1
  • traitlets 5.9.0
  • typer 0.9.0
  • typing-extensions 4.7.1
  • urllib3 2.0.4
  • virtualenv 20.24.3
  • wcwidth 0.2.6
  • zipp 3.16.2