Reference

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.

ValueDefinition
0x01 | arbitrationArbitration
0x02 | power-mgmtPower Management
0x03 | lba-rangeLBA Range Type
0x04 | temp-threshTemperature Threshold
0x05 | err-recoveryError Recovery
0x06 | volatile-wcVolatile Write Cache
0x07 | num-queuesNumber of Queues
0x08 | irq-coalesceInterrupt Coalescing
0x09 | irq-configInterrupt Vector Configuration
0x0a | write-atomicWrite Atomicity Normal
0x0b | async-eventAsynchronous Event Configuration
0x0c | auto-pstAutonomous Power State Transition
0x0d | host-mem-bufHost Memory Buffer
0x0e | timestampTimestamp
0x0f | katoKeep Alive Timer
0x10 | hctmHost Controlled Thermal Management
0x11 | nopscNon-Operational Power State Config
0x12 | rrlRead Recovery Level Config
0x13 | plm-configPredictable Latency Mode Config
0x14 | plm-windowPredictable Latency Mode Window
0x15 | lba-sts-intervalLBA Status Information Report Interval
0x16 | host-behaviorHost Behavior Support
0x17 | sanitizeSanitize Config
0x18 | endurance-evt-cfgEndurance Group Event Configuration
0x19 | iocs-profileI/O Command Set Profile
0x1a | spinup-controlSpinup Control
0x1b | power-loss-signalPower Loss Signaling Config
0x1c | perf-characteristicsPerformance Characteristics
0x1d | fdpFlexible Data Placement
0x1e | fdp-eventsFDP Events
0x1f | ns-admin-labelNamespace Admin Label
0x20 | key-valueKey Value Configuration
0x21 | ctrl-data-queueController Data Queue
0x78 | emb-mgmt-ctrl-addrEmbedded Management Controller Address
0x79 | host-mgmt-agent-addrHost Management Agent Address
0x7d | enh-ctrl-metadataEnhanced Controller Metadata
0x7e | ctrl-metadataController Metadata
0x7f | ns-metadataNamespace Metadata
0x80 | sw-progressSoftware Progress Marker
0x81 | host-idHost Identifier
0x82 | resv-maskReservation Notification Mask
0x83 | resv-persistReservation Persistence
0x84 | write-protectNamespace Write Protection Config
0x85 | bp-write-protectBoot Partition Write Protection Config
-s <select>, --sel=<select>

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

SelectNameDescription
0currentCurrent
1defaultDefault
2savedSaved
3supportedSupported 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). 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

History

--changed since Debian 13 (Trixie); --dry-run since Arch Linux 2026-11-01; --no-ioctl-probing since Arch Linux 2026-11-01; --no-retries since Arch Linux 2026-11-01; --output-format since Debian 13 (Trixie); --output-format-version since Arch Linux 2026-11-01; --quiet since Arch Linux 2026-11-01; --set-options since Arch Linux 2026-11-01; --timeout since Debian 13 (Trixie); --uuid-index since Debian 12 (Bookworm); --verbose since Debian 13 (Trixie); -C since Debian 13 (Trixie); -U since Debian 12 (Bookworm); -c since Debian 13 (Trixie); -o since Debian 13 (Trixie); -v since Debian 13 (Trixie).

--human-readable until Debian 13 (Trixie); -H until Debian 13 (Trixie); -t until Debian 13 (Trixie).