NVME-SET-REG(1)

πŸ“¦ version 3.2, in arch rolling

πŸ’… NVME-SET-REG(1) β€” nvme-set-reg, bestie edition

okay so real talk: this is a page from the NVMe Manual (yes, that NVMe), and it's about the nvme-set-reg command. It writes and shows the defined NVMe controller register. Let's get into it πŸŽ€


✨ NAME ✨

nvme-set-reg β€” writes and shows the defined NVMe controller register πŸ’–


πŸ¦‹ SYNOPSIS πŸ¦‹

nvme [<global-options>] set-reg <device>
                        [--register=<name> | -r <name>] [--offset=<offset> | -O <offset>]
                        [--value=<val> | -V <val>] [--mmio32 | -m]

🌸 DESCRIPTION 🌸

So what this does: it writes a controller register. If it's an NVMe over PCIe controller, it writes into its PCI memory space. If it's an NVMe over Fabrics controller β€” which has no PCI memory space, poor thing β€” it sets the property with a Property Set command instead. No cap, same energy, different plumbing. ✨

The <device> parameter is mandatory β€” like, non-negotiable, main character requirement β€” and it must be the nvme admin character device (example: /dev/nvme0). πŸ’…


πŸŽ€ OPTIONS πŸŽ€

  • -r <name>, --register=<name> β€” the register to write, by name. Pick one of the registers the host is allowed to write: intms, intmc, cc, csts, nssr, aqa, asq, acq, bprsel, bpmbl, cmbmsc, nssd, pmrctl, pmrmscl, pmrmscu.
  • -O <offset>, --offset=<offset> β€” the register to write, but by offset or by name, e.g. 0x14 or cc. Your choice, bestie 🫢
  • -V <val>, --value=<val> β€” the value you're writing. Heads up: a 32 bit register will flat-out refuse a larger value. It's giving boundaries. 😀
  • -m, --mmio32 β€” write a 64 bit register as two 32 bit accesses. Splitting it, iconic behavior.
⚠️ Also: the old-school options like --cc=<val>, --aqa=<val> and so on from earlier versions β€” one for each register the host may write β€” still work, but they're deprecated. Use --register and --value instead, fr fr. Don't be that girl using deprecated flags πŸ™ˆ

🌈 GLOBAL OPTIONS 🌈

These are defined at the top-level nvme command and they're available to this subcommand too. Global besties, if you will. πŸ’œ

  • --dry-run β€” print the command that would be executed, but don't actually execute it. Manifesting the command without committing to it ✨
  • --no-ioctl-probing β€” disable probing for 64-bit IOCTL support.
  • --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. Pick a lane, queen πŸ‘‘
  • --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 β€” straight up not invited to the party 🚫
  • --quiet β€” suppress informational messages. Errors still get reported, and --quiet cancels any --verbose for the library log level. Shhh 🀫
  • --set-options=<key=value>[,<key=value>...] β€” set libnvme library options for this one invocation. Supported keys are force-4k, mi-probe-enabled, test-base-dir and test-sysfs-dir.
  • --timeout=<ms> β€” set the timeout for the command in milliseconds. infinite or -1 waits without a time limit (0xffffffff). Patience is a virtue, but like, optionally.
  • -v, --verbose β€” increase the level of detail in the output. You can pass it multiple times to keep cranking up the verbosity. Spill the tea, more of it β˜•

Also! These options can be set as machine-wide defaults in nvme-cli.conf(5). And a command-line flag always overrides the file β€” CLI stays winning, no cap. πŸ”₯


⭐ EXAMPLES ⭐

  • Write 0x460000 to the Controller Configuration register:
# nvme set-reg /dev/nvme0 --register=cc --value=0x460000

slay. that's the whole thing. πŸ’…βœ¨


🧚 NVME 🧚

Part of the nvme-user suite. 🫢


and that's the page!! this manual page is from the NVMe manual, dated 10/30/2026, and it's part of the nvme-user suite β€” go write some registers responsibly, bestie πŸ“πŸ’œπŸ¦‹

πŸ“¦ where this page comes from