PICOTOOL-OTP-SET(1)

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

πŸŽ€ NAME πŸŽ€

picotool-otp-set β€” bestie, this is the little picotool subcommand that sets the value of an OTP row/field. That's it, that's the whole personality. It's part of the picotool User Commands lineup and it is so specific and so powerful. πŸ’…


✨ SYNOPSIS ✨

picotool otp set [-c <copies>] [-r] [-e] [-s] [-i <filename>] [-z]
<selector> <value> [device-selection]

πŸ’– OPTIONS πŸ’–

πŸ”₯ Redundancy/Error Correction Overrides

okay so this is the group of flags that mess with how many copies and what kind of bits you're writing ✨

  • -c <copies> β€” write multiple redundant values. That's <copies>-many copies, no cap, iconic.
  • -r, --raw β€” set raw 24-bit values. Yeah, 24 bits, exactly as much as a row holds, don't ask questions.
  • -e, --ecc β€” use error correction. Let the hardware be the main character for once.
  • -s, --set-bits β€” set bits only. Bits that are already 0 stay 0, we are not clearing anything, we are just ✨adding✨.
  • -i <filename> β€” include an extra otp definition from <filename>. Extra definitions? In my config? It's more likely than you think. πŸ¦‹
  • <value> β€” the value to set. The whole point. The moment. πŸ‘‘

πŸ” Row/Field Selection

  • -z, --fuzzy β€” allow fuzzy name searches in the selector instead of exact match. Lowkey a lifesaver when you half-remember the name, highkey a way to select the wrong thing, be careful bestie. 😭
  • <selector> β€” the row/field selector. It can select a whole row:
    • ROW_NAME β€” select a whole row by name.
    • ROW_NUMBER β€” select a whole row by number.
    • PAGE:PAGE_ROW_NUMBER β€” select a whole row by page, and the number within that page.
  • ... or it can select a single field / a subset of a row. (Where ROW_SEL is one of the row selectors above, obviously πŸ’œ)
    • ROW_SEL.FIELD_NAME β€” select a field within a row, by name.
    • ROW_SEL.n-m β€” select a range of bits within a row.
    • ROW_SEL.n β€” select a single bit within a row.
    • .FIELD_NAME β€” select any row's field by name. No row specified, we're just out here vibing, matching a field name across the board.

🫢 TARGET SELECTION 🫢

Target device selection

Not sure which little board is which? Say less. These narrow it down πŸ‘‡

  • --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 is not in BOOTSEL mode but is running compatible code to reset, so the command can actually execute. After the command runs (unless the command itself is a reboot) the device gets rebooted back to application mode. It's giving "brb, gotta reset you for a sec." 🌈
  • -F, --force-no-reboot β€” same forcing deal: a device not in BOOTSEL mode but running compatible code gets reset so the command can execute. After the command (unless the command itself is a reboot) the device is left connected and accessible to picotool, but with no USB drive mounted. So like... present but not presenting. πŸ’€
Heads up bestie: both -f and -F reset your device, and the reboot-back behaviour is the difference between them. Pick with intention. πŸŽ€

and that's the whole page!! no notes, ate, periodt πŸ’…

This one's from the picotool suite, version 2.2.0-a4+dfsg, dated December 2025 β€” so if it ever stops slaying, that's who to blame. Byeeee βœ¨πŸ¦‹πŸŒΈ

πŸ“¦ where this page comes from