Given that it will boot and output through the display, I’d suspect that it hanging at the “Please wait” is a Microsoft issue. Are you able to ping the VM from an outside machine to ensure that it’s responding at the network layer, or does it go completely offline?
Would it be possible to remove the isolated GPU and boot it with an emulated/virtual adapter, just to see if it completes that way? It may be a matter of drivers getting hung up.
Just a dumb question: how did you isolate the GPU if it’s the only one in your system? The ryzen CPU has no embedded GPU and you should only be able to isolate it for VM use when another GPU is present
I actually don’t have the GPU isolated anymore. At first I tried GPU isolation, but I kept running into issues, so I removed it.
My system has a Ryzen 9 5900X, so there is no integrated GPU. The host is managed over the network, and I use the virtual QEMU/VNC display for installation and recovery.
What finally solved the problem was adding the RTX 3050 to the VM before installing Windows, instead of adding it afterwards. I manually attached the GPU to the VM first, then installed Windows with the RTX already present.
During the Windows installation, the operating system detected the RTX 3050 automatically and installed the basic display driver. After Windows was installed, I installed the NVIDIA driver, and everything worked correctly.
Before that, I was trying to add the GPU to an existing Windows installation, and it would always hang at “Please wait” during boot. A clean Windows installation with the GPU attached from the beginning completely solved the issue.
So in my case, the key was attaching the GPU before installing Windows, not afterwards.
Not necessarily. In my case, passthrough only became stable with Resizable BAR disabled and SR-IOV disabled. The real fix, however, was attaching the RTX 3050 to the VM before installing Windows. Once Windows was installed with the GPU already attached, it detected the card correctly and the NVIDIA driver installed without any issues.
Thanks for the suggestion. That turned out to be very close to the actual solution.
I removed the GPU isolation and created a brand-new Windows 11 VM. The important part was manually attaching the RTX 3050 to the VM before installing Windows.
With the GPU already attached during the Windows installation, Windows detected it automatically and installed the basic display driver. After that, I installed the NVIDIA driver, and everything worked perfectly.
Before that, I was always adding the GPU to an existing Windows installation, and it would consistently hang at “Please wait” during boot.
So in my case, it wasn’t a passthrough or VFIO issue after all—it was the way Windows was installed. Installing Windows with the GPU already attached solved the problem.
I’m still confused… normally for gpu passthrough to a vm you need at least 2 gpus, one for truenas and one that is isolated for vm passthrough.
GPU passthrough with a single gpu has been asked for a long time and afaik it should not be possible…
This. Like, I can tell TrueNAS to pass through the iGPU but it fails to init presumably because TrueNAS itself has already loaded it up and you’re not allowed to isolate it naturally in the settings…
You’re right, I completely forgot that I still have the AMD GPU installed.
The AMD GPU stays with the TrueNAS host, while the RTX 3050 is passed through to the Windows VM.
The real solution for me was creating a new Windows VM and attaching the RTX 3050 before installing Windows. When I tried adding it to an existing Windows installation, the VM always hung at “Please wait”. With the GPU attached from the beginning, Windows detected it during setup and everything worked perfectly.