The Broadcom Compatibility Guide (formerly VMware Compatibility Guide) is where users would go to check hardware (new or existing) compatibility with VMware software.

There are a number of different compatibility guides that you can search through from CPU processors to servers to the various of I/O devices including accelerators and graphics cards. For users with a small number of hardware devices, search is pretty straight forward but if you have a variety of different hardware to check, the web interface may not be the quickest.
One thing that I was pleasantly surprised to learn was that the Broadcom Compatibility Guide (BCG) could easily be consumed programmatically, unlike the previous VMware Compatibility Guide (VCG) which had a different backend system.
While there is not an official BCG API, which would include documentation, support and backwards compatibility, users can interact with the BCG using the same API as the BCG web interface.
To demonstrate the use of the BCG API, I will be using the I/O Device and vSAN SSD compatibility guide as an example and I have created PowerShell script called broadcom-compatibility-guide-api.ps1 which contains the following PowerShell functions:
- Check-BroadcomCompatIoDevice
- Check-BroadcomCompatVsanSsdDevice
Both of these functions assumes you will be searching based on the combination of the Vendor ID (VID), Device ID (DID) and SubSystem Vendor ID (SVID).
Note: The BCG allows for a variety of search and filter options, the examples below is just one way to consume the BCG APIs. If you are interested in other search methods, take a look at the reference at the very bottom that describes how to consume other filter options and/or compatibility guides from the BCG.
Step 1 - Download the queryHostPCIInfo.ps1 script (which I have also updated to allow users to easily exclude non-applicable devices using an exclusion strings) and then make a note of the device VID(s), DID(s) and SVID(s) that you wish to lookup.

Step 2 - Download the broadcom-compatibility-guide-api.ps1 and dot source the file to access the two PowerShell functions:
. ./broadcom-compatibility-guide-api.ps1
Here is an example checking I/O Device BCG:
Check-BroadcomCompatIoDevice -VID "14e4" -DID "1751" -SVID "14e4"

Here is an example checking vSAN SSD BCG:
Check-BroadcomCompatVsanSsdDevice -VID "8086" -DID "0b60" -SVID "1028"

By default, the function will return the last four supported ESXi releases, but you can change that by specifying the ShowNumberOfSupportedReleases parameter:
Check-BroadcomCompatIoDevice -VID "14e4" -DID "1751" -SVID "14e4" -ShowNumberOfSupportedReleases 2

For checking vSAN SSD BCG, you can also specify specific various supported vSAN Tier (Hybrid Cache, All-Flash Cache, All-Flash Capacity or ESA) by using the following params: -ShowHybridCacheTier, -ShowAFCacheTier, -ShowAFCapacityTier and -ShowESATier):
Check-BroadcomCompatVsanSsdDevice -VID "8086" -DID "0b60" -SVID "1028" -ShowNumberOfSupportedReleases 2 -ShowESATier
Check-BroadcomCompatVsanSsdDevice -VID "8086" -DID "0b60" -SVID "1028" -ShowNumberOfSupportedReleases 2 -ShowAFCacheTier -ShowESATier

If you are interested in automating other compatibility guides within BCG, you can figure out the payload by using browser developer mode. For example, in Chrome before invoking a search within a specific compatibility guide, click the three "dots" on the upper right hand corner of your browser and select More Tools->Developer Tools which will open the Chrome Developer console and you can follow the screenshot to understand the JSON payload specification for the "viewResults" API query.


application chauffeur privé 06 vous pouvez visiter le site
Hi William. Does this require a specific version of Powershell? I am getting a syntax error for all lines containing this: "locale":"en","featureFlags"
Tried on PS 7 and the latest PowerCLI. I'm goingto troubleshoot more in the morning. Thanks for all you do!
Nope. I’m using PS7 as well, it’s basic REST
Hello William, I was trying to test the querypci as a python script, I get a negative value for VendorID. From the API doc, I believe it's expected - "The vendor ID might be a negative value. A vSphere Server uses an unsigned short integer to represent a PCI vendor ID. The WSDL representation of the ID is a signed short integer. If the vendor ID is greater than 32767, the Server will convert the ID to its two's complement for the WSDL representation.".
However I wanted to check how you did a conversion to get the right vendor ID? I tried the formatting as you noted in the powershell but still get a -7f7a for the actual vendor ID 8086.
from pyVim import connect
from pyVmomi import VmomiSupport
from pyVmomi import vim
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
# Connect to the ESXi host
si = connect.SmartConnect(host='', user='root', pwd='')
content = si.RetrieveContent()
#Create a container view
host_view = content.viewManager.CreateContainerView(content.rootFolder, [vim.HostSystem], True)
# Check if the host_view object is not None
if host_view is not None:
# Get the host object
host = None
for h in host_view.view:
# Get the PCIe devices
pci_devices = h.hardware.pciDevice
# Print the PCIe devices
for device in pci_devices:
print(device.id, end=">")
print(device.deviceClassName, end=">")
print(device.deviceName, end=">")
print(f"Vendor ID: {format(device.vendorId, '04x')}")
exit(0)
# Disconnect from the ESXi host
Disconnect(si)
I think I got it resolved by converting the negative values returned. You may discard this comment, thanks.
I've another question , let's say we could get a list of devices using the filters passed onto the data and got a specific device. For the discussion sake, let's say that it's an NVMe device noted at "https://compatibilityguide.broadcom.com/search?program=io&persona=live&column=brandName&order=asc&vid=%5B8086%5D&did=%5B0b60%5D&svid=%5B1028%5D&maxSsid=%5B2184%5D&activePage=1&activeDelta=20". Now If I want to traverse it further to the device and fetch the firmware and driver versions listed as certified, are there any APIs available for it ? I could not traverse through from the code.
William, good afternoon. I edited the first script, "queryHostPCIInfo," to get the SSID column and edited the first function, "Check-BroadcomCompatIoDevice," to filter by SSID, but it tells me it can't find the parameter when I run the query via the API. What could this be?
Hugs