NVME-ID-CTRL-LIST(1)

πŸ“¦ version 3.2, in arch rolling

πŸ’… nvme-id-ctrl-list β€” the NVMe Manual girlie is here

okay bestie, welcome to the nvme-id-ctrl-list era ✨ this is a subcommand of nvme, and it's literally about asking your NVMe device "hey who are your controllers" and getting the receipts back πŸŽ€


🌸 NAME 🌸

nvme-id-ctrl-list β€” send the NVMe Identify List Controllers command, then hand you back the result and the structure. no cap, both πŸ’–


✨ SYNOPSIS ✨

nvme [<global-options>] id ctrl-list <device> [--cntid=<cntid> | -c <cntid>]
                        [--namespace-id=<nsid> | -n <nsid>]

πŸ¦‹ DESCRIPTION πŸ¦‹

So here's the vibe: for the NVMe device you give it, this sends an identify command for the controller list and gives you back both the result and the returned structure. 🫢 It's lowkey doing the lord's work. Depending on the namespace identifier you ask for, it uses either mode 12h or 13h β€” that's the whole "which mode" thing, iykyk.

The <device> parameter is mandatory (not optional, bestie, don't come for me) and it can be either the NVMe character device β€” like /dev/nvme0 β€” or a namespace block device β€” like /dev/nvme0n1. πŸ’«

The starting controller in the list always begins with 0, unless you pass the --cntid option to override it. so like, 0 by default, but you can flex πŸ’…

On success, the controller array gets printed for each index and controller identifier. slay. ✨


πŸŽ€ OPTIONS πŸŽ€

  • -c <cntid>, --cntid=<cntid> β€” retrieve the identify list structure starting with the given controller id. this is your "start here actually" button πŸ¦‹
  • -n <nsid>, --namespace-id=<nsid> β€” if you provide it, it'll request the controllers attached to that specified namespace. if you don't give a namespace, or you set it to 0, then the command requests the controller list for the entire subsystem β€” whether or not those controllers are attached to namespace(s) πŸ‘‘ and listen: the broadcast value 0xffffffff can also be given, as all or -1 πŸ’€ (yes all three, no I'm not joking)

🌈 GLOBAL OPTIONS 🌈

these are defined up at the top-level nvme command, and they're available to this subcommand too. main character energy from the parent command honestly 🫢

  • --dry-run β€” print the command that would be executed, but don't actually execute it. it's giving manifestation ✨
  • --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 at a time, bestie, we do not mix πŸŽ€
  • --output-format-version=<version> β€” select the output format version. version 1 uses the original field naming, while version 2 (the default) provides more consistent and script-friendly field names. other versions are rejected β€” sorry, no custom versions, the door is closed πŸ’…
  • --quiet β€” suppress informational messages. errors are still reported, and --quiet cancels any --verbose for the library log level. they literally cannot coexist, it's a vibe check πŸ¦‹
  • --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 whole list, don't try anything cute πŸ™ˆ
  • --timeout=<ms> β€” set the timeout for the command in milliseconds. infinite or -1 waits without a time limit (0xffffffff). time is a construct etc etc ⭐
  • -v, --verbose β€” increase the level of detail in the output. may be specified multiple times to further increase verbosity. stack it, queen πŸ‘‘
also note: these options can be set as machine-wide defaults in nvme-cli.conf(5). and a command-line flag always overrides the file. always. periodt. πŸ”₯

πŸ’œ EXAMPLES πŸ’œ

No examples yet. 😭 (tragic, I know β€” somebody get on that fr fr)


🧚 NVME 🧚

Part of the nvme-user suite 🌸


that's the whole page bestie, go identify some controllers πŸ’–βœ¨πŸŽ€

sign-off time: this lil gem comes from the NVMe manual, dated 10/30/2026 β€” screenshot it, cite it, live by it πŸ¦‹πŸ’…

πŸ“¦ where this page comes from