Stuttering on external display

Hi All,

I’m setting up a FW13 7640u mainboard with a Nvidia 3060Ti in a Cooler Master EG200

Fresh install of Ubuntu 24.04

Followed these guides:

https://ubuntu.com/server/docs/nvidia-drivers-installation

https://www.reddit.com/r/framework/comments/11dtm78/guide_for_setting_up_egpu_with_framework_11th_gen/

Now the external display is working (huzzah!) but it stutters whenever I move my mouse quickly or mouseover any non-text elements on a website. It only does this on the external monitor, moving the same browser window back to the laptop monitor removes the issue. The external monitor is set to 165Hz as per specs in Settings->Displays.

$ uname -r
6.8.0-35-generic

$ cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module 535.171.04 Tue Mar 19 20:30:00 UTC 2024
GCC version:

eGPU is connected via port1 USB C

Any ideas? Thanks for the assistance!

Update:

I tried installing Plasma which disabled both displays completely, it would show some lines during startup and then turn black afterwards no matter what I did.

Repeated everything except for the last tutorial (creating a xorg.conf) and now it’s just using Wayland. Setting the nvidia card in egpu-switcher isn’t doing anything.

Update: Installed steam and ran a game on DX12 which I guess means the eGPU is working?

Hey, sorry you haven’t had any support until now. Nvidia is known to be problematic in linux with drivers. I would advise you to use the open source nvidia-provided drivers and if that doesn’t work, nvk or nouveau which are the open source community drivers. Nvidia cards are known to be problematic under wayland, which plasma and gnome both default to I believe. Try X11 maybe? Also, stuttering problems with wayland were fixed in the latest drivers / kernel so 24.02 might get the patches soon, but we don’t know yet as they are usually reluctant to include major new code after the OS as been published and also won’t get the new kernel 6.9.

Be wary: you linked the guide for 22.04 but mentionned installing 24.02! Here is the guide for 24.02: Ubuntu 24.04 LTS Installation on the Framework Laptop 13 - Framework Guides

Your firmware correction is also for 22.04!! Important things are changed in the backend between releases of ubuntu so be sure to follow the instructions for your release.

As a technical user, I know it’s not ideal to recommend others distros as it is highly disputed in the community but here I believe it is a legitimate case as the fix for your problem is already out, you would be better off with a distro that is stable but moves a bit faster like Fedora, I would personally use Bazzite as it is basically fedora with steam and other quality of life features, and a special framework and nvidia version that takes the hassle out of installing drivers and everything. It’s very stable and much simpler to install, I’ve tested it. Framework also has non-official community support for bazzite and official support for fedora 40.

Page that list support:Framework | Linux Compatibility on the Framework Laptop

Make sure when you install bazzite in the very first step of the guide to choose these options when you are on https://bazzite.gg/, not the ones told in the guide, after clicking download as you have an nvidia GPU (obviously you can choose KDE/gnome freely):

Capture d’écran du 2024-06-19 02-12-35

Bazzite Intall guide: Installing Bazzite onto a Framework Laptop 13 AMD - Framework Laptops - Universal Blue

If you want fedora:

Fedora install guide: Fedora 40 Installation on the Framework Laptop 13 - Framework Guides

That’s really helpful, thank you! I’ll give Bazzite a try

Installed Bazzite-Nvidia but the external monitor is just black. It will show the Framework screen during boot but that’s it.

In Settings->About shows it is only using the onboard AMD graphics, but the Thunderbolt connection is Authorized and lspci shows the Nvidia GPU listed

Should I look at installing all-ways-egpu? (failed saying Read-Only file system)

Its very weird, normally it would be OK, as bazzite ships X11 with special Nvidia drivers so it has no reason to bug out as your GPU is maybe the most common gpu of all time according to steam hardware survey so driver support should not be a problem. I would make sure that the GPU is fully working especially if you got it recently from second hand market, and that the cable from the GPU enclosure to your laptop is rated with proper speeds and also working properly and of good quality, ideally the cable given with the enclosure.

The fact that it lists the GPU as present in lscpi and the connection as active is very promising, maybe try to see if there is an option to set a GPU as your primary GPU as I think what happens is that for battery reasons the AMD iGPU renders while a true GPU is not needed. Myabe launch a game and/or plugin the laptop to force it to switch? Idk, I haven’t had any iGPU in the past so I rely on what others told me, but if everything is detected thats a very good sign, maybe try searching internet for options in GNOME/KDE to manually select the main GPU. Maybe try apps for Nvidia in the flathub that allows to control things like this, it could be that the option to switch GPU is at an OS level more than a desktop/wayland level.

Also, (I only thought about this now) maybe your ubuntu problem of stutter is because you try to push wayyy to much data over that poor thunderbolt cable. What is the resolution of your screen? 4K, 2K, 1080p? I honestly don’t think any eGPU can output more than 4k 60fps or 1440p 120Hz realistically (might do 1080p 165Hz though). I mean you can set the output to that but then it will start to use horrible display stream compression settings, that might be why when setting it at 165Hz it bugs out on non-text items. That would be logical as non-text elements are more heavy to render as they cannot be completely kept in GPU memory so it is fetching data all the time, having to overcome the horrible display stream compression. That might be the root of the problem right here, eGPUs are not made for high fps gaming, cable tech is not here, even with the latest tech and USB 4 with 80Gb/s (very new standard of USB not present in framework laptops which are 40Gb/s I believe), I would highly doubt you could run 1440p 165 Hz. So maybe try downscaling to 1080p 165Hz or use 60Hz or 120Hz, test and see what works from what is available in FPS and resolutions for your screen. I assure you, 120Hz with no/few Display Stream Compression is ages ahead of 165Hz with heavy compression, both in term of image quality (negating the gains of 1440p) and responsiveness and latency (negating the gains of 165fps). Compression adds a TON of delays everywhere.

Tldr, nvidia GPUs really are a pain. I was so frustrated I sold my nvidia GPU and bought an AMD one. Drivers are also a pain in linux in general when they are not in the kernel, and GPU stuff is ALWAYS the drivers that has the most problems, because all distros do differently, because there’s so much versions (nvidia proprietary, nvidia first party “open source”, nvk, nouveau, nova, for AMD the proprietary drivers, the open source ones, and installing anything for Machine learning like OpenGL is a pain and always breaks…). Good luck mate.

Thanks for the massive and thoughtful reply

I’m still really confused about the whole situation, your guesses all make sense and maybe I should have mentioned -

I bought the card new and apart from the weird egpu behaviour on the 11th gen FW board where it required uninstalling the card (but not the driver) every time you turn on the computer, it worked fine (Win10 btw)

It is on the USBC cable that came with the enclosure

The other partition is running Win11 and everything runs fine ootb (3440x1440@165)

On the Linux side, I had another look at egpu-switcher and it requires Xorg (which won’t work since the session manager is Wayland? Maybe that was my mistake) so I had a go with all-ways-egpu (GitHub - ewagner12/all-ways-egpu: Configure eGPU as primary under Linux Wayland desktops). I must have set incorrectly since it’s gone from having only the laptop display working to neither displays working (the boot screen still shows Framework - Bazzite on both screens). I’ll reinstall Bazzite and try different settings, or as you suggested maybe there’s an Nvidia app that works better.

It’s looking like this Linux install is going to be more of an ongoing experiment and I’ll need to stay daily-driving Windows until I figure it out. Thanks for your support, it’s much appreciated.

Just did a fresh install of Bazzite 3.5.0 which includes the new Nvidia 555.58 drivers as standard

No output from the eGPU, so I installed and ran all-ways-egpu. After running through their guided setup process, this what I get from all-ways-egpu status:


All-Ways-eGPU Main Menu

  1. Guided Setup
  2. Manual Setup
  3. Disable a GPU (Method 1)
  4. Set boot-vga Flag (Method 2)
  5. Set Compositor Specific Variables (Method 3)
  6. Help
  7. Version
  8. Uninstall all-ways-eGPU
  9. Status
  10. Restart Display Manager
    q. Exit

Enter Choice [0-9]:
9
Method 1 setup with following Bus IDs
0000:c1:00.0 amdgpu
Method 2, 3 setup with following Bus IDs
0000:64:00.0 nvidia
0000:64:00.0 eGPU currently active as primary with Method 2
Unknown device “/dev/dri/card1”: No such device
Method 1 auto switch at startup service
○ all-ways-egpu.service - Configure eGPU as primary under Wayland desktops
Loaded: loaded (/etc/systemd/system/all-ways-egpu.service; disabled; preset: disabled)
Drop-In: /usr/lib/systemd/system/service.d
└─10-timeout-abort.conf
Active: inactive (dead)
Method 2 auto switch at startup service
○ all-ways-egpu-boot-vga.service - Configure eGPU as primary using boot_vga under Wayland desktops
Loaded: loaded (/etc/systemd/system/all-ways-egpu-boot-vga.service; enabled; preset: disabled)
Drop-In: /usr/lib/systemd/system/service.d
└─10-timeout-abort.conf
Active: inactive (dead)

Jul 01 19:31:37 fedora systemd[1]: Starting all-ways-egpu-boot-vga.service - Configure eGPU as primary using boot_vga under>
Jul 01 19:31:37 fedora all-ways-egpu[5888]: Removing bind mounts recorded at /home/catfancier/.config/all-ways-egpu/bind-paths…
Jul 01 19:31:37 fedora all-ways-egpu[5907]: umount: /sys/bus/pci/devices/0000:64:00.0/boot_vga: not mounted.
Jul 01 19:31:37 fedora all-ways-egpu[5911]: umount: /sys/bus/pci/devices/0000:c1:00.0/boot_vga: not mounted.
Jul 01 19:31:37 fedora all-ways-egpu[5888]: Bind mounts removed successfully. Restart Display Manager for changes to take e>
Jul 01 19:31:37 fedora all-ways-egpu[5927]: /sys/bus/pci/devices/0000:64:00.0
Jul 01 19:31:37 fedora all-ways-egpu[5932]: /sys/bus/pci/devices/0000:c1:00.0
Jul 01 19:31:37 fedora all-ways-egpu[5888]: Bind mounts set. Restart Display Manager for changes to take effect.
Jul 01 19:31:37 fedora systemd[1]: all-ways-egpu-boot-vga.service: Deactivated successfully.
Jul 01 19:31:37 fedora systemd[1]: Finished all-ways-egpu-boot-vga.service - Configure eGPU as primary using boot_vga under>
lines 1-16/16 (END)

The line:
Unknown device “/dev/dri/card1”: No such device
is a bit worrisome

After restarting the Display Manager, nvidia-smi now returns the message: Segmentation fault

Yeah, I don’t think we are gonna get it working :smiling_face_with_tear:. Problem like these could have so many causes between the OS, drivers, card, cables, frame, pcie link shielding…

You might wanna reverse to ubuntu if it worked (with stutter but hey it worked).