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

nvme get-feature <device> [--namespace-id=<nsid> | -n <nsid>]

[--feature-id=<fid> | -f <fid>] [--cdw11=<cdw11>]
[--uuid-index=<uuid-index> | -U <uuid_index>]
[--data-len=<data-len> | -l <data-len>]
[--sel=<select> | -s <select>]
[--raw-binary | -b]
[--human-readable | -H]

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.

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

Retrieve the feature for the given nsid. This is optional and most features do not use this value.

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

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

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

Select (SEL): This field specifies which value of the attributes to return in the provided data:
Select Description
0 Current
1 Default
2 Saved
3 Supported capabilities
4–7 Reserved

-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


The value for command dword 11, if applicable.

-b, --raw-binary

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

-H, --human-readable

This option will parse and format many of the bit fields into human-readable formats.

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

Part of the nvme-user suite

08/23/2022 NVMe