Skip to content

About

Multi-socket SPI flash programmer: a GUI for flashprog/flashrom with a Raspberry Pi Pico running pico-serprog-based firmware. SNCA vibe-coded project for work.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

HydraFlasher logo

HydraFlasher

Made with Claude Code License Python Raspberry Pi Pico Static Badge

A desktop GUI for flashing SPI flash chips with flashprog (or flashrom) through a Raspberry Pi Pico running a modified pico-serprog firmware.

The firmware adds up to ten chip-select lines, so one Pico can serve several sockets: HydraFlasher scans them live, flashes and verifies each chip, and logs every run.

Note that: This is a full vibe coded project for my work. I do not prefer vibe coding, this is just a SNCA project so I can make my work easier and faster.

HydraFlasher main window

User guide: see the wiki: features, use cases and troubleshooting.

Layout

Path What
HydraFlasher.py The GUI (Python, customtkinter)
firmware/ Pico serprog firmware with multi-CS, status LEDs and on-device CRC32
packaging/ Builds the Windows installer, portable .exe and Linux AppImage
tests/ GUI tests with a fake Pico and a fake flashprog (tests/run_all.sh)
tools/ Scripts that draw the pinout, the icons and the README screenshot

Download

Get the newest release:

System File
Windows HydraFlasher-Setup-<version>.exe (installer) or HydraFlasher-<version>-portable.exe (no install)
Linux HydraFlasher-<version>-x86_64.AppImage: chmod +x, then run it. Needs FUSE (sudo apt install fuse3 on Debian/Ubuntu), or start it with --appimage-extract-and-run

You still need flashprog (or flashrom); HydraFlasher asks for it on the first start if it can't find it. The Pico firmware has its own releases (fw-v…), which the app installs from its settings page.

Running from source

Needs Python 3.8+ with Tk, and flashprog or flashrom on the PATH.

pip install -r requirements.txt
python3 HydraFlasher.py

On Linux your user needs access to the Pico's serial port (usually the dialout or uucp group).

Firmware

Pinout:

Signal GPIO
SCK GP2
MOSI GP3
MISO GP4 (pull-up)
CS0 to CS9 GP5 to GP14
LED busy / pass / fail GP16 / GP17 / GP18

Build with the Pico SDK (PICO_SDK_PATH set, or a pico-sdk checkout in or next to firmware/):

cd firmware
./build.sh          # builds build/pico_serprog.uf2
./build.sh flash    # builds, then copies it to a Pico in BOOTSEL mode

GitHub Actions also builds the .uf2 on every push that touches firmware/. Pushing a tag fw-v<version> (matching FW_VERSION in firmware/main.c) publishes it as a GitHub Release, which the app's settings page can download and install on the Pico.

License

Copyright © 2026 Jakub Heger. HydraFlasher is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License, version 3 or (at your option) any later version, see LICENSE.

It comes with no warranty. Flashing writes and erases chips: keep a backup (read the chip first) of anything you can't replace.

The firmware keeps its upstream licenses (GPLv3, firmware/COPYING); a built .uf2 also contains the Pico SDK and TinyUSB, whose notices are in firmware/NOTICE. The downloadable app packages include the licenses of the software bundled with them in THIRD-PARTY-LICENSES.txt (settings → version → licenses).

About

Multi-socket SPI flash programmer: a GUI for flashprog/flashrom with a Raspberry Pi Pico running pico-serprog-based firmware. SNCA vibe-coded project for work.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Contributors

Languages