Determining Network/Storage firmware and driver version in ESXi

Determining Network/Storage firmware and driver version in ESXi

book

Article ID: 323110

calendar_today

Updated On:

Products

VMware vSphere ESXi

Issue/Introduction

This article provides steps for determining the driver and firmware versions for Host Bus Adapters (HBA) and physical network interface cards (NICs) on ESXi.

The VMware Hardware Compatibility List is the collection point for these Information as provided by the vendor, so that the customer does not have to contact the Vendors for each component. VMware does not develop or test Drivers. For more information, see FAQ: Recommendation for Driver/Firmware.

Environment

VMware vSphere ESXi 6.7
VMware vSphere ESXi 7.x
VMware vSphere ESXi 8.x

Resolution

Obtain information on the Host Bus Adapter
Obtain information on the Network card

 

Obtain information on the Host Bus Adapter

To determine the driver and firmware version of a Host Bus Adapter:
  • Open a SSH session to the ESXi host.
  • Run this command to list the Host Bus Adapters (HBAs):
esxcfg-scsidevs -a 
or 
esxcli storage core adapter list 

 
  • Run this command to get get the specifics of the device driver version:
vmkload_mod -s HBADriver |grep Version

For Example: 
vmkload_mod -s pvscsi | grep Version 

where the highlighted section is the device driver version. 
  • You could also run this script to list the device driver versions for all the vmhbas at once: 
for a in $(esxcfg-scsidevs -a |awk '{print $2}') ;do vmkload_mod -s $a |grep -i version ;done 
  • Alternatively, for ESXi versions 6.5 and above, you could run this command to list out the specifics of the physical vmhba adapter set being used (including the firmware version):
esxcli storage san [fc|iscsi|fcoe|sas] list 
 
Example:

esxcli storage san fc list
   Adapter: vmhba1
   Port ID: 090300
   Node Name: 20:00:00:24:ff:4c:51:c2
   Port Name: 21:00:00:24:ff:4c:51:c2
   Speed: 4 Gbps
   Port Type: NPort
   Port State: ONLINE
   Model Description: QLogic 8Gb Fibr
   Hardware Version: CU0210412-01  K
   OptionROM Version: 2.13
   Firmware Version: 8.05.00 (90d5)
   Driver Name: qlnativefc
   DriverVersion: 3.0.1.0

   Adapter: vmhba2
   Port ID: 090300
   Node Name: 20:00:00:24:ff:4c:51:c3
   Port Name: 21:00:00:24:ff:4c:51:c3
   Speed: 4 Gbps
   Port Type: NPort
   Port State: ONLINE
   Model Description: QLogic 8Gb Fibr
   Hardware Version: CU0210412-01  K
   OptionROM Version: 2.13
   Firmware Version: 8.05.00 (90d5)
   Driver Name: qlnativefc
   DriverVersion: 3.0.1.0


Where the Driver Version and Firmware Version are highlighted.
 
These commands can also be used:

[root@ESXi:~] /usr/lib/vmware/vmkmgmt_keyval/vmkmgmt_keyval -d
Dumping all key-value instance names:
Key Value Instance:  vmhba65/qlogic
Key Value Instance:  vmhba64/qlogic
Key Value Instance:  MOD_PARM_FCOE/qlogic
Key Value Instance:  vmnic7/QLogic
Key Value Instance:  vmnic6/QLogic
Key Value Instance:  vmnic5/QLogic
Key Value Instance:  vmnic4/QLogic
Key Value Instance:  vmnic3/QLogic
Key Value Instance:  QCNIC/qlogic
Key Value Instance:  vmnic2/QLogic
Key Value Instance:  vmnic1/QLogic
Key Value Instance:  vmnic0/QLogic

[root@ESXi:~] /usr/lib/vmware/vmkmgmt_keyval/vmkmgmt_keyval -l -i vmhba64/qlogic
Listing keys:
Name:   ADAPTER
Type:   string
value:  qfle3f-QLogic Offload FCoE:57840 v2.1.30.0 over vmnic2
 ql_fcoe: v1.0.38.0 (Driver)
 HBA:0x431205008000 for netdev:0000:37:00.2
 Host Device Name vmhba64 (Physical)
 Active NPIV Ports : 0
 FW version = Storm: 7.13.20.0 MFW: 7.16.3 (Firmware)

Note:
The functionality of the above step is limited to certain Physical Adapter Types/Sets only (Qlogic, lpfc etc).

If the above commands are not listing out the required details of the device driver and firmware versions, you would need to fetch them manually by executing the commands stated earlier (only the details of the Device Driver version can be fetched).


For validating/downloading/installing the Firmware Versions, you would need to get in touch with your Hardware Vendor. 
  • To determine the recommended driver for the card, we must obtain the Vendor ID (VID), Device ID (DID), Sub-Vendor ID (SVID), and Sub-Device ID (SDID) using the vmkchdev command:

    vmkchdev -l |grep vmhba1

    000:16.0 1000:0030 15ad:1976 vmkernel vmhba1


    In this example, the values are:

    VID = 1000
    DID = 0030
    SVID = 15ad
    SDID = 1976

     
  • Alternatively, you could fetch the same information by running this command:
    • esxcfg-info | less 
    • Search for vmhbaX by entering "/vmhbaX" where X is the number.
  • Upon hitting enter, you would initiate a forward search and result would be show as below:
  • Search the VMware Compatibility Guide for the Vendor ID (VID), Device ID (DID), Sub-Vendor ID (SVID), and Sub-Device ID (SDID). In some cases, you may need to do a text search to narrow down the particular card.

    Note: You can check the ESXi/ESX host version with the command:

    vmware -vl
 

Obtain information on the Network card

To determine the version information for a physical network interface card in vSphere ESXi:

  1. Open a console to the ESXi host. For more information, see Unable to connect to ESXi host using SSH.
  2. Obtain a list of network interface cards and names.

    In ESXi, run this command:

    esxcli network nic list

    For example:

    esxcli network nic list

    Name PCI Driver Link Speed Duplex MAC Address
    vmnic0 00:02:04.00 ACME Up 1000Mbps Full 01:23:45:67:89:AB
    vmnic1 00:02:05.00 ACME Up 1000Mbps Full 01:23:45:67:78:AC

     
  3. Run this command to display available information for one of the network interfaces, specifying its name from step 2:

    esxcli network nic get -n vmnic#

    For example, the highlighted lines show the driver:

    esxcli network nic get -n vmnic0

    Advertised Auto Negotiation: true
    Advertised Link Modes: Auto, 100BaseT/Full, 1000BaseT/Full, 10000BaseT/Full
    Auto Negotiation: true
    Cable Type: Twisted Pair
    Current Message Level: -1
    Driver Info:
     Bus Info: 0000:01:00:0
     Driver: ixgben
     Firmware Version: 0x8000063b, 19.5.12
     Version: 1.7.1.28
    Link Detected: true
    Link Status: Up
    Name: vmnic0
    PHYAddress: 0
    Pause Autonegotiate: true
    Pause RX: true
    Pause TX: true
    Supported Ports: TP
    Supports Auto Negotiation: true
    Supports Pause: true
    Supports Wakeon: false
    Transceiver:
    Virtual Address: 00:50:56:5f:0a:50
    Wakeon: None


    Alternatively, for ESXi versions 6.5 and above, you could run this command to list out the specifics of all the vmnics:

    /usr/lib/vmware/vm-support/bin/nicinfo.sh | less
     
  4. To determine the recommended driver for the card, we must obtain the Vendor ID (VID), Device ID (DID), Sub-Vendor ID (SVID), and Sub-Device ID (SDID) using the vmkchdev command:

    vmkchdev -l |grep vmnic

    002:01.0 8086:100f 15ad:0750 vmkernel vmnic0

    In this example, the values are:

    VID = 8086
    DID = 100f
    SVID = 15ad
    SDID = 0750

     
  5. You can now search the VMware Compatibility Guide (IO devices) for the Vendor ID (VID), Device ID (DID), Sub-Vendor ID (SVID), and Sub-Device ID (SDID). In some cases, you may need to do a text search to narrow down the particular card.
    Note: Check the ESXi host version by running this command:

    vmware -vl

    From the ESXi host version and the network type, you then know the version of the driver to use. Compare this information to the information you received in step 3. It is recommended the driver be up to date.
    Driver updates are available on the VMware downloads page, which can be accessed by clicking on the top of list driver. To update the driver, see How to download and install async drivers in ESXi.


Additional Information

Run this script to obtain the driver version and Firmware for all HBAs in the system:

for name in `vmkchdev -l | grep vmhba | awk '{print$5}'`;do echo $name ; echo "VID :DID  SVID:SDID"; vmkchdev -l | grep $name | awk '{print $2 , $3}';printf "Driver: ";echo `esxcfg-scsidevs -a | grep $name |awk '{print $2}'`;vmkload_mod -s `esxcfg-scsidevs -a | grep $name|awk '{print $2}'` |grep -i version;echo `lspci -vvv | grep $name | awk '{print $1=$NF="",$0}'`;printf "\n";done

=============================================================================

VMware Skyline Health Diagnostics for vSphere - FAQ

For more information about native drivers in ESXi, see: