NVME-GET-REG(1)

πŸ“¦ version 3.2, in arch rolling

πŸ’… NVME-GET-REG πŸ’…

okay so this is a page from the nvme manual and honestly? it's a little baddie. it's called nvme-get-reg and it's here to read controller registers and show you what's inside. let's get into it 🫢


✨ NAME ✨

nvme-get-reg β€” read and show the defined NVMe controller register πŸ’–


🌸 SYNOPSIS 🌸

nvme [<global-options>] get-reg <device>
                        [--register=<name>[,<name>...] | -r <name>[,<name>...]]
                        [--offset=<offset> | -O <offset>]

πŸ¦‹ DESCRIPTION πŸ¦‹

so basically it reads controller registers and shows them to you πŸ‘‘ and it does this two different ways depending on the vibe of your controller:

  • for an NVMe over PCIe controller, it reads them from its PCI memory space
  • for an NVMe over Fabrics controller, it reads its properties with Property Get commands

the <device> parameter is mandatory β€” no cap, you cannot skip it β€” and it has to be the nvme admin character device (example: /dev/nvme0). πŸ’…

on a fabrics controller: if you ask for a register that isn't a property of a fabrics controller, or a property the controller doesn't implement, the command fails β€” but only after the other registers are shown. so you get the tea first, then the error. 😭

πŸŽ€ OPTIONS πŸŽ€

  • -r <name>[,<name>...], --register=<name>[,<name>...] β€” the registers to show, by name, in register order. pick from: cap, vs, intms, intmc, cc, csts, nssr, aqa, asq, acq, cmbloc, cmbsz, bpinfo, bprsel, bpmbl, cmbmsc, cmbsts, cmbebs, cmbswtp, nssd, crto, pmrcap, pmrctl, pmrsts, pmrebs, pmrswtp, pmrmscl, pmrmscu. and yes bestie, the option may be given more than once 🧚
  • -O <offset>, --offset=<offset> β€” a register to show, by offset or name, e.g. 0x14 or cc. the offset has to be the one of a register, ok? it can't just be any random number you feel like typing πŸ™ˆ
⚠️ ok so the options --cap, --vs, --cc and so on from earlier versions β€” one for each register β€” still work, but they're deprecated: use --register. like they still slay but they're kinda living in the past πŸ’€

🌈 GLOBAL OPTIONS 🌈

these are defined at the top-level nvme command and they're available to this subcommand:

  • --dry-run β€” print the command that would be executed, but do not actually execute it. all the planning, none of the commitment πŸ’…
  • --no-ioctl-probing β€” disable probing for 64-bit IOCTL support.
  • --no-retries β€” disable retry logic on transient errors.
  • -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 don't get greedy 😌
  • --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. other versions are rejected β€” no negotiating 🚫
  • --quiet β€” suppress informational messages. errors are still reported, and --quiet cancels any --verbose for the library log level. it's giving "i'm not reading all that" ✨
  • --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.
  • --timeout=<ms> β€” set the timeout for the command in milliseconds. infinite or -1 waits without a time limit (0xffffffff). literally forever. bestie will wait 🫢
  • -v, --verbose β€” increase the level of detail in the output. may be specified multiple times to further increase verbosity. stack 'em πŸ‘‘

these options can also be set as machine-wide defaults in nvme-cli.conf(5). a command-line flag always overrides the file β€” CLI stays the main character πŸ‘‘

with -v, the fields of each register are shown decoded. the JSON output has the value of each register under its name, and with -v you get an object of the value and its decoded fields:

{
  "cc": 4587521
}

⭐ EXAMPLES ⭐

  • show the Controller Configuration register
# nvme get-reg /dev/nvme0 --register=cc
register : 0x14 (Controller Configuration), value: 0x460001
  • show the Controller Capabilities and Status registers, decoded
# nvme get-reg /dev/nvme0 -r cap,csts -v

πŸ’œ NVME πŸ’œ

part of the nvme-user suite. iykyk πŸ’…


and that's the whole page bestie, no notes πŸŽ€ this was the NVMe manual, NVME-GET-REG(1), dated 10/30/2026 β€” go read your registers, they're literally iconic βœ¨πŸ‘‘πŸ”₯

πŸ“¦ where this page comes from