NVME-NVME-MI-SEND(1)

πŸ’… nvme-nvme-mi-send πŸ’…

okay so bestie, welcome to the nvme-nvme-mi-send page β€” it's a NVMe Manual entry, and it's literally all about yeeting a NVMe-MI Send command at a device. 🫢


✨ NAME ✨

nvme-nvme-mi-send β€” Send a NVMe-MI Send command to the specified device πŸ’Œ


πŸŽ€ SYNOPSIS πŸŽ€

nvme [<global-options>] nvme-mi send <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 the whole vibe is: send a NVMe-MI Send command to the specified device, and it returns results. slay. ✨

The <device> parameter is mandatory β€” no cap, you gotta give it one β€” and it may be either the NVMe character device (ex: /dev/nvme0) or a block device (ex: /dev/nvme0n1). πŸŽ€

On success it returns 0, error code otherwise. That's the whole mood. 😌

bestie pls note πŸ“Œ β€” the bare nvme nvme-mi-send form (without a space) still works as a deprecated alias and will be removed in a future major version. New scripts should use nvme nvme-mi send instead. lowkey plan ahead, iykyk πŸ’…

⭐ OPTIONS ⭐

  • -O <opcode>, --opcode=<opcode> β€” the NVMe-MI opcode to send to the device in the command. Required argument because this param is mandatory β€” you can't skip it, it's the main character here πŸ‘‘
  • -n <nsid>, --namespace-id=<nsid> β€” the value for the ns-id in the command. The broadcast value 0xffffffff can also be given as all or -1. three ways to say the same thing, iconic 🌈
  • -l <data-len>, --data-len=<data-len> β€” the data length for the buffer used for this command. πŸ“
  • -m <nmimt>, --nmimt=<nmimt> β€” the value for the NVMe-MI message type in the command. πŸ’Œ
  • -0 <nmd0>, --nmd0=<nmd0> β€” the value for the NVMe management request dword 0 in the command. 🫢
  • -1 <nmd1>, --nmd1=<nmd1> β€” the value for the NVMe management request dword 1 in the command. 🫢
  • -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 use STDIN. πŸ™ˆ

🌸 GLOBAL OPTIONS 🌸

These bad boys are defined at the top-level nvme command and are available to this subcommand too β€” they travel with the whole squad 🧚

  • --dry-run β€” print the command that would be executed, but do not actually execute it. fake it till you make it πŸ’…
  • --no-ioctl-probing β€” disable probing for 64-bit IOCTL support.
  • --no-retries β€” disable retry logic on transient errors. one shot, no do-overs 😀
  • -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. (yes the stray quote in 'json is exactly how it's written, don't come for me 🫢)
  • --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. louder = more info, fr fr πŸ“£
These options can also be set as machine-wide defaults in nvme-cli.conf(5). A command-line flag always overrides the file. πŸ’–

πŸ”₯ EXAMPLES πŸ”₯

  • Has the program issue a nvme-mi-send to execute the VPD write. yes bestie, this is the moment ✨
# nvme nvme-mi send /dev/nvme0n1 -O 6 -m 1 -0 0 -1 0x100 -l 256 -i vpd.bin

πŸ‘‘ NVME πŸ‘‘

Part of the nvme-user suite. one of us, one of us πŸŽ‰


okay that's the whole page, ate and left no crumbs πŸ’… β€” signed off with love from the NVMe crew, dated 10/30/2026, version vibes included. see u in the group chat πŸ¦‹πŸ’œ

πŸ“¦ where this page comes from