I’m trying to get my nvidia egpu working on Linux. Currently, on Fedora 35 Xorg (with the very convenient egpu-switcher script I found), the device works as intended and I can restart with the egpu disconnected to use my internal gpu.
However, if I try to suspend with the egpu connected, I will receive a black screen on resume. There are no logs past the suspend event in journalctl.
This happens regardless of my content in /etc/modprobe.d/nvidia-power-management.conf (after each change I updated the initramfs with
sudo dracut -f, and regardless of whether I have the nvidia suspend and resume services enabled. The black screen will also have a backlight and a cursor frozen in place if I suspended it while only using the external monitor connected to my egpu, but if I was using dual monitors (external rendered by egpu, internal rendered by igpu), the external monitor will claim no signal and only the backlight will be on the internal monitor.
Interestingly, if I am attempting to use s2idle, the laptop will immediately resume as soon as it suspends, producing this behavior, but if I use deep sleep (S3), the laptop will wait for me to wake it before the freeze happens.
An NVIDIA forum post for kernel 5.6 displays my exact behavior and the person is able to view extra debugging info through journalctl which I couldn’t figure out how to access, then diagnose the problem as being the NVIDIA audio device for the connected monitor and disable it with a udev rule fixed their problem. I attempted to try this fix anyway, but the udev rule would not disable the device, and neither would placing the device+vendor id in a kernel parameter! I’d like to try this fix but have had no luck doing so.
I have confirmed that both s2idle and deep sleep work as intended without the egpu connected.
Any help is appreciated. Thanks!
WD_BLACK SN750 2TB
MSI Gaming X GTX 1650S
Fedora 35 5.17.8-200 x86_64
rhgb quiet nvme.noacpi=1 usbcore.autosuspend=-1 pcistub=pci-stub.ids=10de:10fa mem_sleep_default=s2idle "acpi_osi=!Windows 2020" rd.driver.blacklist=nouveau modprobe.blacklist=nouveau nvidia-drm.modeset=1