Compatibility is one of the most important topics in VMware environments (and any other environment for that matter). VMware places a lot of resources into certifying Firmware and Drivers versions with ESXi releases by maintaining the VMware HCL (Hardware Compatibility List).
Checking the HCL is an unspoken rule of thumb when troubleshooting a problem, installing new hardware or upgrading a host. It is important to keep your servers in compliance with the HCL otherwise you run the risk of having issues due to incompatibility.
In this article, we will see how to verify that your network cards and storage HBAs are compliant with the HCL. We are doing it old school with the cli so you can do it even if the host is goosed and you only have the ESXi shell at your disposal.
Obtain the driver of an HBA
- You can start by listing the SCSI devices installed on the host with:
- Find the version of the driver by running (adapt the module name to your request):
The output will show the different HBAs and what driver they are using.
In this case, vmhba3 is an Avago MegaRaid SAS controller using the lsi_mr3 driver (module).
Here you can see that it is running version 7.701.14.00.
Obtain de firmware of an HBA
To obtain the firmware version run the following command:
The output should be similar to this:
We find the driver version again along with the Hardware IDs and the Firmware version: 24.13.0-0105.
Note that if you cannot retrieve the firmware information about all your IO devices using this method, you can try the following. For example, if you have Emulex or QLogic hardware installed, you will need to
- change directory to /proc/scsi/qla## or lpfc
- ls to list the files in the directory
- head -5 # (where #is the HBA number)
If you still can’t find the firmware I suggest you look into the Out of band management card (iDrac, iLO, iRMC, …) and see if you find it there.
Check for HBA compatibility
- We saw them in the previous command but just for the sake of using yet another one, find the hardware IDs of the card with:
- Go to the VMware HCL website
- Select IO Devices in the VMware HCL and search for the ID fields we just gathered then click on Update and View Results. It should propose the hardware you are looking for. You can then click on your ESXi version
- Verify the supported driver and firmware versions of the HCL against the ones you found earlier. Here we can see that our driver version is on the list and our firmware version is slightly higher than the associated one which shouldn’t be a problem
The output should be as follows and gives you the IDs that you need to use in the VMware HCL.
Obtain the driver and Firmware for the Network card
Network cards are a little bit easier to work with than HBAs as you can get a lot of info with esxcli.
Note that you can also use localcli if esxcli is unavailable for some reason (yes it can happen).
- You can use esxcli network nic list to get a list of all your uplinks
- Use the following command to gather information about a particular NIC:
The output should be similar as the following one. We get the driver installed, its version as well as the Firmware version.
Check for NIC compatibility
- Just like we did for the HBA, find the hardware IDs using the same command:
- Again, move on to VMware HCL and search the IDs, select your version of ESXi
- Then verify that your versions are correct
In this case, we can see that our driver is certified but has no firmware associated. This means that VMware didn’t capture this information during the certification process. You may be able to find this information on the website of the hardware vendor (though unlikely).
Follow our Twitter and Facebook feeds for new releases, updates, insightful posts and more.