NVME-WDC-DRIVE-LO(1)

πŸ’– nvme-wdc-drive-log β€” the NVMe Manual, but make it cute ✨

Okay bestie, so this is the nvme-wdc-drive-log page from the NVMe Manual, and it's genuinely one of the more niche little icons in the suite. Sit down, grab a strawberry drink πŸ“, and let's get into it.


🌸 NAME 🌸

nvme-wdc-drive-log β€” grab the drive log off a WDC device and save it to a file, periodt.


πŸŽ€ SYNOPSIS πŸŽ€

nvme [<global-options>] wdc drive-log <device>
                        [--output-file=<FILE>, -O <FILE>]

πŸ¦‹ DESCRIPTION πŸ¦‹

So here's the vibe: you point this at an NVMe device, it sends the WDC vendor-unique drive log request, and it saves whatever comes back into a file. That's the whole main character arc. πŸ’…

The <device> parameter is mandatory β€” like, you cannot skip it, it's not optional, it's not a suggestion. And it can be either:

  • the NVMe character device (ex: /dev/nvme0), or
  • a namespace block device (ex: /dev/nvme0n1)
⚠️ Real talk though: this only works on WDC devices that actually support this feature. Results for any other device are undefined β€” so like, don't come for me if you point it at something random. πŸ™ˆ

✨ OPTIONS ✨

  • -O <FILE>, --output-file=<FILE> β€” the output file! Defaults to the device serial number followed by the drive_log suffix. So it kinda names itself, which is lowkey iconic.

πŸ”₯ GLOBAL OPTIONS πŸ”₯

These ones live at the top-level nvme command and are available to this subcommand too β€” they're the shared besties of the whole suite:

  • --dry-run β€” prints the command that would be executed but does not actually execute it. All the plot, none of the consequences. πŸ‘€
  • --no-ioctl-probing β€” disables probing for 64-bit IOCTL support.
  • --no-retries β€” disables the retry logic on transient errors.
  • -o <fmt>, --output-format=<fmt> β€” sets the reporting format to normal, tabular, 'json, or binary. Only one output format at a time, bestie β€” pick a lane. 🚫
  • --output-format-version=<version> β€” selects the output format version. Version 1 uses the original field naming, while version 2 (the default) provides more consistent and script-friendly field names. Any other version gets rejected β€” sorry, not sorry.
  • --quiet β€” suppresses informational messages. Errors are still reported, and --quiet cancels any --verbose for the library log level. It's giving "I said what I said." 🀫
  • --set-options=<key=value>[,<key=value>...] β€” sets libnvme library options for this invocation. The supported keys are force-4k, mi-probe-enabled, test-base-dir and test-sysfs-dir.
  • --timeout=<ms> β€” sets the timeout for the command in milliseconds. infinite or -1 waits without a time limit (0xffffffff), which is the "we'll get there when we get there" option. 😭
  • -v, --verbose β€” increases the level of detail in the output. May be specified multiple times to further increase verbosity β€” stack 'em like accessories. πŸ’…

Also! These options can be set as machine-wide defaults in nvme-cli.conf(5). And a command-line flag always overrides the file. No cap. πŸ‘‘


🌈 EXAMPLES 🌈

  1. Gets the drive log from the device and saves to the default file in the current directory (e.g. STM00019F3F9drive_log.bin):
# nvme wdc drive-log /dev/nvme0
  1. Gets the drive log from the device and saves to a defined file in the current directory (e.g. testSTM00019F3F9drive_log.bin):
# nvme wdc drive-log /dev/nvme0 -O test
  1. Gets the drive log from the device and saves to a defined file with a pathname (e.g. /tmp/testSTM00019F3F9drive_log.bin):
# nvme wdc drive-log /dev/nvme0 -O /tmp/test

πŸ‘‘ NVME πŸ‘‘

Part of the nvme-user suite. Bestie, you're in good company. 🫢


🧚 And that's the whole page! This one's from the NVMe source, dated 10/30/2026 β€” so go forth, log those drives, and remember: <device> is mandatory. Slay. πŸ’œ
πŸ“¦ where this page comes from