---
name: "nvme-id-ns-descs"
section: "1"
platform: "linux"
package: "nvme-cli"
version: "3.2-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/nvme-id-ns-descs"
---

# nvme-id-ns-descs(1)

Send NVMe Identify for a list of Namespace Identification Descriptor structure, return result and structure

## NAME

nvme-id-ns-descs - Send NVMe Identify for a list of Namespace Identification Descriptor structure, return result and structure

## SYNOPSIS

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

## DESCRIPTION

For the NVMe device given, sends an identify for a list of namespace identification descriptor structures command and provides the result and returned structure.

The \<device\> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1). If the character device is given, the '--namespace-id' option is mandatory, otherwise it will use the ns-id of the namespace for the block device you opened. For block devices, the ns-id used can be overridden with the same option.

On success, the structure may be returned in one of several ways depending on the option flags; the structure may be parsed by the program or the raw buffer may be printed to stdout.

## OPTIONS

- \-n \<nsid\>, --namespace-id=\<nsid\>

  Retrieve the identify namespace identification descriptor structure for the given nsid. This is required for the character devices, or 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. Structure is not parsed by program.

## GLOBAL OPTIONS

The following options are defined at the top-level nvme command and are available to this subcommand:

- \--dry-run

  Print the command that would be executed, but do not actually execute it.

- \--no-ioctl-probing

  Disable probing for 64-bit IOCTL support.

- \--no-retries

  Disable retry logic on transient errors.

- \-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.

- \--output-format-version=\<version\>

  Select the output format version. Version *1* uses the original field naming, while version *2* (default) provides more consistent and script-friendly field names. Other versions are rejected.

- \--quiet

  Suppress informational messages. Errors are still reported, and --quiet cancels any --verbose for the library log level.

- \--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).

- \-v, --verbose

  Increase the level of detail in the output. May be specified multiple times to further increase verbosity.

These options can also be set as machine-wide defaults in [nvme-cli.conf(5)](/nvme-cli.conf/5.md). A command-line flag always overrides the file.

## EXAMPLES

• If 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
```

It is probably a bad idea to not redirect stdout when using this mode.

## NVME

Part of the nvme-user suite
