NVME-RPMB(1) | NVMe Manual | NVME-RPMB(1) |
nvme-rpmb - Send RPMB commands to an NVMe device
nvme rpmb <device> [--cmd=<command> | -c <command>]
[--msgfile=<data-file> | -f <data-file>]
[--keyfile=<key-file> | -g <key-file>]
[--key=<key> | -k <key>]
[--msg=<data> | -d <data>]
[--address=<offset> | -o <offset>]
[--blocks=<512 byte sectors> | -b <sectors> ]
[--target=<target-id> | -t <id> ]
For the NVMe device given, send an nvme rpmb command and provide the results.
The <device> parameter is mandatory and NVMe character device (ex: /dev/nvme0) must be specified. If the given device supports RPMB targets, command given with --cmd or -c option shall be sent to the controller. If given NVMe device doesn’t support RPMB targets, a message indicating the same shall be printed along with controller register values related RPMB.
-c <command>, --cmd=<command>
info - print information regarding supported RPMB targets and
access and total sizes. No further arguments are required
program-key - program 'key' specified with -k option or key read from
file specified with --keyfile option to the specified
RPMB target given with --target or -t options. As per
spec, this is one time action which can't be undone.
read-counter - Read 'write counter' of specified RPMB target. The
counter value read is printed onto STDOUT
read-config - Read 512 bytes of device configuration block data of
specified RPMB target of the NVMe device. The data read
is written to input file specified with --msgfile or -f
option. write-config - Write 512 byes of device configuration block data
from file specified by --msgfile or -f options to the
RPMB target specified with --target or -t options.
read-data - Supports authenticated data reading from specified
RPMB target (--target or -t option) at given offset
specified with --address or -o option, using key
specified using --keyfile or -k options. --blocks or
-o option should be given to read the amount of data
to be read in 512 byte blocks.
write-data - Supports authenticated data writing to specified RPMB
target (--target or -t option) at given offset
specified with --address or -o option, using key
specified using --keyfile or -k options. --blocks or
-o option should be given to indicate amount of data
to be written in 512 byte blocks.
For data transfer (read/write) commands, if the specified size is not within the total size supported by a target, the request is failed nvme-rpmb without sending it to device. RPMB target 0 is used as the default target if --target or -t is not specified. 0x0 is used as the default address if no -address or -o option is specified,
-t <target>, --target=<target>
-k <key>, --key=<key>, -g <key-file>, --keyfile=<key-file>
-f <data-file>, --msgfile=<data-file>
-d <data>, --msg=<data>
-o <offset>, --address=<offset>
-b, --blocks=<sectors>
# nvme rpmb /dev/nvme0 --cmd=info
# nvme rpmb /dev/nvme0 --cmd=program-key -key='SecretKey' --target=1
# nvme rpmb /dev/nvme0 --cmd=read-counter --target=0
# nvme rpmb /dev/nvme0 --cmd=read-config --target=2 -f config.bin
# nvme rpmb /dev/nvme0 -c write-data -t 0 -f input.bin -b 200 -k 'SecretKey'
# nvme rpmb /dev/nvme0 -c read-data -t 2 -f out.bin -b 200 -o 0x100
Part of the nvme-user suite
04/15/2023 | NVMe |