PICOTOOL-SAVE(1)

πŸ“¦ version 2.2.0-a4, in ubuntu stonking

🌸 PICOTOOL-SAVE 🌸

okay bestie, welcome to the picotool-save manual page β€” it lives in the User Commands section of the picotool docs, and it's about rescuing the goods off your lil microcontroller board πŸ’–


✨ NAME ✨

picotool-save β€” Save the program / memory stored in flash on the device to a file.

Like, literally grab what's on the chip and yeet it into a file on your computer. That's the whole vibe. πŸ¦‹


πŸ“œ SYNOPSIS πŸ“œ

picotool save [-p] [-v] [--family <family_id>] <filename> [-t <type>]
[device-selection]

picotool save -a [-v] [--family <family_id>] <filename> [-t <type>]
[device-selection]

picotool save -r <from> <to> [-v] [--family <family_id>] <filename> [-t <type>] [device-selection]

Three flavours, pick your fighter: default program-only, all-of-flash, or a lil specific range. πŸŽ€


πŸ‘‘ OPTIONS πŸ‘‘

πŸ“ Selection of data to save

This is where you tell picotool what you actually want, bestie. Choose wisely.

  • -p, --program β€” Save the installed program only. This is the default, so if you don't say anything, this is what you get. Lowkey the chill option. ✨
  • -a, --all β€” Save all of flash memory. Everything. The whole entire chip. No crumbs left behind. πŸ’…
  • -r, --range β€” Save a range of memory. Heads up though: UF2s always store complete 256byte-aligned blocks of 256 bytes, and the range is expanded accordingly. So like, it's giving "approximately that range", not "exactly that range", iykyk. 🫢
  • <from> β€” The lower address bound in hex.
  • <to> β€” The upper address bound in hex.

🌈 Other

The extra lil seasoning options, not required but sometimes you want them fr fr.

  • -v, --verify β€” Verify the data was saved correctly. Double-checking your work?? We stan. βœ…
  • --family β€” Specify the family ID to save the file as.
  • <family_id> β€” family ID to save file as.

πŸŽ€ File to save to

  • <filename> β€” The file name. Yes, this is the one. Your output goes here. 🫢
  • -t <type> β€” Specify file type (uf2 | elf | bin) explicitly, ignoring file extension. So if your file's name is lying, this is how you correct it. πŸ™ˆ

🧚 Source device selection

If you've got multiple lil boards plugged in, this is the "which one tho" section. Filter it down, bestie.

  • --bus <bus> β€” Filter devices by USB bus number.
  • --address <addr> β€” Filter devices by USB device address.
  • --vid <vid> β€” Filter by vendor id.
  • --pid <pid> β€” Filter by product id.
  • --ser <ser> β€” Filter by serial number.
  • -f, --force β€” Force a device not in BOOTSEL mode but running compatible code to reset so the command can be executed. After executing the command (unless the command itself is a reboot) the device will be rebooted back to application mode. So like, it goes away and comes back on its own. Iconic behaviour honestly. πŸ”₯
  • -F, --force-no-reboot β€” Force a device not in BOOTSEL mode but running compatible code to reset so the command can be executed. After executing the command (unless the command itself is a reboot) the device will be left connected and accessible to picotool, but without the USB drive mounted. Same rescue mission as -f, just refuses to leave the group chat afterwards. πŸ’€
ngl the -f / -F pair is the drama of this whole manpage. -f reboots your board back into application mode. -F keeps it hanging around, connected and reachable by picotool, just with no USB drive mounted. Pick based on whether you're done with it or not. πŸ™ˆ

πŸ’œ SEE ALSO πŸ’œ

Everything above is all of it, bestie β€” that's the whole page. No extra cross-references hiding in here. 🌸


and that's the tea β˜• β€” this fine piece of documentation is from picotool 2.2.0-a4+dfsg, dated December 2025. Go save some flash, you absolute legend πŸ‘‘βœ¨πŸ’…

πŸ“¦ where this page comes from