Fedora 36 Nvidia eGPU Suspend Issues

Hi everyone,

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!

Specs:

Framework Laptop
Intel i5-1135g7
1x16GB 3200MHz
WD_BLACK SN750 2TB
ADT-Link R43SG-TB3
MSI Gaming X GTX 1650S
Fedora 35 5.17.8-200 x86_64
Driver 510.60.02

Kernel args:

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

I suspect you are running wayland.
There have been issues with nvidia and wayland and suspend as well as with external monitors.

I have an nvidia card in my laptop and to use the external monitor I have to use xorg and not wayland. That is something related to 36, wayland, and nvidia driver updates. With xorg the external monitor has no issues.

Hi @be-far Open and close the lid could help. Some laptops have hardware issues with sleep. This open and close thing is a solution from a hardware technician.

Hi Jeff,

I am running Xorg/X11. On login, my DE selected is simply “Gnome”. I have the option to select “Gnome on Wayland”, but it is not selected.

Interestingly, with the eGPU disconnected, I receive an option titled “Gnome on Xorg” as well.

echo $XDG_SESSION_TYPE
x11

Hi Jaap,

When I am using both monitors in a “join displays” setup, closing the lid disables the internal screen and switches to “single monitor” on my eGPU’s connected display.

When I am using only the external, closing the lid does nothing.

With the eGPU disconnected, closing the lid enters sleep.

The behavior I am talking about occurs whether I press the laptop power button or select the “suspend” menu item from the dash.

Hey @be-far,

Sorry to ping you on an old thread but I couldn’t send a PM. How’s your experience so far with the ADT-Link eGPU on Linux? I also have a Framework laptop and was wondering what features are working. So your input would be much appreciated :slight_smile:

Hi Danny!

Pretty much nothing has changed since this post.

I’ve tried Mint Xfce, Fedora 35/36, EndeavourOS, vanilla Arch, Archcraft, Manjaro, and Ubuntu 22.04 in total on the Framework, and only ever had the problem with suspend/resume (all distros perform the exact same: s2idle wakes immediately, deep hangs on resume) on proprietary drivers. Hardware acceleration works properly, and I can even play games with the proprietary nvidia driver. Noveau worked well enough, albeit slowly and with the occasional hang on resume.

Since this is my one dealbreaking issue and I’ve spent too much of my life trying to figure it out, I’ve chosen not to pursue linux on the framework (at least with any combination of the R43SG and an NVIDIA card) any further for now. If you’re able to get a similar setup to mine where suspend works, I would very much appreciate it!

So it prevents sleep on s2idle but doesn’t hang the laptop right? Can you (un)plug the eGPU while the laptop is running or you have to plug the eGPU then start the laptop?

Sorry it didn’t work for you and I’ll sure share information if I buy it and get the suspend mode working. I know you already spent time on this but if you decide to try again in the future, feel free to ask for help on the #linux channel on the Framework Discord server. There’s a couple of knowledgeable linux folks there that may be able to help you get more debug info and probably the udev rule to work to see if it also fix your issue.

Correct. Sometimes, on some distros (typically Fedora), this immediate wake was accompanied by graphical glitches that would only go away on restart.

Noveau: Hot-plugging reloads the display session. Hot-unplugging hangs.

NVIDIA: Hot-plugging hangs (Xorg) or does nothing (Wayland). Hot-unplugging hangs.

I’ve asked there a few different times either for troubleshooting help or for someone with a similar setup, I sadly never got a response or inquiry for more info.

Funnily enough, udev rules were one route I chased due to an ancient NVIDIA forum thread about the gpu’s audio device for the connected monitor causing hang on resume. Neither udev rules nor pcistub kernel parameters would disable the darn device so I couldn’t check if it was the issue, and it was using the snd_hda_intel kernel module (which is used by my actual headphones) so I couldn’t just disable that.