NVME-FW-COMMIT(1)
πΈ nvme-fw-commit(1) β the NVMe Manual, bestie edition πΈ
okay so real talk: this is nvme-fw-commit from the NVMe Manual, and it's literally the glow-up page for "verify my firmware and commit it". sit down, grab a strawberry drink π, we're doing this.
β¨ NAME β¨
nvme-fw-commit β bestie, this is the one you use to verify and commit a firmware image. that's it, that's the whole vibe check. π
π¦ SYNOPSIS π¦
nvme [<global-options>] fw commit <device> [--slot=<slot> | -s <slot>]
[--action=<action> | -a <action>]
[--bpid=<boot-partid> | -b <boot-partid>]
look at her. no cap, she's gorgeous. β¨
π DESCRIPTION π
so for the NVMe device you hand over, this sends an nvme Firmware Commit admin command and gives you the results back. that's the whole job, and honestly? she ate. π
The Firmware Commit command is used to verify that a valid firmware image has been downloaded, and to commit that revision to a specific firmware slot. The host may select the firmware image to commit on the next controller reset (that's CC.EN transitioning from '1' to '0', a PCI function level reset, and/or other Controller or NVM Subsystem Reset) as part of this command. The currently executing firmware revision may be determined from the Firmware Revision field of the Identify Controller data structure, as indicated in the Firmware Slot Information log page. iykyk. π₯
β οΈ important, do not skip this: no further action is automatically taken to reset the device, which is usually required to complete the activation process. like, she commits but she doesn't drive you home. π
If your kernel and driver are recent enough, you can commit the firmware by issuing a reset through Linux sysfs, for example:
# echo 1 > /sys/class/nvme/nvme0/device/reset
If your kernel is not recent enough, you will need to remove and add the device some other way. old kernel problems, we've all been there π
The bare nvme fw-commit form (without a space) still works as a deprecated alias and will be removed in a future major version. New scripts should use nvme fw commit instead. she's retiring, let her go gracefully π
π OPTIONS π
-a <action>,--action=<action>β the Commit Action π« this field specifies the action that is taken on the image downloaded with the Firmware Image Download command or on a previously downloaded and placed image. the values, in all their glory:0 | replaceβ Downloaded image replaces the image indicated by the Firmware Slot field. This image is not activated. (she's just moving in, not taking over the lease π)1 | replace-and-activateβ Downloaded image replaces the image indicated by the Firmware Slot field. This image is activated at the next reset. π¬2 | set-activeβ The image indicated by the Firmware Slot field is activated at the next reset. β3 | replace-and-activate-immediateβ The image specified by the Firmware Slot field is requested to be activated immediately without reset. main character energy, no waiting π6 | replace-boot-partitionβ Downloaded image replaces the Boot Partition specified by the Boot Partition ID field. π₯Ύ7 | activate-boot-partitionβ Mark the Boot Partition specified in the BPID field as active and updateBPINFO.ABPID. π
-s <slot>,--slot=<slot>β Firmware Slot: specifies the firmware slot that shall be used for the Commit Action, if applicable. If the value specified is0h, then the controller shall choose the firmware slot (slot 1 β 7) to use for the operation. so you can pass the decision off to the controller, she's got it π«Ά--bpid=<boot-partid>,-b <boot-partid>β specifies the Boot partition that shall be used for the Commit Action, if applicable (default:0). the default is literally zero, keep that in your notes π
π GLOBAL OPTIONS π
these are defined at the top-level nvme command and are available to this subcommand. group-chat-wide settings, fr fr:
--dry-runβ Print the command that would be executed, but do not actually execute it. manifesting without acting β¨--no-ioctl-probingβ Disable probing for 64-bit IOCTL support.--no-retriesβ Disable retry logic on transient errors. one shot, no take-backs π-o <fmt>,--output-format=<fmt>β Set the reporting format tonormal,tabular,'json, orbinary. Only one output format may be used at a time. pick one, queen, you can't have all four π (yes, the quote beforejsonis in the original, we don't question it π)--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. v2 ate, no cap π--quietβ Suppress informational messages. Errors are still reported, and--quietcancels any--verbosefor the library log level. shhhh π€«--set-options=<key=value>[,<key=value>...]β Setlibnvmelibrary options for this invocation. Supported keys areforce-4k,mi-probe-enabled,test-base-dirandtest-sysfs-dir.--timeout=<ms>β Set the timeout for the command in milliseconds.infiniteor-1waits without a time limit (0xffffffff). she'll wait forever, literally π-v,--verboseβ Increase the level of detail in the output. May be specified multiple times to further increase verbosity. more v's = more tea π΅
These options can also be set as machine-wide defaults in nvme-cli.conf(5). A command-line flag always overrides the file. flags > file, every time π
β EXAMPLES β
- commit the last downloaded fw to slot 1. iconic behaviour:
# nvme fw commit /dev/nvme0 --slot=1 --action=2
π ALIAS π
fw-activate β yes she has a nickname, and yes it's still valid π«Ά
πΈ NVME πΈ
Part of the nvme-user suite. the whole family is cute, honestly π§
okay that's the page!! you did so good getting to the end π this beauty is from the NVMe crew, dated 10/30/2026 β go commit some firmware, bestie, and remember: no further action is automatically taken to reset the device, so go do your sysfs reset and slay π β¨π
π¦ 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