NVME-GET-FEATURE(1)
π NAME π
nvme-get-feature(1) β the NVMe Manual page that literally gets an NVMe feature and returns the applicable results. Bestie, itβs giving βask the drive for a feature and see what it saysβ energy. π
β¨ 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 π¦
Okay so this command submits an NVMe Get Feature admin command and returns the applicable results. That may be the featureβs value, or it may also include a feature structure if the feature requires it β ex: LBA Range Type. Slay, but make it storage. π
The <device> parameter is mandatory, no cap. It may be either the NVMe character device β ex: /dev/nvme0 β or a namespace block device β ex: /dev/nvme0n1. Both are valid vibes. β¨
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 be 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. So itβs giving flexible output main character energy. π
πΈ OPTIONS πΈ
-n <nsid>,--namespace-id=<nsid>β retrieve the feature for the given nsid. This is optional, and most features do not use this value, lowkey. The broadcast value0xffffffffcan also be given asallor-1, iykyk. π«Ά-f <fid>,--feature-id=<fid>β this is the feature ID you're sending along with the command β¨ and bestie, the value you give it should be in hex. That's not a suggestion, that's the vibe. The feature you want lives on the left as a hex number, and the handy lil' name next to it is right there for you too β take your pick, iykyk π
Here's the whole roster, no skipping, no cap:
0x01|arbitrationβ Arbitration0x02|power-mgmtβ Power Management0x03|lba-rangeβ LBA Range Type0x04|temp-threshβ Temperature Threshold0x05|err-recoveryβ Error Recovery0x06|volatile-wcβ Volatile Write Cache0x07|num-queuesβ Number of Queues0x08|irq-coalesceβ Interrupt Coalescing0x09|irq-configβ Interrupt Vector Configuration0x0a|write-atomicβ Write Atomicity Normal0x0b|async-eventβ Asynchronous Event Configuration0x0c|auto-pstβ Autonomous Power State Transition0x0d|host-mem-bufβ Host Memory Buffer0x0e|timestampβ Timestamp0x0f|katoβ Keep Alive Timer0x10|hctmβ Host Controlled Thermal Management0x11|nopscβ Non-Operational Power State Config0x12|rrlβ Read Recovery Level Config0x13|plm-configβ Predictable Latency Mode Config0x14|plm-windowβ Predictable Latency Mode Window0x15|lba-sts-intervalβ LBA Status Information Report Interval0x16|host-behaviorβ Host Behavior Support0x17|sanitizeβ Sanitize Config0x18|endurance-evt-cfgβ Endurance Group Event Configuration0x19|iocs-profileβ I/O Command Set Profile0x1a|spinup-controlβ Spinup Control0x1b|power-loss-signalβ Power Loss Signaling Config0x1c|perf-characteristicsβ Performance Characteristics0x1d|fdpβ Flexible Data Placement0x1e|fdp-eventsβ FDP Events0x1f|ns-admin-labelβ Namespace Admin Label0x20|key-valueβ Key Value Configuration0x21|ctrl-data-queueβ Controller Data Queue0x78|emb-mgmt-ctrl-addrβ Embedded Management Controller Address0x79|host-mgmt-agent-addrβ Host Management Agent Address0x7d|enh-ctrl-metadataβ Enhanced Controller Metadata0x7e|ctrl-metadataβ Controller Metadata0x7f|ns-metadataβ Namespace Metadata0x80|sw-progressβ Software Progress Marker0x81|host-idβ Host Identifier
Like, the range from 0x01 to 0x21 is the classic lineup, then things hop up to the 0x78β0x81 neighborhood for the management/metadata/progress-marker crowd β that gap in the middle is not a typo, it's just how the spec decided to space things out π¦
Side note bestie: those hex values are exact. Copy them character for character, don't get creative with the leading zeros or the letter case-out-of-nowhere. Slay responsibly π
0x82βresv-maskβ Reservation Notification Mask (the mask for which reservation notifications you wanna hear about π)0x83βresv-persistβ Reservation Persistence (does your reservation survive a reset? this tells you)0x84βwrite-protectβ Namespace Write Protection Config (the "pls don't write here" settings)0x85βbp-write-protectβ Boot Partition Write Protection Config (same vibe, but for the boot partition π )-s <select>,--sel=<select>β the Select (SEL) field, bestie. It literally picks which value of the attributes gets returned in the data you get back. Like choosing which personality of the feature you wanna meet:0βcurrentβ Current (the now-now version)1βdefaultβ Default (factory settings energy)2βsavedβ Saved (the one that got persisted β¨)3βsupportedβ Supported capabilities (what it's even capable of, iykyk)
-U <uuid-index>,--uuid-index=<uuid-index>β the UUID Index of the feature π-l <data-len>,--data-len=<data-len>β the data length for the buffer that gets returned for this feature. Lowkey most known features don't use this value at all π the one exception is LBA Range Type.-c <cdw11>,--cdw11=<cdw11>β the value for command dword 11, if it applies to what you're doing.-b,--raw-binaryβ prints the raw feature buffer straight to stdout, but only if the feature actually returns a structure. no structure, no dump, periodt.-C,--changedβ this option will show feature changed β
π GLOBAL OPTIONS π
Okay so these ones are defined up at the top-level nvme command, which means they're available to this subcommand too. Group-chat privileges π«Ά
--dry-runβ prints the command it would execute, but doesn't actually execute it. All the plot, none of the consequences.--no-ioctl-probingβ disables probing for 64-bit IOCTL support.--no-retriesβ disables the retry logic on transient errors. One shot, no do-overs.-o <fmt>,--output-format=<fmt>β sets the reporting format tonormal,tabular,'json, orbinary. Only one output format at a time, bestie β pick a lane.--output-format-version=<version>β selects the output format version. Version1uses the original field naming, while version2(the default) provides more consistent and script-friendly field names. Any other version? Rejected. π«--quietβ suppresses informational messages. Errors still get reported, and--quietcancels any--verbosefor the library log level. so it's a vibe-canceller for chatter.--set-options=<key=value>[,<key=value>...]β sets libnvme library options for this invocation. Supported keys areforce-4k,mi-probe-enabled,test-base-dirandtest-sysfs-dir.--timeout=<ms>β sets the timeout for the command in milliseconds.infiniteor-1waits without a time limit (0xffffffff). patient queen behavior β³-v,--verboseβ increases the level of detail in the output. May be specified multiple times to further increase verbosity. stack it like a combo π₯
These options can also be set as machine-wide defaults in nvme-cli.conf(5). And a command-line flag always overrides the file β the file does not win, ever π
β¨ 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. likeβ¦ redirect it. please. your terminal will thank you π
π NVME π
Part of the nvme-user suite π
and that's the whole page, bestie! this one's from the nvme-user suite, NVMe edition, dated 10/30/2026, and it's NVME-GET-FEATURE(1) β go get those features, you absolute icon πβ¨
π¦ where this page comes from
- arch rolling: nvme-cli 3.2-1 Β· GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms