NVME-WDC-ID-CTRL(1)

πŸ’… NAME πŸ’…

ok so this is nvme-wdc-id-ctrl from the NVMe Manual (yes, that's the whole manual-name thing, we're moving on πŸ’–) β€” it sends an NVMe Identify Controller command, then hands you back the result and the returned structure. iconic behavior honestly.


✨ SYNOPSIS ✨

nvme [<global-options>] wdc id-ctrl <device>
                        [--vendor-specific | -v]
                        [--raw-binary | -b]
                        [--human-readable | -H]

πŸ¦‹ DESCRIPTION πŸ¦‹

So for the NVMe device you give it, this thing yeets out an identify controller command and gives you back the result plus the returned structure. slay.

The <device> parameter is mandatory, no cap β€” and it can be either the NVMe character device (like /dev/nvme0) or a namespace block device (like /dev/nvme0n1). either one, pick your fighter 🫢

⚠️ omg important: this will only work on WDC devices that support this feature. Results for any other device are literally undefined β€” as in, don't come crying to me, the manpage said undefined 😭

On success, the structure comes back in one of several ways depending on your option flags β€” either the program parses it for you, or the raw buffer gets printed straight to stdout. your call bestie.

And if you do have the program decode the output for readability, this version will decode the WDC vendor unique portions of the structure too. extra. πŸ’…


πŸŽ€ OPTIONS πŸŽ€

  • -b, --raw-binary β€” print the raw buffer to stdout, structure not parsed by the program. and heads up: this overrides the vendor specific and human readable options. it's giving main character energy, it wins. πŸ‘‘
  • -v, --vendor-specific β€” on top of parsing the known fields, this dumps the vendor specific region of the structure in hex with ascii interpretation. hex + ascii, the classic duo πŸ’œ
  • -H, --human-readable β€” displays values in a human-readable format where possible. deprecated, bestie β€” use --verbose instead πŸ™ˆ

🌈 GLOBAL OPTIONS 🌈

these are defined up at the top-level nvme command and are available to this subcommand too. group-chat-wide settings fr fr:

  • --dry-run β€” prints the command that would be executed, but does not actually execute it. window shopping, basically πŸ›οΈ
  • --no-ioctl-probing β€” disables probing for 64-bit IOCTL support.
  • --no-retries β€” disables retry logic on transient errors.
  • -o <fmt>, --output-format=<fmt> β€” sets the reporting format to normal, tabular, 'json, or binary. only one output format at a time, don't be greedy βœ‹
  • --output-format-version=<version> β€” picks the output format version. version 1 uses the original field naming, while version 2 (the default) gives you more consistent and script-friendly field names. any other versions are rejected, periodt. πŸ’€
  • --quiet β€” suppresses informational messages. errors are still reported, and --quiet cancels any --verbose for the library log level. quiet mode said "not today" to your verbosity 🌸
  • --set-options=<key=value>[,<key=value>...] β€” sets libnvme library options for this invocation. supported keys are force-4k, mi-probe-enabled, test-base-dir and test-sysfs-dir.
  • --timeout=<ms> β€” sets the timeout for the command in milliseconds. infinite or -1 waits without a time limit (0xffffffff). no clock, no stress ✨
  • -v, --verbose β€” increases the level of detail in the output. may be specified multiple times to further increase verbosity. (and yes bestie, -v shows up twice on this page β€” this one's the top-level global flag, the other one up there is the subcommand's --vendor-specific. two different vibes, same letter 🫢)
πŸ“Œ these options can also be set as machine-wide defaults in nvme-cli.conf(5). and a command-line flag always overrides the file. always. no exceptions. πŸ‘‘

πŸ“ EXAMPLES πŸ“

  • has the program interpret the returned buffer and display the known fields in a human readable format:
# nvme wdc id-ctrl /dev/nvme0

πŸ’œ NVME πŸ’œ

part of the nvme-user suite. one of us, one of us 🧚


ok that's the whole page, you ate that πŸ’…βœ¨ β€” this little number is from the NVMe crew, dated 10/30/2026, and it's NVME-WDC-ID-CTRL(1) all day. go forth and identify some controllers bestie πŸ’–

πŸ“¦ where this page comes from