NVME-ID-NVM-CTRL(1)

πŸ“¦ version 3.2, in arch rolling

πŸ’… NVME-ID-NVM-CTRL(1) β€” like, the nvme-id-nvm-ctrl page, bestie

okay so real talk, this is a page from the NVMe Manual and it's all about one specific nvme-cli subcommand. buckle up πŸŽ€


✨ NAME ✨

nvme-id-nvm-ctrl β€” literally sends the NVMe Identify Controller command, but the NVM command set version, and hands you back the structure it gets. no cap. πŸ¦‹


🌸 SYNOPSIS 🌸

nvme [<global-options>] id nvm-ctrl <device>

that's the whole vibe check. nvme, maybe some global options, then id nvm-ctrl, then the device. periodt. πŸ‘‘


πŸ’– DESCRIPTION πŸ’–

So for the NVMe device you point at, this sends the NVM command set's identify controller command and gives you back the result and the returned structure. it's giving "ask the drive who it is, but the NVM-command-set edition" ✨

The <device> parameter is mandatory β€” like, you cannot skip it, bestie, it's not optional β€” and it can be either:

  • the NVMe character device (ex: /dev/nvme0), or
  • a namespace block device (ex: /dev/nvme0n1)

On success, the data structure the device returns gets decoded and displayed in one of several ways. cute, right? 😌


🧚 OPTIONS 🧚

🌈 GLOBAL OPTIONS 🌈

these ones are defined up at the top-level nvme command, but they're available to this subcommand too. main character options, honestly. πŸ’…

  • --dry-run β€” prints the command that would be executed, but does not actually execute it. all vibes, zero commitment πŸ™ˆ
  • --no-ioctl-probing β€” disables probing for 64-bit IOCTL support.
  • --no-retries β€” turns off the retry logic on transient errors. one shot, no do-overs πŸ’€
  • -o <fmt>, --output-format=<fmt> β€” sets the reporting format to normal, tabular, json, or binary. only one output format at a time, so pick your fighter. ⭐
  • --output-format-version=<version> β€” selects 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 version? rejected. sorry not sorry 🫢
  • --quiet β€” suppresses informational messages. errors are still reported, and heads up: --quiet cancels any --verbose for the library log level. they do not coexist, bestie 😭
  • --set-options=<key=value>[,<key=value>...] β€” sets libnvme library options for this invocation. the 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 with no time limit (0xffffffff). patience is a virtue etc etc 🌸
  • -v, --verbose β€” increases the level of detail in the output. you can specify it multiple times to get even more verbose. go off πŸ”₯
ngl, these options can also be set as machine-wide defaults in nvme-cli.conf(5). and a command-line flag always overrides the file β€” CLI stays winning πŸ‘‘

πŸŽ€ EXAMPLES πŸŽ€

  • Has the program interpret the returned buffer and display the known fields in a human readable format:
# nvme id nvm-ctrl /dev/nvme0
  • Show the output in json format:
# nvme id nvm-ctrl /dev/nvme0 -o json

πŸ’œ NVME πŸ’œ

Part of nvme-cli. that's the family, that's the lineage 🧬


and that's the whole page, bestie! πŸ’–βœ¨ this iconic little number comes from the NVMe Manual (source: nvme-cli), dated 10/30/2026 β€” go forth and identify those controllers, you absolute legend πŸ«ΆπŸŽ€

πŸ“¦ where this page comes from