Skip to content

Latest commit

 

History

15 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pico-flash-gui logo

pico-flash-gui

Make a cheap but powerful USB Rubber Ducky with a Raspberry Pi Pico


A desktop GUI for flashing pico-ducky on Linux.
Plug in your Pico, hit Start Flash, and it does the rest — wipes, flashes CircuitPython, copies all the files, arms your payload.
No manual steps.

GUI rewrite of pico-flash, originally a bash script. Same workflow, proper interface.


What it does

Flashing a Pico for pico-ducky manually means: holding BOOTSEL, copying a nuke file, waiting for remount, copying CircuitPython, waiting again, copying lib files and scripts, then arming a payload. Every time.

pico-flash-gui automates all of it. On first run it downloads every dependency automatically. After that, plug in and flash.

Flash Mode — full wipe and reflash across 5 steps:

  1. Detect Pico in BOOTSEL mode
  2. Wipe flash with flash_nuke.uf2
  3. Flash CircuitPython firmware (latest stable, auto-fetched)
  4. Copy pico-ducky project files and Adafruit libraries
  5. Pick and arm a .dd payload — or skip

Setup Mode — manage an already-flashed Pico without wiping it. Bridge GP0 to GND before plugging in to suppress payload execution, then:

  • Swap the armed payload
  • Download any file off the Pico
  • Eject safely
  • Trigger a full reflash

The app polls for device status every 2 seconds and shows a live indicator in the sidebar — BOOTSEL, CIRCUITPY, or nothing detected.

Supports: Pico, Pico W, Pico 2, Pico 2 W


Screenshots

First-time Setup

Board configuration

Automatic Dependency Download

Downloading dependencies

Flash Mode

Flash mode mid-flash

Payload Management

Payload list

Payload Editor

Payload editor


Requirements

# Ubuntu/Debian
sudo apt install nodejs npm unzip

# Arch
sudo pacman -S nodejs npm unzip

# Fedora
sudo dnf install nodejs npm unzip

Install

git clone https://github.com/Umbra-Domini/pico-flash-gui.git
cd pico-flash-gui
npm install
npm start

You may see deprecation warnings during npm install — these are from electron-builder's dependencies and are harmless. The app is not affected.


First run — Setup Wizard

The first time you open the app it runs a setup wizard before anything else.

Step 1 — Disclaimer Read and check the box, then click Accept & Continue.

Step 2 — Board & Wi-Fi Pick your Pico variant from the dropdown (Pico, Pico W, Pico 2, or Pico 2 W). If you picked a W variant, enter the SSID and password the Pico will broadcast as a Wi-Fi access point. You can hit Generate for a random password. Click Download & Continue.

Step 3 — Download The app automatically downloads everything it needs:

  • flash_nuke.uf2 — used to wipe the Pico
  • CircuitPython firmware — latest stable for your board
  • pico-ducky source files
  • Required Adafruit libraries

This only happens once. Everything is cached and reused after that.

Step 4 — Done Click Open pico-flash to go to the main app.


Usage

Flash Mode

This is the main screen. It does a full wipe and reflash of your Pico in 5 steps — all automatic except for plugging in the device.

  1. Click Start Flash
  2. Hold the BOOTSEL button on your Pico and plug it into USB — then let go
  3. The app detects it and takes over. Watch the steps tick off:
    • 01 Pico detected in BOOTSEL mode
    • 02 Flash wiped
    • 03 CircuitPython installed
    • 04 pico-ducky files copied
    • 05 Payload selection
  4. At step 5 a popup appears — pick a .dd payload to arm, or click Skip to leave it empty
  5. The Pico is ejected automatically. Unplug it when done

⚠️ If you armed a payload, do not plug the Pico back into your own machine — it will execute the payload immediately as if it were a keyboard.


Setup Mode

Use this when your Pico is already flashed and you want to manage it without wiping it — swap a payload, grab a file off it, or eject it safely.

To enter setup mode, you need to suppress payload execution first — otherwise the Pico will run the payload the moment it's plugged in.

How to enter setup mode:

  1. Unplug your Pico
  2. Bridge GP0 to GND with a jumper wire (or a piece of wire) — this tells the Pico not to run the payload
  3. Plug it in
  4. Click Setup Mode in the sidebar — the app detects the CIRCUITPY drive and shows four action cards

What you can do:

  • Swap Payload — replace the active payload with a different .dd file from your library
  • Download File — pull any file off the Pico and save it to your computer
  • Eject — safely unmount the Pico before unplugging
  • Full Reflash — wipe everything and go back through Flash Mode

Payloads

The Payloads panel is where you manage your .dd DuckyScript files.

  • Import — pick any .dd or .txt file from your computer. It gets copied into the app's payload library (.txt files are renamed to .dd automatically)
  • Create — opens a text editor inside the app. Give it a name, write your DuckyScript, hit Save
  • Edit — opens an existing payload in the editor
  • Delete — removes the payload from the library

Payloads are stored locally and are not affected by Reconfigure or reflashing.


Wi-Fi Settings (Pico W / Pico 2 W only)

You can update the Wi-Fi credentials on an already-flashed Pico W without reflashing it.

  1. Put the Pico in setup mode (bridge GP0 to GND, plug in)
  2. Click Wi-Fi Settings in the sidebar
  3. Enter the new SSID and password, click Save

The new credentials are written directly to the Pico.


Reconfigure

Click Reconfigure in the sidebar if you want to switch boards or redownload everything from scratch. It wipes the downloaded files and config and takes you back to the setup wizard. Your .dd payload files are not touched.


Payload format

Payloads are DuckyScript files with a .dd extension. pico-ducky supports DuckyScript 1.0 with partial 3.0 support.


Disclaimer

This tool is intended for use on devices you own. You are solely responsible for how it is used. The author assumes no liability for misuse.


Credits

About

A desktop GUI for automating the full pico-ducky flash workflow on Linux. Wipes, flashes, and arms payloads in 5 guided steps.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages