Qubes 4.3.1 installation black screen (RTX 4090) – ASUS Z790 iGPU + GPU passthrough setup

Dear Qubes Community,

I hope this message finds you well. I am a new Qubes OS user, and I have been trying to install Qubes OS 4.3.1 on my hardware over the past few days. I have read the official documentation and many community threads, but I am currently stuck and would really appreciate your guidance.

My Hardware:

Motherboard: ASUS Z790 (BIOS fully updated)
CPU: Intel Core i9-13900K (with Intel UHD 770 integrated graphics)
GPU: NVIDIA GeForce RTX 4090
RAM: 64GB DDR5
Storage: 1TB NVMe SSD

My Goal:

I would like to use the UHD 770 iGPU for dom0 display output, and later pass through the RTX 4090 to an AppVM (HVM) for GPU-intensive workloads (e.g., AI inference or gaming). I understand this is a complex setup, and I am willing to learn.

The Problem – Installation Phase:

When I boot from the Qubes OS 4.3.1 USB installer, the system starts GRUB, but immediately after selecting the boot option, my monitor loses signal and shows “No Signal”. I never see the Anaconda installer screen.

I tried the official documentation’s advice for NVIDIA cards, which suggests adding parameters to the kernel line. However, I could not find a line starting with kernel= in the GRUB editor—only a line starting with linux (I believe the documentation may be outdated). I added the suggested parameters after the quiet keyword instead, as shown below:

nouveau.modeset=0 rd.driver.blacklist=nouveau video=vesa:off

I also tried the alternative set of parameters:

noexitboot=1 modprobe.blacklist=nouveau rd.driver.blacklist=nouveau --- initrd.img

Unfortunately, neither of these worked. The monitor still went into “No Signal” mode.
Eventually, I found that adding inst.vnc to the parameters allowed me to proceed with the installation via VNC (using port 5901). This was a workaround, but it did not solve the underlying graphics issue.

The Problem – Post-Installation:

After successfully installing Qubes via VNC and rebooting, I faced the same issue: the system boots, but LightDM never starts, and the graphical login screen does not appear. I can still switch to tty2 (Ctrl+Alt+F2) and log into dom0 via the command line.

When I try startx, I get the classic error:

(EE) no screens found
(EE) Server terminated with error (1)

What I Have Tried So Far (Without Success):

BIOS Settings (ASUS Z790):

  • I changed Primary Display from Auto/PCIE to CPU Graphics (to force iGPU priority).
  • I enabled iGPU Multi-Monitor.
  • I set DVMT Pre-Allocated to 256M.
  • I enabled VT-d and VT-x.
  • I enabled Above 4G Decoding and disabled Resizable BAR (I also tried the opposite).
  • I enabled Control Iommu Pre-boot Behavior (and also tried disabling it).
    GRUB Kernel Parameters (tried various combinations in /etc/default/grub):
    modprobe.blacklist=nouveau rd.driver.blacklist=nouveau i915.force_probe=* rd.qubes.hide_pci=01:00.0,01:00.1 (this caused the system to shut down immediately after GRUB)
  • I also tried nomodeset and i915.modeset=1
  • After each change, I ran sudo grub2-mkconfig -o /boot/grub2/grub.cfg and rebooted.

Physical Display Connections:

I confirmed that my monitor cable is plugged into the motherboard’s HDMI/DP port (not the RTX 4090).

Verification:
lspci | grep -i vga shows both the UHD 770 (00:02.0) and the RTX 4090 (01:00.0).
lspci -k | grep -A 2 VGA shows that the i915 driver is not binding to the iGPU, and the nouveau driver is still trying to claim the RTX 4090 despite being blacklisted.

Despite all these attempts, the system still hangs at Starting lightdm.service - Light Display Manager during boot. Xorg refuses to start, and the log file shows (EE) no screens found.

My Questions to the Community:

BIOS settings: Could someone with an ASUS Z790 (or similar) board share a definitive list of BIOS settings required for Qubes OS to correctly recognize and use the UHD 770 iGPU for dom0, while allowing the RTX 4090 to be reserved for later passthrough? Are there any specific options I might have missed (e.g., IGD Multi-Monitor, RC6, or anything under PCI Subsystem Settings)?

GRUB parameters: Where exactly should I add the parameters in the modern GRUB configuration (since the documentation mentions a kernel= line that no longer exists)? What is the correct and complete set of parameters to force Qubes to:

  1. Blacklist nouveau completely,
  2. Force-load the i915 driver for the UHD 770,
  3. Ignore/hide the RTX 4090 from dom0 (without causing an immediate shutdown)?

I noticed that rd.qubes.hide_pci=01:00.0,01:00.1 caused a sudden power-off, which seems unusual—has anyone experienced this, and is there a different way to hide the GPU?

Kernel version: Would updating to kernel-latest help with iGPU compatibility? If so, could you guide me on how to install it from the text console (tty2) since I do not have a graphical environment?

Xen/hypervisor interaction: Could Xen be interfering with the iGPU initialization? Is there any Xen-specific parameter I should add to allow dom0 to properly use the i915 driver?

Alternative approach: Should I temporarily install a lightweight desktop environment or use a different display manager to debug the Xorg issue, or is this purely a driver/kernel parameter problem?

Additional Information:

I have read the official Qubes documentation on NVIDIA GPUs and the GPU passthrough guide.
I have also searched the community forums and Reddit but could not find a definitive solution for the combination of ASUS Z790 + 13900K + RTX 4090.

I am happy to provide any logs you need (e.g., Xorg.0.log, dmesg, journalctl -xe) upon request. I genuinely want to make Qubes work on this hardware, and I appreciate any time and expertise you can offer.

Thank you very much for reading, and I look forward to your suggestions.
Best regards,

Hi quber2025 - and welcome! :slight_smile:

Did you go with the default kernel or the kernel-latest? – you can check with

uname -a

I’m not sure about the correct driver for the UHD 770 card .. but there are some notes about missing drivers for Xe-graphics - eg:

– I don’t know if it’s relevant for you (I have old hardware), so it’s only a suggestion …

:slight_smile:

thanks so much sir But I feel like it didn’t solve my problem, but I sincerely respect

Your issue seems to be that Xorg still try to use your nvidia card while having no suitable driver for it. Check dmesg in dom0, you will probably see drivers errors saying that 4090 is not supported; it can be useful to debug. You probably need to configure satan xorg.conf to force it to not try to use nvidia card. Try that GPU Passthrough -> lightdm.service won't start - #20 by light it could help. Create a Gaming HVM .

I had the same issue that I solved on similar hardware a year ago, but I don’t have access to it currently and don’t remember what I exactly did

Sir, I kindly ask you to carefully think through the installation steps. I know you are a Qubes expert. I have tried every possible approach and I am at my wit’s end. Could you please teach me how to get past this issue

I too think that your Qubes installation somehow choose NVIDIA as primary GPU. So, the next thing I would try is to pull it out temporarily and try to install Qubes on Auto/PCIE first.

When that successes, then installing drivers (when they are available) and hide it from dom0 with rd.qubes.hide_pci=01:00.0,01:00.1, recreate grub and(!) regenerate initramfs with sudo dracut --regenerate-all --force.

When that couldn’t help, then I think BIOS is the culprit.

Can you remove the 4090, install qubes and then reinstall 4090 (with the grub flag to dom0 ignore the 4090). This is what I did with my amd (CPU and discrete gpu) qubes machine

Your meaning is to first unplug the 4090 power socket, then install the Qubes system, and after installation is complete, reinsert the 4090 power cable, right? After installation, it seems I need to make dom0 ignore this 4090, correct? Do you still have the command to ignore the 4090 graphics card input in dom0? I’m afraid the AI might talk nonsense again. If so, does that mean the 4090 can be passed through directly to any AppVM? @corny

After removing the 4090, shouldn’t the Primary Display be changed to CPU Graphics? These two options, Auto and PCIE, aren’t PCIE used for graphics card pass-through?

In addition, can the command steps be more specific? I think what you have tested should be more accurate than AI. AI seems not to be very clear about Qubes’ problem. It may be because there is too little data. @corporateblush

See also:

:slight_smile:

I do not know the 4090, but I recommend-

  1. Turn off computer
  2. Disconnect from power & wait 3 minutes.
  3. Unplug power and remove the card completely from the motherboard.

From experience, at least some GPU work OK with no power connector, using power from PCI bus.

On my desktop, just pulling the 4090 would create a non booting issue. I had to remove the GPU from the pci slot.

The grub command to hide it is here (the first section)

I have similar hardware and ran into the same issue.
The culprit is X11 not choosing the correct GPU to display the output with, it chooses the Nvidia GPU as primary by default. I couldn’t figure out why this happens even when the GPU is hidden via rd.qubes.hide_pci.
What solves the problem for me whether the GPU is hidden or not is to specifically tell X11 to use the Intel GPU.
Boot up your computer, once the grub screen pops up press the “E” key on your keyboard to edit the boot parameters. On the linux line add the parameter init=/bin/bash and continue the boot process.
After typing your password for the encryption of the disk the boot process will jump right into a shell with your unlocked disk.
Use vi to create a new file /etc/X11/xorg.conf.d/01-intel.conf
place the following contents:

Section "Device"
    Identifier  "IntelGPU"
    Driver	"modesetting"
    BusID	"PCI:0:2:0"

make sure that your iGPU uses that PCI ID but its usually the same for 13th / 14th gen processors.
save the file and reboot the system.
X11 should start on the Intel GPU now.

thanks so much I will try

I tried but I failed,

sudo nano /etc/default/grub

rd.qubes.hide_pci=01:00.0,01:00.1 rd.driver.blacklist=nouveau

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

sudo vim /etc/X11/xorg.conf.d/01-intel.conf

Section “Device”
Identifier “IntelGPU”
Driver “modesetting”
BusID “PCI:0:2:0”
EndSection

I can see the grub interface, but after entering it, it shows no signal. The bios setting has been changed to cpu display, the IGPU is enabled, and the HDMI cable has been plugged into the motherboard interface.

@neowutran @tze @corporateblush

Did you try physically removing the 4090 (not just removing the power connection but removing 4090 from slot), installing qubes fresh (only using the igpu) then physically reinstalling the 4090 and hiding it from dom0 in the grub ?

Also, are these pci address numbers verified by you as the ones on your system or are they just copied from the other replies ? For example, my pci address numbers are different

I really haven’t tried this. After all, there are still risks in unplugging and plugging the graphics card. I want to try various methods without unplugging and plugging the graphics card first.@corny

Please provide “dmesg” result.

To brute multiple things:

In your GRUB_CMDLINE_LINUX, add “rd.driver.blacklist=nouveau nouveau.modeset=0 rdblacklist=nouveau”
same in GRUB_CMDLINE_XEN_DEFAULT.
20-intel.conf:

Section "Device"
 Identifier "Intel Graphics"
 Driver "intel"
 Option "AccelMethod" "none"
 Option "DRI" "0"
 Option "DDC" "false"
 VideoRam 16384
EndSection

delete anything related to nvidia, like
sudo dnf remove xorg-x11-drv-nouveau
sudo rmmod nouveau

Enable “testing” repo in dom0, update, install kernel-latest and use it.
Install KDE, configure it for wayland instead of Xorg, switch from lightdm to sddm: KDE (desktop environment) — Qubes OS Documentation

You should succeed with a combinaison of that

I tried part of your solution

In your GRUB_CMDLINE_LINUX, add “rd.driver.blacklist=nouveau nouveau.modeset=0 rdblacklist=nouveau”

@dom0:~$ cat /etc/X11/xorg.conf.d/20-intel.conf
Section “Device”
Identifier “Intel Graphics”
Driver “modesetting”
BusID “PCI:0:2:0”
EndSection

As for the things you mentioned about deleting, after all, they are all internal things in the system. I am a little hesitant to delete them because I am considering whether they will affect the entire system or upgrade in the future.

bios is (Primary Display changed to CPU Graphics, iGPU Multi-Monitor set to on)
The monitor cable is plugged into the motherboard socket, but it basically fails. There is no signal after entering grub or there is no signal after entering the hard disk password. I don’t know what the problem is.

Or do you have to unplug the graphics card from the PCIe to install it (of course this is the last resort). I hope you can clearly explain all the steps, where to execute or add them, and the commands. I am not an expert after all, thank you.@neowutran

Because it always failed, I re-formatted all the hard drives and the qubes system using the winpe system. I found that using the winpe system, if the monitor cable is completely plugged into the motherboard socket, there is no problem and everything can display normally. There should be something wrong with the qubes system design.

In addition, I would like to ask Corny whether to unplug the 16pin power supply cable or unplug the graphics card from the motherboard (I have never tried this solution because 1. It is risky for the graphics card, and 2. It is too troublesome). After unplugging and installing, do I still need to do dom0 to hide the graphics card? If needed, please give me the complete steps and commands, thank you

In addition, I hope other people with operational experience can discuss and give solutions, thank you.

@corny @neowutran