PICOTOOL-LOAD(1)

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

πŸ‘‘ picotool-load(1) β€” bestie edition ✨

okay so this is the manual page for picotool-load, a User Command, and it does exactly what it says on the tin: it takes the program / memory range that's chillin' inside a file and loads it onto the device. main character energy fr πŸ’…


🌸 NAME 🌸

picotool-load β€” load the program / memory range stored in a file onto the device. that's it, that's the vibe πŸ¦‹


✨ SYNOPSIS ✨

picotool load [--ignore-partitions] [--family <family_id>] [-p
<partition>] [-n] [-N] [-u] [-v] [-x] <filename> [-t <type>] [-o
<offset>] [device-selection]

like, yes bestie, there's a Lot of little flags. we're gonna go through every single one, no skipping, no cap πŸ™ˆ


πŸ’– OPTIONS πŸ’–

πŸŽ€ Post load actions

these are the things that happen around the load itself, iykyk

  • --ignore-partitions β€” when you're writing flash data, this tells picotool to ignore the partition table entirely and write into absolute space. chaotic? maybe. effective? absolutely. πŸ’…
  • --family β€” specify the family ID of the file to load. yes, the file, not the device. reading comprehension is the moment ✨
    • <family_id> β€” the family ID to use for load.
  • -p, --partition β€” specify which partition to load into.
    • <partition> β€” the partition to load into.
  • -n, --no-overwrite β€” when writing flash data, do not overwrite an existing program in flash. and here's the catch, bestie: if picotool can't figure out the size/presence of the program in flash, the command fails. like it just gives up. no vibes, no mercy 😭
  • -N, --no-overwrite-unsafe β€” same idea: when writing flash data, don't overwrite an existing program in flash. but if picotool can't determine the size/presence of the program in flash, the load continues anyway. hence the whole "unsafe" in the name, she's not subtle πŸ’€
  • -u, --update β€” skip writing flash sectors that already contain identical data. efficient queen πŸ‘‘
  • -v, --verify β€” verify the data was written correctly. trust but verify, periodt βœ…
  • -x, --execute β€” attempt to execute the downloaded file as a program after the load. sending it straight to the stage 🎀

πŸ“ File to load from

  • <filename> β€” The file name. just... the file name. that's the whole description. iconic minimalism πŸŽ€
  • -t <type> β€” specify the file type (uf2 | elf | bin) explicitly, ignoring the file extension. so if your file's lying about its extension, this is your girl 🧚

🧑 BIN file options

  • -o, --offset β€” specify the load address for a BIN file.
    • <offset> β€” the load offset (memory address; default 0x10000000). yes that's the default, write it down πŸ“

πŸ” Target device selection

picking your device out of the crowd, one filter at a time 🌈

  • --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 that's not in BOOTSEL mode but is running compatible code to reset so the command can actually be executed. and then β€” after executing the command, unless the command itself is a reboot β€” the device gets rebooted back to application mode. she leaves them how she found them 🫢
  • -F, --force-no-reboot β€” force a device that's not in BOOTSEL mode but is running compatible code to reset so the command can be executed. after executing the command (again, unless the command itself is a reboot), the device is left connected and accessible to picotool, but without the USB drive mounted. lowkey the "i'm staying over" option 😌
⚠️ heads up bestie: -n will straight up fail if picotool can't suss out the size or presence of the program in flash, while -N just sends it. pick your fighter πŸ’€

πŸ’œ a lil sign-off πŸ’œ

this page is from picotool 2.2.0-a4+dfsg, dated December 2025. go load something slay, bestie πŸ’–βœ¨πŸŽ€

πŸ“¦ where this page comes from