Skip to content

Getting Started

Jakub Heger edited this page Oct 15, 2026 · 15 revisions

Getting started

  1. Plug in the Pico. The top right corner shows ● /dev/ttyACM0 in green once it's found, or ○ no programmer in red if it isn't.
  2. Insert a chip. Its socket card switches from "empty" to the chip name within a second.
  3. Click the socket card to make it the target. The card is outlined in orange.
  4. Back up first: press read and save the dump somewhere safe.
  5. Press write, pick the image and confirm.

The window, top to bottom

Header

The logo and title on the left; on the right, the programmer's port (● /dev/ttyACM0 in green when connected, ○ no programmer in red, ● /dev/ttyACM0 · not responding in yellow for a Pico that doesn't answer, see Troubleshooting) and, next to it, the light/dark switch and ⚙ settings, which opens the settings page. In dark mode it shows a sun with light mode next to it, in light mode a moon with dark mode: always the mode a click switches to; click it to switch. Dark is the default, and your choice is remembered.

Sockets

One card per socket (CS0 to CS3), plus ALL for broadcast. Click a card, or press Alt+1 to Alt+4 or Alt+A, to choose the target for the buttons below. The number of sockets is set on the settings page (see Socket count); with a single socket there's no ALL card. A socket can also get a name there: its card then shows the name as the title and the CS number in the corner. The light and the text show the socket's state:

Card shows Meaning
not probed Nothing known yet (programmer not scanned)
empty · no chip detected No chip in the socket
chip name and size Chip identified and ready
… · probe to identify (yellow) A chip HydraFlasher hasn't identified yet. It's probed automatically, see Chip Detection.
N defs match (yellow) Several flashprog chip definitions fit this chip. You're asked which one when you start a job.
unsupported chip (red) flashprog has no definition for this chip, so it can't be used
working… (orange, pulsing) A job is using this socket right now
not wired (grey) In auto mode, a socket between wired ones that the Pico doesn't detect as wired (no pull-up resistor). It's skipped; see Socket count.
no CS line in firmware (red) More sockets are configured than the Pico's firmware has chip selects (see Socket count)
◷ queued #n (grey) A job for this socket is waiting in the queue; #n is its place in line
✓ verified / ✕ failed Result of the last write or verify

The ALL card shows how many identical chips are inserted, or chip types differ if a broadcast isn't possible. With one-by-one on, it's titled one-by-one and shows N chips · in turn.

While a job runs or waits, a red line under the cards reads "DO NOT remove or add chips while tasks run."

You can also drag an image file from your file manager onto a card to write it to that socket (see Drag and drop).

Flashing options

The options for the operations. Everything else (socket count, flashprog binary, firmware, notifications) is on the settings page.

Setting What it does
port / ↻ Serial port of the Pico. Picked automatically; ↻ lists all serial ports in the log and picks the best match again.
speed SPI clock, 4M to 48M. 16M is a safe default; lower it if reads fail on long wires.
chip / × Chip override: force one flashprog chip definition (-c). × resets it to Auto-detect. See Chip Detection.
force -f Passes -f to flashprog (forces operations it would normally refuse). Only for experts.
progress Shows flashprog's progress and the progress bar
skip verify -n Don't verify after writing. Faster, but you won't know if the write worked.
verify on Pico Verify with a CRC32 on the Pico instead of reading the chip back over USB (much faster)
used blocks only Only erase and write the parts of the chip the image uses (see Operations)
production mode See Production Mode
one-by-one Only shown while ALL is selected: write sends the image to each socket in turn instead of to all at once, so the chips may differ (see Operations)
recent files ▸ Write or verify a recently used image again
flash log ▸ Opens the CSV log of every write and verify

Buttons

probe · read · verify · erase · write act on the selected target. ■ stop (or Esc) stops the running job. Each operation is explained in Operations.

A greyed-out button can't be used right now; click it to see why. This happens to probe while jobs run or wait (see Job Queue), and to write and erase while ALL is selected but the chips can't be written all at once and one-by-one is off (see Operations).

Status line and log

The status line shows the running job, its step, elapsed time, the number of queued jobs and a progress bar.

Time left. Once a job has run before, the status line shows the time left instead of the elapsed time: ~35s left. With jobs in the queue it adds the total, for example 2 queued, ~1m 50s total. If a job takes longer than usual, it shows 50s, usually 42s. HydraFlasher learns these times from your own successful jobs, separately for each operation, socket count, chip type, image size and setting (speed, verify on Pico, used blocks only, skip verify), so the first run of a new kind of job has no estimate. A job with a different image of the same size is estimated from the earlier ones.

The log below lists every job with its steps, the exact flashprog command and the result. Ctrl+L clears the log. Dropping an image on the log verifies the selected target against it (see Drag and drop).

How to read it:

● Probe all sockets                                  ← a job (orange)
  ╰  CS0  ● W25Q256FV                 32.0 MiB       ← its steps and details
     CS3  ● MX25L25635F/MX25L25645G   32.0 MiB
● ✓ Probe complete — 4/4 sockets populated.          ← its result: ✓ green, ✕ red

● ✕ Can't use ALL: the chips aren't all the same type  ← a message outside a job
  ╰  CS0  ● W25Q256FV                 32.0 MiB          (● ⚠ warning, ● ✕ error)

Socket lists and results are in columns: socket, status, time, then details such as a CRC or a file name.

You can copy from the log like from a terminal:

  • drag to select, then press Ctrl+C (Ctrl+Shift+C and Ctrl+Insert work too);
  • Ctrl+A selects the whole log;
  • right-click for Copy, Copy all and Select all.

The log itself can't be edited. While you're scrolled up, for example to select something, new output doesn't scroll the log away from you. Scroll back to the bottom to follow the output again.

Clone this wiki locally