---
name: "nvme-set-reg"
section: "1"
platform: "linux"
package: "nvme-cli"
version: "3.2-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/nvme-set-reg"
---

# nvme-set-reg(1)

Writes and shows the defined NVMe controller register

## NAME

nvme-set-reg - Writes and shows the defined NVMe controller register

## SYNOPSIS

```
nvme [<global-options>] set-reg <device>
                        [--register=<name> | -r <name>] [--offset=<offset> | -O <offset>]
                        [--value=<val> | -V <val>] [--mmio32 | -m]
```

## DESCRIPTION

Writes a controller register: of an NVMe over PCIe controller in its PCI memory space, of an NVMe over Fabrics controller, which has no PCI memory space, the property with a Property Set command.

The \<device\> parameter is mandatory and must be the nvme admin character device (ex: /dev/nvme0).

## OPTIONS

- \-r \<name\>, --register=\<name\>

  The register to write, by name: one of the registers the host may write, intms, intmc, cc, csts, nssr, aqa, asq, acq, bprsel, bpmbl, cmbmsc, nssd, pmrctl, pmrmscl, pmrmscu.

- \-O \<offset\>, --offset=\<offset\>

  The register to write, by offset or name, e.g. 0x14 or cc.

- \-V \<val\>, --value=\<val\>

  The value to write. A 32 bit register refuses a larger value.

- \-m, --mmio32

  Write a 64 bit register as two 32 bit accesses.

The options --cc=\<val\>, --aqa=\<val\> and so on of earlier versions, one for each register the host may write, still work, but are deprecated: use --register and --value.

## GLOBAL 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)](/nvme-cli.conf/5.md). A command-line flag always overrides the file.

## EXAMPLES

• Write 0x460000 to the Controller Configuration register

```
# nvme set-reg /dev/nvme0 --register=cc --value=0x460000
```

## NVME

Part of the nvme-user suite.
