NVME-RPMB-PROGRAM-KEY(1)

πŸ“¦ version 3.2, in arch rolling

πŸ’… nvme-rpmb-program-key πŸ’…

hiii bestie, welcome to the nvme-rpmb-program page for section 1 of the manual πŸŽ€ yes the same nvme-rpmb-program family, but this one is all about the key programming situation. buckle up, it's a one-way door πŸšͺ✨


🌸 NAME 🌸

nvme-rpmb-program-key β€” Program the RPMB authentication key πŸ”‘

okay so that's literally the whole vibe: you're writing an auth key into RPMB. that's it. that's the girlboss job πŸ’…


✨ SYNOPSIS ✨

nvme [<global-options>] rpmb program-key <device>
                        [--key=<key> | -k <key>]
                        [--keyfile=<key-file> | -g <key-file>]
                        [--target=<target-id> | -t <target-id>]

like, you need a <device>, and then you get to pick your flavor of key source and target id. very choose-your-own-adventure πŸ¦‹


🫢 DESCRIPTION 🫢

So what it does: it programs the given authentication key to the specified RPMB target. That's the whole thing. Cute and simple, right? πŸŽ€

⚠️ okay bestie, listen to me very carefully: per the RPMB spec, this is a one time action per target, and it cannot be undone. no take-backs, no undo button, no "jk lol" 😭 this is the main-character decision of your RPMB life. not me being dramatic, that's literally what the spec says πŸ’€

The <device> parameter is mandatory, and it has to be an NVMe character device β€” like, example: /dev/nvme0. don't roll up with anything else, it's not gonna slay πŸ™ˆ


πŸ‘‘ OPTIONS πŸ‘‘

  • -t <target>, --target=<target> β€” the RPMB target id 🎯 this should be one of the supported RPMB targets as reported by nvme rpmb info (go check her out first, she tells you what's available). if you pass nothing, the default of 0 is used as the RPMB target. lowkey handy, highkey make sure it's the right one πŸ˜…
  • -k <key>, --key=<key>, -g <key-file>, --keyfile=<key-file> β€” the authentication key to program πŸ” you can hand it over right on the command line with --key or -k, or read it out of a file with --keyfile or -g. either way, the key size must be between 1 and 223 bytes. yes, 1. yes, 223. those exact numbers, no cap 🧚

🌈 GLOBAL OPTIONS 🌈

these are defined up at the top-level nvme command, and they're available to this subcommand too β€” so basically the big-sister options that filter down 🫢

  • --dry-run β€” print the command that would be executed, but don't actually execute it. a little peek, no commitment 😌 iconic for checking yourself before you wreck yourself.
  • --no-ioctl-probing β€” disable probing for 64-bit IOCTL support. just turn the probing off, periodt.
  • --no-retries β€” disable retry logic on transient errors. one shot, one opportunity 🎯
  • -o <fmt>, --output-format=<fmt> β€” set the reporting format to normal, tabular, 'json, or binary. only one output format may be used at a time, so pick your fave and commit πŸ’… (yes 'json is written like that, iykyk, i don't make the rules)
  • --output-format-version=<version> β€” select the output format version. version 1 uses the original field naming, while version 2 (default) provides more consistent and script-friendly field names. any other versions are rejected 🚫 so don't get creative.
  • --quiet β€” suppress informational messages. errors are still reported (you can't hide from the truth bestie 😭), and --quiet cancels any --verbose for the library log level. they literally cancel each other out, it's giving enemies to lovers πŸ’€
  • --set-options=<key=value>[,<key=value>...] β€” set libnvme library options for this invocation. supported keys are force-4k, mi-probe-enabled, test-base-dir and test-sysfs-dir. that's the list, no extras ✨
  • --timeout=<ms> β€” set the timeout for the command in milliseconds. infinite or -1 waits without a time limit (0xffffffff). so you can be patient, or patient patient πŸ•°οΈ
  • -v, --verbose β€” increase the level of detail in the output. may be specified multiple times to further increase verbosity. stack it, layer it, make it loud πŸ“’

Also β€” these options can also be set as machine-wide defaults in nvme-cli.conf(5). but a command-line flag always overrides the file, so your CLI energy wins every time πŸ‘‘


πŸ“ EXAMPLES πŸ“

  • Program SecretKey as authentication key for target 1:
# nvme rpmb program-key /dev/nvme0 --key='SecretKey' --target=1

see how clean that is? device, key, target. slay, ate, no crumbs πŸ”₯


πŸ’œ NVME πŸ’œ

Part of the nvme-user suite πŸ§šβ€β™€οΈ like yeah, she's with her friends.


and that's the whole page bestie!! πŸ’– signing off from the NVME-RPMB-PROGRAM manual page (section 1), brought to you by the nvme-user suite β€” go program that key responsibly, and remember: it cannot be undone πŸ˜­πŸ’… πŸŽ€

πŸ“¦ where this page comes from