nvme-device-self-test1
Perform the necessary tests to observe the performance and the parameters
Usage
nvme [<global-options>]
device-self-test
<device>
[{--namespace-id=<NUM> | -n
<NUM>}]
[{--self-test-code=<NUM> | -s
<NUM>}]
[{--wait | -w}]
Overview
Initiates the required test based on the user input.
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 corresponding test is initiated.
The results of this test can be queried via nvme self-test-log <device>.
Options
-
-n <NUM>, --namespace-id=<NUM> -
Indicate the namespace in which the device self-test has to be carried out The broadcast value 0xffffffff can also be given as all or -1.
-
-s <NUM>, --self-test-code=<NUM> -
This field specifies the action taken by the device self-test command : 0h: Show current state of device self-test operation 1h: Start a short device self-test operation 2h: Start a extended device self-test operation eh: Start a vendor specific device self-test operation fh: Abort the device self-test operation Default is 0h.
-
-w, --wait -
Wait for the device self test to complete before exiting The device self-test is aborted by SIGINT signal interrupt for the wait The option is ignored if the abort self-test code option specified.
Options
The following options are defined at the top-level nvme command and are available to this subcommand:
-
--dry-run -
Print the command that would be executed, but do not actually execute it.
-
--no-ioctl-probing -
Disable probing for 64-bit IOCTL support.
-
--no-retries -
Disable retry logic on transient errors.
-
-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.
-
--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.
These options can also be set as machine-wide defaults in nvme-cli.conf(5). A command-line flag always overrides the file.
Examples
• Start a short device self-test in the namespace-id 1:
# nvme device-self-test /dev/nvme0 -n 1 -s 1
• Abort the device self-test operation in the namespace-id 1:
# nvme device-self-test /dev/nvme0 -n 1 -s 0xf
Nvme
Part of the nvme-user suite
Releases
5 releases since Debian 10 (Buster); the text changed 4 times.
--dry-run since Arch Linux 2026-11-01;
--no-ioctl-probing since Arch Linux 2026-11-01;
--no-retries since Arch Linux 2026-11-01;
--output-format since Debian 13 (Trixie);
--output-format-version since Arch Linux 2026-11-01;
--quiet since Arch Linux 2026-11-01;
--set-options since Arch Linux 2026-11-01;
--timeout since Debian 13 (Trixie);
--verbose since Debian 13 (Trixie);
--wait since Debian 12 (Bookworm);
-o since Debian 13 (Trixie);
-v since Debian 13 (Trixie);
-w since Debian 12 (Bookworm).
-t until Debian 13 (Trixie).