Skip to content

VMware IO Devices HCL in JSON Format

For a healthy platform and to receive support from VMware it is important to verify that all IO devices are listed in VMwares Compatibility Guide or Hardware Compatibility List (HCL) with their correct driver and firmware version. The HCL is currently only provided as a website which is a problem for automated reports. Therefore I've transformed the VMwares IO Devices HCL into the JSON format, which works great in scripts. Here is the result:

The JSON file is updated regularly. It contains timestamp and jsonUpdatedTime fields that enable you to identify when the JSON file has been updated. I do not use live data, everything is cached. Feel free to use the link in your own scripts. I try to keep the link and format active. If you have questions or need any further information, please comment or contact me.

Currently, the JSON file only contains device information and a link to the official VMware HCL, as shown in the screenshot above. It does not contain driver information which might also be very helpful for automated health checks. I'm working on getting supported driver version information to the list.

To get you started, I've created a demo script that collects device, driver and firmware information, checks if the device is supported and displays a link to the official HCL. Example output:
The script is available on Github.

6 thoughts on “VMware IO Devices HCL in JSON Format”

  1. Exception calling "Format" with "2" argument(s): "Value cannot be null.
    Parameter name: args"
    At C:\Temp\check-iohcl-poc.ps1:30 char:3
    + $Info.vid = [String]::Format("{0:x}", $HBA.VendorId)
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : ArgumentNullException

  2. Hi fgrehl

    I have a problem running this script from my office pc that is behind a proxy server using windows credentials.
    The first time I ran the script I got the following error:

    -----start error-----
    PowerCLI C:\Users\realem\Desktop> .\check_esxi_65_support.ps1
    Invoke-WebRequest : Proxy Authorization Required
    Description: Authorization is required for access to this proxy
    In C:\Users\realem\Desktop\check_esxi_65_support.ps1:15 car:8
    + $hcl = Invoke-WebRequest -Uri |
    Con ...
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:Htt
    pWebRequest) [Invoke-WebRequest], WebException
    + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShe
    -----end error-----

    Googling I found that to is possible to use a proxy server with user's logged in credentials using the this code before to execute the script:

    [System.Net.WebRequest]::DefaultWebProxy = [System.Net.WebRequest]::GetSystemWebProxy()
    [System.Net.WebRequest]::DefaultWebProxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials

    After that, the script runs without errors but doesn't produce any output.
    Do you have any suggestion or idea?

  3. It would be very userfull if supported driver and firmware versions where included.
    I tried to get these value by myself from the VMware HCL but they are included via javascript and i wasn't able to manage this.

    1. It is possible but would bloat that file massively as there are many firmware/driver combos per ESXi version. Also, you have to fetch this information from each device.

      Unfortunately, it's hard to use that data as getting driver/firmware versions from ESXi hosts is quite hard to automate...

      1. Hello,
        First of all thank you for the post - extremely useful.
        How can I get the supported firmware/driver versions and add it to the file?

Leave a Reply

Your email address will not be published. Required fields are marked *