NVME-WDC-VS-ERROR(1)

πŸ’– nvme-wdc-vs-error-reason-identifier(1) β€” like, the WDC telemetry error reason identifier page, bestie πŸ’–

okay so first things first: this is part of the NVMe Manual, and the command itself is nvme-wdc-vs-error-reason-identifier β€” say that five times fast, I dare you 😭


✨ NAME ✨

nvme-wdc-vs-error-reason-identifier β€” grab the error reason identifier field out of a WDC device's telemetry log. that's the whole vibe πŸŽ€


πŸ¦‹ SYNOPSIS πŸ¦‹

nvme [<global-options>] wdc vs-error-reason-identifier <device>
                        [--log-id=<NUM>, -i <NUM>]
                        [--file=<FILE>, -O <FILE>]

🌸 DESCRIPTION 🌸

so for the NVMe device you hand over, this pulls the telemetry log error reason id field β€” either for the host generated log or the controller initiated one. your choice, main character energy πŸ’…

⚠️ real talk: the controller initiated telemetry log page option must be enabled to retrieve the error reason id for that log page id. no option, no id, no cap.

the <device> parameter is mandatory β€” not optional, not vibes-based β€” and it has to be the NVMe character device, like /dev/nvme0 for example.

πŸ’€ also: this only works on WDC devices that support this feature. results for any other device are undefined β€” literally undefined, don't come for me.

on success it returns 0, and an error code otherwise. slay ✨


πŸ’œ OPTIONS πŸ’œ

  • -i <id>, --log-id=<id> β€” tells it which telemetry log id's error reason identifier to go get. use id 7 for the host generated log page, use id 8 for the controller initiated log page. the default? 7/host generated, periodt 🫢
  • -O <FILE>, --file=<FILE> β€” output file, duh. defaults to <device serial number>_error_reason_identifier_host_<date>_<time>.bin for the host generated log, or <device serial number>_error_reason_identifier_ctlr_<date>_<time>.bin for the controller initiated log. yes the whole long filename, that's the bit πŸŽ€

🌈 GLOBAL OPTIONS 🌈

these ones live at the top-level nvme command and are available to this subcommand too. iykyk πŸ‘‘

  • --dry-run β€” prints the command that would be executed, but doesn't actually execute it. manifesting the command without running the command, honestly iconic ✨
  • --no-ioctl-probing β€” disables probing for 64-bit IOCTL support. no probing, no problem πŸ’…
  • --no-retries β€” disables retry logic on transient errors. one shot, one opportunity 🎯
  • -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> β€” picks the output format version. version 1 uses the original field naming, while version 2 (the default) gives you more consistent and script-friendly field names. any other versions get rejected β€” not invited to the party πŸ™ˆ
  • --quiet β€” suppresses informational messages. errors are still reported, and --quiet cancels any --verbose for the library log level. it's giving "shh, i'm in my quiet era" 🀫
  • --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. keys and values, keys and values πŸ’–
  • --timeout=<ms> β€” sets the timeout for the command in milliseconds. infinite or -1 waits without a time limit (0xffffffff). time is a construct anyway ⏳
  • -v, --verbose β€” increases the level of detail in the output. can be specified multiple times to increase verbosity even further. more v's, more lore πŸ”₯
πŸ’‘ these options can also be set as machine-wide defaults in nvme-cli.conf(5). and a command-line flag always overrides the file. always. no exceptions. periodt πŸ‘‘

πŸ“ EXAMPLES πŸ“

  • retrieves the host generated error reason identifier field and saves it in the file host_gen_error_reason_id.bin:
# nvme wdc vs-error-reason-identifier /dev/nvme0 -i 7 -O host_gen_error_reason_id.bin
  • retrieves the controller initiated error reason identifier field and saves it in the file ctlr_init_error_reason_id.bin:
# nvme wdc vs-error-reason-identifier /dev/nvme0 -i 8 -O ctlr_init_error_reason_id.bin

🧚 NVME 🧚

part of the nvme-user suite. family πŸ’–


okay that's the whole page! πŸŽ€ this one's from the NVMe suite, dated 10/30/2026, and the page id is NVME-WDC-VS-ERROR(1) β€” go forth and retrieve those error reason identifiers, bestie, you're gonna slay πŸ¦‹βœ¨πŸ‘‘

πŸ“¦ where this page comes from