Sunday, July 8, 2018

How to check FC hba driver & firmware version on ESXi host

Lately while storage team was planning to upgrade the storage system OS, during initial checks they found there are some ESXi hosts in the environment having an old version of hba driver so, they sent their recommendation to upgrade the hba driver to a minimum supported version or later.

Now here is the point, while planning to upgrade the hba or any other device driver always make sure to check and upgrade the firmware of the device to a compatible version as well otherwise you might face some serious performance and related issues (better to upgrade the device driver and firmware at same time).

One can check and verify the IO devices firmware/driver compatibly and ESXi support information on VMware Compatibility Guide Site.

Now here are the steps to check the installed firmware/driver version of any connected hba device.

First check what type of hba driver is being used on the server by running one of the following cmd,

# esxcfg-scsidevs -a


# esxcli storage core adapter list

The second column of the output shows the driver that is configured for the HBA.

For native hba driver, use following cmds to get the driver/firmware detail:

# /usr/lib/vmware/vmkmgmt_keyval/vmkmgmt_keyval -d

​Here you can see the names of connected HBAs, suppose they’re: vmhba0 and vmhba2

# /usr/lib/vmware/vmkmgmt_keyval/vmkmgmt_keyval -l -i vmhba0/Emulex (type the hba/vender_name correctly as it’s case sensitive)

The output of the cmd will show you the installed hba firemware & driver version.

To check the information when legacy driver is being in use.

Go to /proc/scsi directory and look for lpfc (for emulex) or qla (for qlogic) or bfa (for brocade and sometime for qlogic as well).

Now, change the directory to appropriate hba model dir, if its lpfc then:

# cd /proc/scsi/lpfc####

Where #### is the model of the Emulex hba

Run the cmd the content of this dir,

# ls -lia

Now check the files available here (with the names as a number), in case there is a file named 6 then:

# Cat 6

You would get an output similar to,

Chip Revision: Rev-D
Manufacturer: QLogic
Model Description: QLogic-###
Instance Num: 0
Serial Num: ALX0xxxxxxxx
Firmware Version: 5.4.x.x
Hardware Version: Rev-D
Bios Version: x.x.x.x
Optrom Version: x.x.x.x
Port Count: 1
WWNN: xxxxxxxxxxxxxxxxx
WWPN: xxxxxxxxxxxxxxxxxx

To quickly check the HBA Driver in use:

1. Open a console to the ESXi/ESX host.

2. Run this command to obtain the driver type that the Host Bus Adapter is currently using:

# esxcfg-scsidevs -a


# esxcli storage core adapter list

Note: The second column shows the driver that is configured for the HBA.

1. Run this command to view the driver version in use:

# vmkload_mod -s HBADriver | grep Version 

For example, run this command to check the vmkata driver:

# vmkload_mod -s vmkata | grep Version 

or you may also use following cmd.

esxcli software vib list | egrep vmkata

This will show you the driver version of hba.

To obtain the driver version for all HBAs in the system:

# for a in $(esxcfg-scsidevs -a |awk '{print $2}') ;do vmkload_mod -s $a |grep -i version ;done

That's all... :)


  1. Great info. Is there way to get HBA firmware drivers for all ESX hosts?

    1. Yes, this can be done using a PowerCLI script...

    2. You may find this useful,

  2. thank you for the command for a in $(esxcfg-scsidevs -a |awk '{print $2}') ;do vmkload_mod -s $a |grep -i version ;done