PICOTOOL-OTP-SET(1)
π 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 already0stay0, 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_SELis 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 areboot) 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 areboot) 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-fand-Freset 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
- 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