How to find NVMe SSD firmware versions on VMware ESXi using ESXCLI

Posted by Paul Braren on Aug 5 2017 (updated on Aug 25 2018) in
  • ESXi
  • HomeServer
  • HomeLab
  • HowTo
  • Storage
  • Virtualization
  • new-esxcli-commands-in-vsphere-6-5

    Keeping this one short-and-simple, to really encourage you to visit the source article to read through details and tips found at:

    If you're wondering if your NVMe drive might need a firmware update, and you're running VMware ESXi Hypervisor, this article is for you. Many affordable, consumer market SSDs only make Windows or Mac utilities for firmware level determination and updates, such as Samsung Magician. I'm hoping to spare you the trouble of finding out that you should have upgraded, the hard way, such as when your Samsung 960 or EVO drive vanishishes after a reboot, due to an older firmware. That whole story unfolded here at TinkerTry first, earlier this year.

    Note, consumer SSDs are more affordable partly because of their relatively low TBW, and unlikely to appear on the endurance-for-the-enterprise focused VMware Compatibility Guide. That said, they make great VMFS datastores for homelabs, where write endurance is unlikely to be an issue. Not recommend as a caching tier for vSAN.

    Non-disruptive

    This article gets you through that first step in remediation, determining whether you have an old firmware or not, quickly and easily, without disruption, and without installing any third party software. Works for any NVMe device in any form factor, including HHHL PCIe cards, M.2, and U.2.

    How to determine your NVMe SSD's firmware level

    I used VMware ESXi 6.5 Update 1 on my SuperServer Bundle 2 to test this, seen also in the video below. But this exact method should work on any 6.5.x version, assuming you've started SSH on your ESXi host first.

    Step 1

    Issue the following command:

    esxcli nvme device get -A vmhba1 | egrep "Serial Number|Model Number|Firmware Revision"

    then up-arrow and replace the vmhba1 with vmhba2 then press enter. Repeat this process, until you run out of drives to check.

    Sample output:

    [root@xd-1541-5028d:~] esxcli nvme device get -A vmhba1 | egrep "Serial Number|Model Number|Firmware Revision"
    Serial Number: S3EWNX0J510951K
    Model Number: Samsung SSD 960 PRO 512GB
    Firmware Revision: 2B6QCXP7
    [root@xd-1541-5028d:~] esxcli nvme device get -A vmhba2 | egrep "Serial Number|Model Number|Firmware Revision"
    Serial Number: PHBT71610CW8032E
    Model Number: INTEL MEMPEK1W032GA
    Firmware Revision: K3110300
    [root@xd-1541-5028d:~] esxcli nvme device get -A vmhba3 | egrep "Serial Number|Model Number|Firmware Revision"
    Serial Number: S3ETNX0HB07870X
    Model Number: Samsung SSD 960 EVO 1TB
    Firmware Revision: 2B7QCXE7

    2017-08-05_20-10-41

    Step 2 - Optional

    If you also want all sorts of details about each of your drives, let's remove the egrep search, just this shorter command:

    esxcli nvme device get -A vmhba1

    press enter, then up-arrow and replace the vmhba1 with vmhba2 then press enter again. Repeat this process, until you run out of drives to check.

    Yep, it's that easy, you're done here! No downtime, no reboots, quick-and-easy, and completely safe. Just don't forget to close your SSH session and/or service.

    Video

    How to find NVMe SSD firmware versions in a VMware ESXi 6.5 Server

    If you do need to update your firmware

    While it would be nice if your affordable SSD vendor supported the esxcli nvme device firmware download XCLI command from within an SSH session to your ESXi host, that may not be the case. Instead, try to locate the bootable ISO firmware updater from your SSD's support site, such as the Samsung 960 EVO and 960 firmware update ISOs (sometimes) found here. This method of booting from an ISO-based-OS side-steps the need to have an OS installed on new systems. This is why boot ISOs are well-suited for new (greenfield) deployments, where out of band management using IPMI (iLO, iDRAC, iKVM) to mount that ISO can help. If you don't have such abilities, you can always burn an old-school CD/DVD, or create bootable USB media from the ISO.

    Shop

    B071S3ZY8P
    Supermicro AOC-SLG3-2M2.

    The Supermicro AOC-SLG3-2M2 PCIe for two NVMe SSDs manual is available at Amazon, Newegg, and Wiredzone, see also the AOC-SLG3-2M2 User's Guide and Product Page. The two M.2 NVMe SSDs featured in the video are detailed at Where to buy your Samsung 960 EVO or PRO M.2 NVMe SSDs, featuring the latest ordering and availability info. Note, there are now several companies offering 3D NAND M.2 NVMe storage, including the Intel® SSD E 6000p Series and the (WD/SanDisk partnership) Toshiba XG5.


    Aug 07 2017 Update

    The Shop section was added above, prompted by Bob Watson's comment below.

    In case you're wondering what an INTEL MEMPEK1W032GA is, that's a 32GB Optane drive, see also Intel Optane M.2 16GB/32GB consumer NVMe SSDs for Windows caching are not that fast as VMware VMFS or NTFS, save up for bigger PCIe versions. More about Optane at TinkerTry soon.


    Aug 25 2018 Update

    These commands still work on vSphere 6.7, so I'm changing the title from:
    How to find NVMe SSD firmware versions in a VMware ESXi 6.5 Server
    to:
    How to find NVMe SSD firmware versions on VMware ESXi using ESXCLI


    See also at TinkerTry

    whats-inside-vmware-vsphere-6-5-update-1

    See also