WilliamLam.com

  • About
    • About
    • Privacy
  • VMware Cloud Foundation
    • VMware Cloud Foundation 9.1
    • VMware Cloud Foundation 9.0
  • VKS
  • Homelab
    • Hardware Options
    • Hardware Reviews
    • Lab Deployment Scripts
    • Nested Virtualization
    • Homelab Podcasts
  • VMware Nostalgia
  • Apple
You are here: Home / ESXi / ESX Passthrough of AMD Ryzen Integrated Graphics (iGPU)

ESX Passthrough of AMD Ryzen Integrated Graphics (iGPU)

05.26.2026 by William Lam // 1 Comment

I recently had a conversation with Wenchao (creator of AMD Zen4/Zen5 IPMI Thermal Driver for ESX Fling and Realtek Network Driver for ESX Fling) about the incredible work he has done to support the VMware/Broadcom community. His latest contributions has really closed the capability gap when running ESX on popular AMD Ryzen platforms like the Minisforum MS-A2, which been an ideal system for running VMware Cloud Foundation (VCF) 9.1 in a lab environment.

The only remaining capability we have not yet been able to take advantage of is the integrated graphics (iGPU) on modern AMD Ryzen systems, which have become surprisingly powerful for running AI models.

While this has been a topic I have researched quite extensively and even spent time debugging with Engineering, it is always great to get a new perspective on things. I kid you not, a few days later Wenchao came back with a solution that had a few caveats which I was able to help iron out with some of my prior experience in this area. 😆

While I fully credit Wenchao for solving this for ESX, he definitely benefited from the earlier efforts of the Proxmox community, who have also faced similar challenges with iGPU passthrough and have found a viable workaround! 👏

Long story short, for an AMD iGPU to be usable by a VM running on ESX (or Proxmox), both the VBIOS rom and GOP (Graphics Output Protocol) file is required. While you can extract and generate your own VBIOS and GOP files (see below for the instructions), the Proxmox community have already contributed a number of these files to the Github repo, which you can used directly.

If you can not find your exact system, you may need to generate your own VBIOS and GOP files, which you can then contribute back to benefit the broader IT community. I personally have been able to test and validate both my Minisforum MS-A2 (Ryzen 9 7945HX) and GMKtek K11 (Ryzen 9 8945HS) using VBIOS and GOP rom files found within the Github repo with an Ubuntu 26.04 VM by following the instructions below.

Step 1 - Download your respective iGPU VBIOS and Audio rom file from https://github.com/isc30/ryzen-gpu-passthrough-proxmox

Minisforum MS-A2

  • VBIOS ROM: https://github.com/isc30/ryzen-gpu-passthrough-proxmox/blob/main/vbios_7945hx_MS-A2.bin
  • GOP ROM: https://github.com/isc30/ryzen-gpu-passthrough-proxmox/blob/main/AMDGopDriver.rom

GMKtek K11

  • VBIOS ROM: https://github.com/isc30/ryzen-gpu-passthrough-proxmox/blob/main/vbios_8945.bin
  • GOP ROM: https://github.com/isc30/ryzen-gpu-passthrough-proxmox/blob/main/AMDGopDriver.rom

Step 2 - Upload both rom files into ESX datastore, you can either place the files into a shared directory or directly within the VM folder which you will need to wait until Step 4 has been completed.

Step 3 - Enable passthrough for the AMD iGPU using the vSphere UI or the ESX Host Client as shown in the screenshots below.

Minisforum MS-A2


GMKtek K11


Step 4 - Create a Linux VM (e.g. Ubuntu) using the vSphere UI or the ESX Host Client and then install the operating system. In my example, I am using Ubuntu 26.04 and you will want to enable RDP and ensure it is functional before proceeding to the next step as we will need to disable the default VMware SVGA device.

apt update && sudo apt upgrade -y
apt install -y xrdp xfce4 xfce4-goodies
echo "startxfce4" > ~/.xsession
adduser xrdp ssl-cert
systemctl enable xrdp
systemctl restart xrdp
ufw allow 3389/tcp
ufw reload

Once you have confirmed the VM is accessible over SSH and RDP, you can shutdown the VM.

Step 5 - Edit the VM and add the two PCI devices: iGPU and Audio Controller, make a note of the order in which the devices are added as this will be important in the next step.

Minisforum MS-A2


GMKtek K11


Step 6 - Continue editing the VM and now click on the Advanced Parameters tab where you will add the following settings. Ensure rom filename for pciPassthru0 and pciPassthru1 matches the order of PCI devices that was used in previous step (e.g iGPU and then Audio Controller). The filename for rom file can be local path as shown below where the file is stored alongside the VM configuration files within the vSphere Datastore or a shared directory where the full path of the vSphere Datastore must bbe used (e.g /vmfs/volumes/datastore1/files/vbios_7945hx_MS-A2.bin)

In addition, we also need to set the svga.present to FALSE, which will disable the VMware SVGA device and disable the VM Console, which is why Step 4 is important, so that we can access the system after we power on the VM.

Minisforum MS-A2

  • pciPassthru0.opromEnabled = TRUE
  • pciPassthru0.filename = "vbios_7945hx_MS-A2.bin"
  • pciPassthru1.opromEnabled = TRUE
  • pciPassthru1.filename = "AMDGopDriver.rom"

GMKtek K11

  • pciPassthru0.opromEnabled = TRUE
  • pciPassthru0.filename = "vbios_8945.bin"
  • pciPassthru1.opromEnabled = TRUE
  • pciPassthru1.filename = "AMDGopDriver.rom"

Once you have made all the changes, go ahead and click OK to complete the reconfiguration.

I have found manually adding the VM Advanced Setting can be quite error prone, so after you have manually added the two iGPU and Audio Controller, you can run the following PowerCLI snippet to automate the above with your own values.

$settings = @{
    "pciPassthru0.opromEnabled" = "TRUE"
    "pciPassthru0.filename" = "vbios_7945hx_MS-A2.bin"
    "pciPassthru1.opromEnabled" = "TRUE"
    "pciPassthru1.filename" = "AMDGopDriver.rom"
}

$vm = Get-Vm "Ubuntu2604"

foreach ($setting in $settings.GetEnumerator()) {
    New-AdvancedSetting -Entity $vm -Name $setting.Key -Value $setting.Value -Force -Confirm:$false
}

$vm | Get-AdvancedSetting -Name "svga.present" | Set-AdvancedSetting -Value $false -Confirm:$false

Step 7 - Power on the VM and SSH to the system and run the following command to verify that iGPU has been detected and fully initialized.

dmesg | grep 'Initialized amdgpu'

Minisforum MS-A2


GMKtek K11


Step 8 - You can install additional AMD tools such rocminfo and rocm-smi which all work once the iGPU is available.

apt install firmware-amd-graphics firmware-linux-nonfree mesa-utils mesa-utils- extra mesa-vulkan-drivers -y
apt install radeontool vulkan-tools amd-smi -y
apt install -y rocm rocm-smi

Minisforum MS-A2


GMKtek K11

Passthrough of iGPU to Windows

It looks like the Proxmox community has also observed the notorious Error 43 issue when using an AMD iGPU passthrough with Windows. Leveraging this information, Wenchao and I was able to do some experimentation to get this working for ESX, but I will say for my own setup, it was not very consistent or reliable ... In any case, I will share our findings and perhaps this will help some folks who may be interested in using this in a Windows setup.

Step 1 - Add the following to /etc/vmware/passthru.map on your ESX host, which will ensure when you enable iGPU passthrough, that USB devices on the system is accessible and is not passthrough to VM. You will need to reboot ESX host once you have saved your changes.

# AMD Graphics
1002  164e  d3d0     default
1002  1640  d3d0     default

Step 2 - Download your respective iGPU VBIOS and Audio rom file from https://github.com/isc30/ryzen-gpu-passthrough-proxmox

Minisforum MS-A2

  • VBIOS ROM: https://github.com/isc30/ryzen-gpu-passthrough-proxmox/blob/main/vbios_7945hx_MS-A2.bin
  • GOP ROM: https://github.com/isc30/ryzen-gpu-passthrough-proxmox/blob/main/AMDGopDriver.rom

Step 3 - Upload both rom files into ESX datastore, you can either place the files into a shared directory or directly within the VM folder which you will need to wait until Step 4 has been completed.

Step 4 - Enable passthrough for the AMD iGPU using the vSphere UI or the ESX Host Client as shown in the screenshots below.

Minisforum MS-A2


Step 5 - Create a Windows VM and install the operating system. Our experiments used a Windows 11 VM, it may or may not work with earlier versions. Make sure to enable RDP before shutting down the VM and proceeding to the next step.

Step 6 - Edit the VM and add the two PCI devices: iGPU and Audio Controller, make a note of the order in which the devices are added as this will be important in the next step.

Minisforum MS-A2


Step 6 - Continue editing the VM and now click on the Advanced Parameters tab where you will add the following settings. Ensure rom filename for pciPassthru0 and pciPassthru1 matches the order of PCI devices that was used in previous step (e.g iGPU and then Audio Controller). The filename for rom file can be local path as shown below where the file is stored alongside the VM configuration files within the vSphere Datastore or a shared directory where the full path of the vSphere Datastore must bbe used (e.g /vmfs/volumes/datastore1/files/vbios_7945hx_MS-A2.bin)

In addition, we also need to set the svga.present to FALSE, which will disable the VMware SVGA device and disable the VM Console, which is why Step 5 is important, so that we can access the system after we power on the VM.

$settings = @{
    "pciPassthru0.opromEnabled" = "TRUE"
    "pciPassthru0.filename" = "vbios_7945hx_MS-A2.bin"
    "pciPassthru1.opromEnabled" = "TRUE"
    "pciPassthru1.filename" = "AMDGopDriver.rom"
}

$vm = Get-Vm "Ubuntu2604"

foreach ($setting in $settings.GetEnumerator()) {
    New-AdvancedSetting -Entity $vm -Name $setting.Key -Value $setting.Value -Force -Confirm:$false
}

$vm | Get-AdvancedSetting -Name "svga.present" | Set-AdvancedSetting -Value $false -Confirm:$false

Step 7 - Power on the VM and download the latest AMD graphics drivers using the offline driver (AMD Software: Adrenalin Edition). For my MS-A2 Ryzen 9 7945HX, I had used https://www.amd.com/en/support/downloads/drivers.html/processors/ryzen/ryzen-7000-series/amd-ryzen-9-7945hx.html and you will need to install 7zip to extract the file and install the driver by pointing it to drivers folder within Windows Device Manager

Step 8 - Per the Proxmox community, it was found that by adding a startup/shutdown script to setup the device via pnputil, that the Error 43 issue would go away. While Wenchao has had luck with his setup which is using a different AMD system than what I was using, this did not have any affect and I still ran into Error 43 issue.

In any case, you can run the following PowerShell code (requires administrator shell) to automatically add the required entries, since I found manually performing this task a bit tedious

# Run as Administrator

$gpPath = "$env:WINDIR\System32\GroupPolicy\Machine\Scripts"
$scriptsIni = Join-Path $gpPath "scripts.ini"

New-Item -ItemType Directory -Force -Path $gpPath | Out-Null

@"
[Startup]
0CmdLine=C:\Windows\System32\pnputil.exe
0Parameters=/enable-device /class Display /bus PCI /connected

[Shutdown]
0CmdLine=C:\Windows\System32\pnputil.exe
0Parameters=/disable-device /class Display /bus PCI /connected
"@ | Set-Content -Path $scriptsIni -Encoding Unicode

# Make sure Local Group Policy folder exists
$gptIni = "$env:WINDIR\System32\GroupPolicy\gpt.ini"

if (-not (Test-Path $gptIni)) {
    @"
[General]
Version=1
"@ | Set-Content -Path $gptIni -Encoding ASCII
}

gpupdate /force

At this point you can perform a guest reboot and upon the next reboot, the iGPU should no longer show the Error 43.

Step 9 (Optional) - Since this was not the behavior I had observed even after half dozen attempts, I found that you can manually run the disable and enable command which will force the change after the system has booted up but still hitting the Error 43. You can the following commands with administrative shell:

C:\Windows\System32\pnputil.exe /disable-device /class Display /bus PCI
C:\Windows\System32\pnputil.exe /enable-device /class Display /bus PCI


If you have Windows Device Manager open, after running these command it will refresh the UI and you should see that the AMD iGPU is now active and working properly.


Note: YMMV with Step 8 and 9, since I was not able to observe that setting up the startup/shutdown scripts that would automatically enable/disable the device, that Step 9 had worked for me.

Extracting your own VBIOS ROM File

Step 1 - Boot the host that you wish to extract the VBIOS from into Linux (Ubuntu Live is sufficient) and then compile the vbios.c file.

apt install gcc -y
gcc vbios.c -o vbios

Step 2 - Run compiled vbios application to dump the VBIOS ROM file

./vbios

Extracting your own Audio Device ROM File

The instructions below will require a Windows system.

Step 1 - Download the BIOS package from your vendor, you will need to extract the BIOS BIN file (e.g. F1WSA.BIN) and then rename the file to bios.bin

Step 2 - Download the EFI extract tool (UBU_v1_80_a17.rar) and then extract its content into the same directory as the BIOS BIN file from the previous step.

Step 3 - Run the UBU.bat script which will automatically read the BIOS file and choose the following options:

  • 2 (for Video OnBoard)
  • X (for Extracted)

Then press any key to continue and close the window

You should see a file named AMDGopDriver.efi that is saved under Extracted->GOP-><version>

Step 4 - Download the EfiRom tool (EfiRom.exe) into the same directory as the rest of the extracted files

Step 5 - You will need to boot the host with ESX to retrieve the VendorID and DeviceID

lspci -v | grep -A2 'High Definition Audio Controller'


Step 6 - Convert the EFI file to ROM file using the VendorID and DeviceID from the previous step.

EfiRom.exe -f <VendorID> -i <DeviceId> -e AMDGopDriver.efi -o AMDGopDriver.rom

At this point you have successfully generated a VBIOS and Audio ROM Files! 😎

Categories // ESXi Tags // AMD, GMKtec, Minisforum

Comments

  1. *protectedKrushkin says

    06/08/2026 at 8:24 am

    Thank you very much for this article. This topic is very important to me, as I need to try my hand at hardware transcoding and large-scale language models. But all the articles I’ve found on the subject have got me nowhere, despite spending days testing them.
    I also have an MS-a2 model with a 7945HX, but I can’t get the VM to initialise the GPU correctly. Should I install the OS (Debian) in UEFI or Legacy mode? Is it essential to enable IOMMU?
    Thank you in advance for your help.

    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

  • Clarifying Minimum Required ESX Hosts for VCF Deployments 06/18/2026
  • VCF 9.1 - Auditing VCF Management Services (VCFMS) IP Pool Usage  06/17/2026
  • VCF 9.1 - Auditing vCenter Server Connections using the Connection Utilization API 06/15/2026
  • Quick Tip: Resolving OVFTool "Failed to Send File" Errors on macOS 06/13/2026
  • VCF 9.1 - Are You Using the Correct ESXCLI Command to Enable NVMe Tiering? 06/12/2026
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 © 2026

Loading Comments...