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:

http://www.virten.net/repo/vmware-iohcl.json

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.

  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 http://www.virten.net/repo/vmware-iohcl.json |
    Con ...
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:Htt
    pWebRequest) [Invoke-WebRequest], WebException
    + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShe
    ll.Commands.InvokeWebRequestCommand
    -----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?

Leave a Comment

NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>