Win10 Qube and GPU passthrough problems

I am having issues with setting up GPU pass-through on my Windows 10 VM, where after tweaking settings relating to PCI, setting up a VBIOS with ROM file, my graphics driver is detected and displays on my separate monitor, but on reboot after setup, the resolution becomes stuck on the minimum and the mouse cursor vanishes. Briefly before going into the default user, there are no problems, only after entering a user account.

I used this guide to setup Windows 10 using the unofficial git-hub repo

Does GPU passthrough work for you with Linux, such as Debian 13?

I haven’t tested it, but I assume it would based on the Windows user-entry behavior

You didn’t share any specifics what exactly you did, just generals. Especially what VBIOS and ROM??? Where in the guide you found that???

They weren’t in the guide and I had to add new instructions. Specifically:

VBIOS seems to play a part in preventing code 43 on display driver:

Generate a rom file: sudo sh -c “echo 1 > /sys/bus/pci/devices/QVM-DEVICE-ID/rom”
Catenate rom: sudo cat /sys/bus/pci/devices/QVM-DEVICE-ID/rom > ~/gpu.rom
Catenate more to rom?: sudo sh -c “echo 0 > /sys/bus/pci/devices/QVM-DEVICE-ID/rom”
Detach pci from device if you haven’t already: qvm-pci detach VM-HERE dom0:QVM-DEVICE-ID
Attach pci: qvm-pci attach --persistent --option permissive=True --option no-strict-reset=True --option romfile=~/gpu.rom VM-HERE dom0:qvm-PCI here

The PCI setup works fine for my dom0 (no problems here, seen in qvm-list pci). My windows 10 vm iso is Build19041.vb_release.191206-1406 (Win10x64-enterprise-ltsc-eval.iso) which I had to download from a non-Microsoft website due to it being restricted on their website.

I have downloaded standard Nvidia drivers, v610.88 custom for just the video drivers, with no Nvidia app. It is detecting my GPU on device manager, it works normally until reboot after installation, which has the resolution issues.

Did you try original NVIDIA drivers that came with your GPU?

I am not sure how you came to the code 43 issue at all.

I tried that but still same error. The problem isn’t the graphic drivers I think, something to do with WIndows because on boot the resolution is normal (1920x1080) temporarily, but then switches when loading default account then it doesn’t change.

Trial and error with code 43, 100% elimination of the driver problem I don’t know why but it works.

Do you have a windows qube with GPU setup? If so, could you explain what you did and any problems you stumbled onto?

I never had win 10. Only win 7 and win 11. Never had any problems, but I had to use original drivers. No guide. Just boot from iso, install windows, install qwt (setting windows accordingly prior to install qwt), install nvidia drivers, attach gpu via Qube manager plus nvidia audio (or nvidia audio to sys-audio), disable MS basic adapter. Do not attach to external monitor if on a laptop, before attaching gpu.

I figured it out, cloned from a pregpu win template, attached PCI of GPU to VM, then installed nvidia drivers onto template, I rebooted and it appeared on both screens. I believe the resolution issue came afterwards, where my GPU monitor was on normal 1920 and my main monitor was on the lowest, changed lowest res to 1920, shutdown, enter qvm-features GPU video-model none to only display on gpu monitor.

I believe your issues were because of the order of steps and because of not disabling MS Basic display adapter - thus display on both screens (the tattler you didn’t mention earlier).

The GPU passthrough itself was working: the NVIDIA driver was detected and the physical GPU monitor was displaying normally at 1920Ă—1080. The problem appeared after Windows logged into the user account, when Windows was seeing both the Qubes virtual/emulated display and the passed-through NVIDIA display.

The Qubes virtual display was stuck at the minimum resolution while the physical GPU monitor was at 1920Ă—1080. Changing the virtual display to 1920Ă—1080 fixed the resolution issue before I disabled the virtual display. That points to a separate multi-display/resolution conflict rather than the passthrough steps simply being performed in the wrong order.

I then used:

qvm-features winvm video-model none

which removed the Qubes emulated video device and left the passed-through GPU as the display.

The disappearing cursor was a separate issue, fixed with:

qvm-features winvm gui-emulated 1
qvm-features winvm gui ''

The VBIOS/ROM was also not strictly required: passthrough worked without it in my testing, although using the ROM seemed to improve reliability / avoid an intermittent Code 43 issue.

So the actual problems were GPU initialization reliability, the separate Qubes virtual-display resolution conflict, and the cursor/GUI issue. It wasn’t simply an issue of the order of the passthrough steps, and the Microsoft Basic Display Adapter wasn’t the issue because it wasn’t present.

Good for you.

For the sake of other users who might read this:
I have never had or even seen video-model feature.
I have never seen anyone successfully using VBIOS/ROM edits when Windows especially and NVIDIA especially, and comments of experienced users are confirming this.
I have never seen any Windows qube without Microsoft Basic Display Adapter as the default one. The fact that the prior step to installing NVIDIA drivers is to install Win qube itself should be telling - no video would be possible without Microsoft Basic Display Adapter.
I have never seen NVIDIA output at the same time on both internal and external display over HDMI or DP or mDP.
I have always had fully functional win 7 and win 11 qubes.

I should correct my earlier description: I was going from memory and got part of the setup sequence wrong. The Microsoft Basic Display Adapter was indeed used during the initial Windows setup, so you’re right about that. I also had the NVIDIA-driver/PCI order backwards in my earlier description.