PICOTOOL-SAVE(1)
πΈ 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 complete256byte-aligned blocks of256 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 areboot) 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 areboot) 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/-Fpair is the drama of this whole manpage.-freboots your board back into application mode.-Fkeeps 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
- ubuntu stonking: picotool 2.2.0-a4+dfsg-3 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms