NVME-ID-NS-DESCS(1)

πŸ“¦ version 3.2, in arch rolling

πŸ‘‘ NVME-ID-NS-DESCS(1) β€” the nvme manual, bestie edition ✨

Okay so picture this: it's an nvme man page, it lives in the NVMe Manual, and it's literally about sending an Identify for a whole list of Namespace Identification Descriptor structures and handing you back both the result and the structure itself. Iconic behavior honestly πŸŽ€


🌸 NAME 🌸

nvme-id-ns-descs β€” sends the NVMe Identify command for a list of Namespace Identification Descriptor structures, then returns the result and the structure. That's the whole vibe. πŸ’…


✨ SYNOPSIS ✨

nvme [<global-options>] id ns-descs <device>
                        [--namespace-id=<nsid> | -n <nsid>]
                        [--raw-binary | -b]

Yes bestie, that's the shape of it β€” read it out loud like a little chant, it helps 🧚


πŸ’– DESCRIPTION πŸ’–

So for the NVMe device you hand over, this bad boy sends an identify for a list of namespace identification descriptor structures command, and then it gives you back the result plus the returned structure. Lowkey does exactly what it says on the tin πŸ‘‘

The <device> parameter is mandatory β€” no device, no party πŸ™ˆ β€” and it can be either:

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

Now here's the part where you have to actually pay attention: if you give it the character device, then the --namespace-id option is mandatory, otherwise it'll just use the ns-id of the namespace for the block device you opened. And for block devices, the ns-id it uses can be overridden with that same option. Slay, flexible queen πŸ’…

On success (yay ✨), the structure can come back at you in one of several ways depending on your option flags β€” either the structure gets parsed by the program, or the raw buffer gets printed straight to stdout. You choose your fighter πŸ¦‹


πŸŽ€ OPTIONS πŸŽ€

  • -n <nsid>, --namespace-id=<nsid> β€” retrieve the identify namespace identification descriptor structure for the given nsid. This one is required for character devices, or it overrides the block nsid if given. The broadcast value 0xffffffff can also be given as all or -1 ⭐
  • -b, --raw-binary β€” print the raw buffer to stdout. The structure is not parsed by the program. Raw and unfiltered, main character energy πŸ’€

🌈 GLOBAL OPTIONS 🌈

These ones are defined up at the top-level nvme command, and they're available to this subcommand too. So they're not ours, but they're family 🫢

  • --dry-run β€” print the command that would be executed, but don't actually execute it. Manifesting the command without committing 😌
  • --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 may be used at a time, so pick your fave and commit πŸ’–
  • --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 β€” don't try it 🚫
  • --quiet β€” suppress informational messages. Errors are still reported, and --quiet cancels any --verbose for the library log level. Shhh, we're being mysterious 🀫
  • --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). No clock-watching allowed ⏳
  • -v, --verbose β€” increase the level of detail in the output. May be specified multiple times to further increase verbosity. Say it with me: more -v, more lore πŸ“–
Heads up bestie: these options can also be set as machine-wide defaults in nvme-cli.conf(5). A command-line flag always overrides the file. Always. No cap. πŸ”₯

πŸ¦‹ EXAMPLES πŸ¦‹

  • If you're using the character device or overriding namespace #2:
# nvme id ns-descs /dev/nvme0 -n 1
# nvme id ns-descs /dev/nvme0n1 -n 2
# nvme id ns-descs /dev/nvme0 --namespace-id=1
  • Have the program return the raw structure in binary:
# nvme id ns-descs /dev/nvme0n1 --raw-binary > ns_descs.raw
# nvme id ns-descs /dev/nvme0n1 -b > ns_descs.raw
⚠️ And honestly? It is probably a bad idea to not redirect stdout when using this mode. Like, genuinely. Don't do that to yourself 😭

πŸ’œ NVME πŸ’œ

Part of the nvme-user suite. Family reunion vibes 🫢


And that's the whole page, bestie β€” NVMe, dated 10/30/2026, NVME-ID-NS-DESCS(1), served with love ✨ Go forth and identify those namespace descriptors πŸ’…πŸŽ€

πŸ“¦ where this page comes from