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
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
Metadata Files
README.md
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.
- Hardware-accelerated hashing for rapid duplicate discovery.
- Complete filesystem management.
- Backup and restore files.
- Interactive filesystem explorer.
- Automatic Real-Time-Clock (RTC) configuration.
- Developer tools:
- Easily monitor device
printfstatements and launch GDB sessions. - Capture screenshots, regardless of the running firmware.
- Easily monitor device
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:
- Raspberry Pi Pico (Recommended)
- STLink
- JLink
- DAPLink
- Raspberry Pi (GPIO)
Raspberry Pi Pico
All Raspberry Pi Picos can be transformed into programmers via the picoprobe project.
- Download
picoprobe.uf2from picoprobe releases. - Hold BOOT button on the pico and plug it into the computer. It should show up as a USB drive. Drag and drop
picoprobe.uf2to it. - 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.
- Repositories: 123
- Profile: https://github.com/BrianPugh
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
Top Committers
| Name | 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
Pull Request Labels
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
- Homepage: https://github.com/BrianPugh/gnwmanager
- Documentation: https://gnwmanager.readthedocs.io/
- License: Apache-2.0
-
Latest release: 0.19.0
published over 1 year ago
Rankings
Maintainers (1)
Dependencies
- 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
- 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