---
name: "nvme-get-feature"
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-get-feature"
---

# nvme-get-feature(1)

Gets an NVMe feature, returns applicable results

## NAME

nvme-get-feature - Gets an NVMe feature, returns applicable results

## SYNOPSIS

```
nvme [<global-options>] get-feature <device>
                        [--namespace-id=<nsid> | -n <nsid>]
                        [--feature-id=<fid> | -f <fid>]
                        [--uuid-index=<uuid-index> | -U <uuid_index>]
                        [--data-len=<data-len> | -l <data-len>]
                        [--sel=<select> | -s <select>] [--raw-binary | -b]
                        [--cdw11=<cdw11> | -c <cdw11>] [--changed | -C]
```

## DESCRIPTION

Submits an NVMe Get Feature admin command and returns the applicable results. This may be the feature’s value, or may also include a feature structure if the feature requires it (ex: LBA Range Type).

The \<device\> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the returned feature’s structure (if applicable) may be returned in one of several ways depending on the option flags; the structure may parsed by the program and printed in a readable format if it is a known structure, displayed in hex, or the raw buffer may be printed to stdout for another program to parse.

## OPTIONS

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

  Retrieve the feature for the given nsid. This is optional and most features do not use this value. The broadcast value 0xffffffff can also be given as *all* or *-1*.

- \-f \<fid\>, --feature-id=\<fid\>

  The feature id to send with the command. Value provided should be in hex.

  | | |
  | --- | --- |
  | Value | Definition |
  | 0x01 \| *arbitration* | Arbitration |
  | 0x02 \| *power-mgmt* | Power Management |
  | 0x03 \| *lba-range* | LBA Range Type |
  | 0x04 \| *temp-thresh* | Temperature Threshold |
  | 0x05 \| *err-recovery* | Error Recovery |
  | 0x06 \| *volatile-wc* | Volatile Write Cache |
  | 0x07 \| *num-queues* | Number of Queues |
  | 0x08 \| *irq-coalesce* | Interrupt Coalescing |
  | 0x09 \| *irq-config* | Interrupt Vector Configuration |
  | 0x0a \| *write-atomic* | Write Atomicity Normal |
  | 0x0b \| *async-event* | Asynchronous Event Configuration |
  | 0x0c \| *auto-pst* | Autonomous Power State Transition |
  | 0x0d \| *host-mem-buf* | Host Memory Buffer |
  | 0x0e \| *timestamp* | Timestamp |
  | 0x0f \| *kato* | Keep Alive Timer |
  | 0x10 \| *hctm* | Host Controlled Thermal Management |
  | 0x11 \| *nopsc* | Non-Operational Power State Config |
  | 0x12 \| *rrl* | Read Recovery Level Config |
  | 0x13 \| *plm-config* | Predictable Latency Mode Config |
  | 0x14 \| *plm-window* | Predictable Latency Mode Window |
  | 0x15 \| *lba-sts-interval* | LBA Status Information Report Interval |
  | 0x16 \| *host-behavior* | Host Behavior Support |
  | 0x17 \| *sanitize* | Sanitize Config |
  | 0x18 \| *endurance-evt-cfg* | Endurance Group Event Configuration |
  | 0x19 \| *iocs-profile* | I/O Command Set Profile |
  | 0x1a \| *spinup-control* | Spinup Control |
  | 0x1b \| *power-loss-signal* | Power Loss Signaling Config |
  | 0x1c \| *perf-characteristics* | Performance Characteristics |
  | 0x1d \| *fdp* | Flexible Data Placement |
  | 0x1e \| *fdp-events* | FDP Events |
  | 0x1f \| *ns-admin-label* | Namespace Admin Label |
  | 0x20 \| *key-value* | Key Value Configuration |
  | 0x21 \| *ctrl-data-queue* | Controller Data Queue |
  | 0x78 \| *emb-mgmt-ctrl-addr* | Embedded Management Controller Address |
  | 0x79 \| *host-mgmt-agent-addr* | Host Management Agent Address |
  | 0x7d \| *enh-ctrl-metadata* | Enhanced Controller Metadata |
  | 0x7e \| *ctrl-metadata* | Controller Metadata |
  | 0x7f \| *ns-metadata* | Namespace Metadata |
  | 0x80 \| *sw-progress* | Software Progress Marker |
  | 0x81 \| *host-id* | Host Identifier |
  | 0x82 \| *resv-mask* | Reservation Notification Mask |
  | 0x83 \| *resv-persist* | Reservation Persistence |
  | 0x84 \| *write-protect* | Namespace Write Protection Config |
  | 0x85 \| *bp-write-protect* | Boot Partition Write Protection Config |

- \-s \<select\>, --sel=\<select\>

  Select (SEL): This field specifies which value of the attributes to return in the provided data:

  | | | |
  | --- | --- | --- |
  | Select | Name | Description |
  | 0 | current | Current |
  | 1 | default | Default |
  | 2 | saved | Saved |
  | 3 | supported | Supported capabilities |

- \-U \<uuid-index\>, --uuid-index=\<uuid-index\>

  UUID Index of the feature

- \-l \<data-len\>, --data-len=\<data-len\>

  The data length for the buffer returned for this feature. Most known features do not use this value. The exception is LBA Range Type

- \-c \<cdw11\>, --cdw11=\<cdw11\>

  The value for command dword 11, if applicable.

- \-b, --raw-binary

  Print the raw feature buffer to stdout if the feature returns a structure.

- \-C, --changed

  This option will show feature changed.

## 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

• Retrieves the feature for Number of Queues, or feature id 7:

```
# nvme get-feature /dev/nvme0 -f 7
```

• The following retrieves the feature for the LBA Range Type, which implicitly requires a buffer and will be printed to the screen in human readable format:

```
# nvme get-feature /dev/nvme0 -f 3
```

• Retrieves the feature for the some vendor specific feature and specifically requesting a buffer be allocate for this feature, which will be displayed to the user in as a hex dump:

```
# nvme get-feature /dev/nvme0 -f 0xc0 -l 512
```

Get feature with UUID index

```
# nvme get-feature /dev/nvme0 -f 0xc0 -l 512 -U 0x1
```

• The following retrieves the feature for the LBA Range Type, which implicitly requires a buffer and will be saved to a file in its raw format:

```
# nvme get-feature /dev/nvme0 -f 3 --raw-binary > lba_range.raw
```

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

## NVME

Part of the nvme-user suite
