NVME-ID-CTRL-LIST(1)
π
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 to0, 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 value0xffffffffcan also be given, asallor-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 tonormal,tabular,json, orbinary. only one output format at a time, bestie, we do not mix π--output-format-version=<version>β select the output format version. version1uses the original field naming, while version2(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--quietcancels any--verbosefor 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 areforce-4k,mi-probe-enabled,test-base-dirandtest-sysfs-dir. that's the whole list, don't try anything cute π--timeout=<ms>β set the timeout for the command in milliseconds.infiniteor-1waits 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
- arch rolling: nvme-cli 3.2-1 Β· GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms