NVME-NVME-MI-RECV(1)
π nvme-nvme-mi-recv β the NVMe Manual, but make it make sense β¨
okay so bestie, welcome to the nvme-nvme-mi-recv page from the NVMe Manual β literally the glow-up era of sending NVMe-MI Receive commands, and I'm gonna walk you through it like we're texting at 2am π«Ά
π NAME
nvme-nvme-mi-recv β bestie, this one sends a NVMe-MI Receive command to the device you point at. that's the whole vibe. π
π©· SYNOPSIS
nvme [<global-options>] nvme-mi recv <device>
[--opcode=<opcode> | -O <opcode>]
[--namespace-id=<nsid> | -n <nsid>]
[--data-len=<data-len> | -l <data-len>]
[--nmimt=<nmimt> | -m <nmimt>]
[--nmd0=<nmd0> | -0 <nmd0>]
[--nmd1=<nmd1> | -1 <nmd1>]
[--input-file=<file> | -i <file>]
π¦ DESCRIPTION
so you send a NVMe-MI Receive command to the specified device, and it returns results. iconic behavior, honestly. β¨
the <device> parameter is mandatory β no skipping it, bestie β and it can be either the NVMe character device (ex: /dev/nvme0) or the block device (ex: /dev/nvme0n1). either one slays, your choice π
on success it returns 0. otherwise you get an error code. no cap. π
π«Ά quick heads-up, the barenvme nvme-mi-recvform (no space, yeah that one) still works as a deprecated alias and it's getting yeeted in a future major version. new scripts should usenvme nvme-mi recvinstead. like, future-proof your code, it's giving self-care. π
β¨ OPTIONS β¨
-O <opcode>,--opcode=<opcode>β the NVMe-MI opcode you're sending to the device in the command. required argument because this param is mandatory, fr fr. like you cannot skip this one π-n <nsid>,--namespace-id=<nsid>β the value for the ns-id in the command. also the broadcast value0xffffffffcan be given asallor-1. cute little shortcut, iykyk πΈ-l <data-len>,--data-len=<data-len>β the data length for the buffer used for this command. it's giving "how much room do we need" π-m <nmimt>,--nmimt=<nmimt>β the value for the NVMe-MI message type in the command. yes, the name is a mouthful, we don't talk about it π-0 <nmd0>,--nmd0=<nmd0>β the value for the NVMe management request dword 0 in the command. zero-shaped flag, iconic π-1 <nmd1>,--nmd1=<nmd1>β the value for the NVMe management request dword 1 in the command. it's the one-shaped sibling, love that for them π¦-i <file>,--input-file=<file>β if the command is a data-out (write) command, use this file to fill the buffer sent to the device. if no file is given, assumed to useSTDIN. so like, pipe it in, no biggie π
π GLOBAL OPTIONS π
these are defined at the top-level nvme command and bestie they are available to this subcommand, so you're not missing out on anything π
--dry-runβ print the command that would be executed, but do not actually execute it. the "looking respectfully" of flags π--no-ioctl-probingβ disable probing for 64-bit IOCTL support. sometimes you just don't need the whole investigation, y'know? π₯--no-retriesβ disable retry logic on transient errors. one shot, main character energy. π-o <fmt>,--output-format=<fmt>β set the reporting format tonormal,tabular,'json, orbinary. only one output format may be used at a time β pick your fighter π₯--output-format-version=<version>β select the output format version. version1uses the original field naming, while version2(default) provides more consistent and script-friendly field names. other versions are rejected. sorry bestie, no version 3, it does not exist π--quietβ suppress informational messages. errors are still reported, and--quietcancels any--verbosefor the library log level. so like, shush but not too shush π€«--set-options=<key=value>[,<key=value>...]β set libnvme library options for this invocation. supported keys areforce-4k,mi-probe-enabled,test-base-dirandtest-sysfs-dir. it's a little key-value buffet, help yourself π--timeout=<ms>β set the timeout for the command in milliseconds.infiniteor-1waits without a time limit (0xffffffff). commitment issues? not in this house β¨-v,--verboseβ increase the level of detail in the output. may be specified multiple times to further increase verbosity. stack it like your iced coffee order, the more the merrier βπ
π«Ά also!! these options can be set as machine-wide defaults in nvme-cli.conf(5). a command-line flag always overrides the file. CLI stays the main character, periodt. π
π EXAMPLES π
- has the program issue a
nvme-mi-recvto execute the VPD read. look at it go π¦
# nvme nvme-mi recv /dev/nvme0n1 -O 5 -m 1 -0 0 -1 0x100 -l 256
πΈ NVME πΈ
part of the nvme-user suite. the family reunion we all love π
okay that's the whole page bestie, no notes. this gorgeousness is from the NVMe source, dated 10/30/2026, and it's for the NVME-NVME-MI-RECV(1) page. go forth and recv responsibly π«Άβ¨π
π¦ 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