WilliamLam.com

  • About
    • About
    • Privacy
  • VMware Cloud Foundation
    • VMware Cloud Foundation 9
  • VKS
  • Homelab
    • Hardware Options
    • Hardware Reviews
    • Lab Deployment Scripts
    • Nested Virtualization
    • Homelab Podcasts
  • VMware Nostalgia
  • Apple
You are here: Home / ESXi / Programmatically accessing the Broadcom Compatibility Guide (BCG)

Programmatically accessing the Broadcom Compatibility Guide (BCG)

05.06.2025 by William Lam // 7 Comments

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.

Categories // ESXi, VSAN Tags // ESXi, hcl, vcg, VSAN, vSphere

Comments

  1. *protectedchauffeur privé LYON says

    05/13/2025 at 3:41 am

    application chauffeur privé 06 vous pouvez visiter le site

    Reply
  2. *protectedEric James Randall says

    06/12/2025 at 9:37 am

    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!

    Reply
    • William Lam says

      06/12/2025 at 9:45 am

      Nope. I’m using PS7 as well, it’s basic REST

      Reply
  3. *protectedKrishnaprasad K says

    06/23/2025 at 4:21 am

    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)

    Reply
    • *protectedKrishnaprasad K says

      06/23/2025 at 11:53 pm

      I think I got it resolved by converting the negative values returned. You may discard this comment, thanks.

      Reply
  4. *protectedKrishnaprasad K says

    07/03/2025 at 5:41 am

    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.

    Reply
  5. *protectedGuillermo says

    08/28/2025 at 11:09 am

    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

    Reply

Thanks for the comment!Cancel reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Search

Thank Author

Author

William is Distinguished Platform Engineering Architect in the VMware Cloud Foundation (VCF) Division at Broadcom. His primary focus is helping customers and partners build, run and operate a modern Private Cloud using the VMware Cloud Foundation (VCF) platform.

Connect

  • Bluesky
  • Email
  • GitHub
  • LinkedIn
  • Mastodon
  • Reddit
  • RSS
  • Twitter
  • Vimeo

Recent

  • VCF 9.0 Fleet Latency Diagram 12/11/2025
  • Quick Tip - Downloading VMware Cloud Foundation (VCF) Consumption CLI for Air-Gapped Environments 12/10/2025
  • Automating VCF Operations Objects & Metrics Reporting 12/08/2025
  • Quick Tip - Using VCF CLI to login to vSphere Supervisor when configured with VCF Automation 12/05/2025
  • Automating the Reporting of VCF Workload Domain Import Pre-Check Validations 12/04/2025

Advertisment

Privacy & Cookies: This site uses cookies. By continuing to use this website, you agree to their use.

To find out more, including how to control cookies, see here: Cookie Policy

Copyright WilliamLam.com © 2025

 

Loading Comments...