'\" t .\" Title: nvme-get-feature .\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author] .\" Generator: DocBook XSL Stylesheets vsnapshot .\" Date: 11/04/2025 .\" Manual: NVMe Manual .\" Source: NVMe .\" Language: English .\" .TH "NVME\-GET\-FEATURE" "1" "11/04/2025" "NVMe" "NVMe Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" nvme-get-feature \- Gets an NVMe feature, returns applicable results .SH "SYNOPSIS" .sp .nf \fInvme get\-feature\fR [\-\-namespace\-id= | \-n ] [\-\-feature\-id= | \-f ] [\-\-uuid\-index= | \-U ] [\-\-data\-len= | \-l ] [\-\-sel=] [\-\-raw\-binary | \-b] [\-\-cdw11= | \-c ] [\-\-human\-readable | \-H] [\-\-changed | \-C] [\-\-output\-format= | \-o ] [\-\-verbose | \-v] [\-\-timeout= | \-t ] .fi .SH "DESCRIPTION" .sp Submits an NVMe Get Feature admin command and returns the applicable results\&. This may be the feature\(cqs value, or may also include a feature structure if the feature requires it (ex: LBA Range Type)\&. .sp The parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&. .sp On success, the returned feature\(cqs 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\&. .SH "OPTIONS" .PP \-n , \-\-namespace\-id= .RS 4 Retrieve the feature for the given nsid\&. This is optional and most features do not use this value\&. .RE .PP \-f , \-\-feature\-id= .RS 4 The feature id to send with the command\&. Value provided should be in hex\&. .TS allbox tab(:); lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt. T{ Value T}:T{ Definition T} T{ 0x01 | \fIarbitration\fR T}:T{ Arbitration T} T{ 0x02 | \fIpower\-mgmt\fR T}:T{ Power Management T} T{ 0x03 | \fIlba\-range\fR T}:T{ LBA Range Type T} T{ 0x04 | \fItemp\-thresh\fR T}:T{ Temperature Threshold T} T{ 0x05 | \fIerr\-recovery\fR T}:T{ Error Recovery T} T{ 0x06 | \fIvolatile\-wc\fR T}:T{ Volatile Write Cache T} T{ 0x07 | \fInum\-queues\fR T}:T{ Number of Queues T} T{ 0x08 | \fIirq\-coalesce\fR T}:T{ Interrupt Coalescing T} T{ 0x09 | \fIirq\-config\fR T}:T{ Interrupt Vector Configuration T} T{ 0x0a | \fIwrite\-atomic\fR T}:T{ Write Atomicity Normal T} T{ 0x0b | \fIasync\-event\fR T}:T{ Asynchronous Event Configuration T} T{ 0x0c | \fIauto\-pst\fR T}:T{ Autonomous Power State Transition T} T{ 0x0d | \fIhost\-mem\-buf\fR T}:T{ Host Memory Buffer T} T{ 0x0e | \fItimestamp\fR T}:T{ Timestamp T} T{ 0x0f | \fIkato\fR T}:T{ Keep Alive Timer T} T{ 0x10 | \fIhctm\fR T}:T{ Host Controlled Thermal Management T} T{ 0x11 | \fInopsc\fR T}:T{ Non\-Operational Power State Config T} T{ 0x12 | \fIrrl\fR T}:T{ Read Recovery Level Config T} T{ 0x13 | \fIplm\-config\fR T}:T{ Predictable Latency Mode Config T} T{ 0x14 | \fIplm\-window\fR T}:T{ Predictable Latency Mode Window T} T{ 0x15 | \fIlba\-sts\-interval\fR T}:T{ LBA Status Information Report Interval T} T{ 0x16 | \fIhost\-behavior\fR T}:T{ Host Behavior Support T} T{ 0x17 | \fIsanitize\fR T}:T{ Sanitize Config T} T{ 0x18 | \fIendurance\-evt\-cfg\fR T}:T{ Endurance Group Event Configuration T} T{ 0x19 | \fIiocs\-profile\fR T}:T{ I/O Command Set Profile T} T{ 0x1a | \fIspinup\-control\fR T}:T{ Spinup Control T} T{ 0x1b | \fIpower\-loss\-signal\fR T}:T{ Power Loss Signaling Config T} T{ 0x1c | \fIperf\-characteristics\fR T}:T{ Performance Characteristics T} T{ 0x1d | \fIfdp\fR T}:T{ Flexible Data Placement T} T{ 0x1e | \fIfdp\-events\fR T}:T{ FDP Events T} T{ 0x1f | \fIns\-admin\-label\fR T}:T{ Namespace Admin Label T} T{ 0x20 | \fIkey\-value\fR T}:T{ Key Value Configuration T} T{ 0x21 | \fIctrl\-data\-queue\fR T}:T{ Controller Data Queue T} T{ 0x78 | \fIemb\-mgmt\-ctrl\-addr\fR T}:T{ Embedded Management Controller Address T} T{ 0x79 | \fIhost\-mgmt\-agent\-addr\fR T}:T{ Host Management Agent Address T} T{ 0x7d | \fIenh\-ctrl\-metadata\fR T}:T{ Enhanced Controller Metadata T} T{ 0x7e | \fIctrl\-metadata\fR T}:T{ Controller Metadata T} T{ 0x7f | \fIns\-metadata\fR T}:T{ Namespace Metadata T} T{ 0x80 | \fIsw\-progress\fR T}:T{ Software Progress Marker T} T{ 0x81 | \fIhost\-id\fR T}:T{ Host Identifier T} T{ 0x82 | \fIresv\-mask\fR T}:T{ Reservation Notification Mask T} T{ 0x83 | \fIresv\-persist\fR T}:T{ Reservation Persistence T} T{ 0x84 | \fIwrite\-protect\fR T}:T{ Namespace Write Protection Config T} T{ 0x85 | \fIbp\-write\-protect\fR T}:T{ Boot Partition Write Protection Config T} .TE .sp 1 .RE .PP \-s .RS 4 Select (SEL): This field specifies which value of the attributes to return in the provided data: .TS allbox tab(:); lt lt lt lt lt lt lt lt lt lt lt lt. T{ Select T}:T{ Description T} T{ 0 T}:T{ Current T} T{ 1 T}:T{ Default T} T{ 2 T}:T{ Saved T} T{ 3 T}:T{ Supported capabilities T} T{ 4\-7 T}:T{ Reserved T} .TE .sp 1 .RE .PP \-U , \-\-uuid\-index= .RS 4 UUID Index of the feature .RE .PP \-l , \-\-data\-len= .RS 4 The data length for the buffer returned for this feature\&. Most known features do not use this value\&. The exception is LBA Range Type .RE .PP \-c , \-\-cdw11= .RS 4 The value for command dword 11, if applicable\&. .RE .PP \-b, \-\-raw\-binary .RS 4 Print the raw feature buffer to stdout if the feature returns a structure\&. .RE .PP \-H, \-\-human\-readable .RS 4 This option will parse and format many of the bit fields into human\-readable formats\&. .RE .PP \-C, \-\-changed .RS 4 This option will show feature changed\&. .RE .PP \-o , \-\-output\-format= .RS 4 Set the reporting format to \fInormal\fR, \fIjson\fR or \fIbinary\fR\&. Only one output format can be used at a time\&. .RE .PP \-v, \-\-verbose .RS 4 Increase the information detail in the output\&. .RE .PP \-t , \-\-timeout= .RS 4 Override default timeout value\&. In milliseconds\&. .RE .SH "EXAMPLES" .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Retrieves the feature for Number of Queues, or feature id 7: .sp .if n \{\ .RS 4 .\} .nf # nvme get\-feature /dev/nvme0 \-f 7 .fi .if n \{\ .RE .\} .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} 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: .sp .if n \{\ .RS 4 .\} .nf # nvme get\-feature /dev/nvme0 \-f 3 .fi .if n \{\ .RE .\} .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.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: .sp .if n \{\ .RS 4 .\} .nf # nvme get\-feature /dev/nvme0 \-f 0xc0 \-l 512 .fi .if n \{\ .RE .\} .sp Get feature with UUID index .RE .sp .if n \{\ .RS 4 .\} .nf # nvme get\-feature /dev/nvme0 \-f 0xc0 \-l 512 \-U 0x1 .fi .if n \{\ .RE .\} .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} 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: .sp .if n \{\ .RS 4 .\} .nf # nvme get\-feature /dev/nvme0 \-f 3 \-\-raw\-binary > lba_range\&.raw .fi .if n \{\ .RE .\} .sp It is probably a bad idea to not redirect stdout when using this mode\&. .RE .SH "NVME" .sp Part of the nvme\-user suite