Nvidia eGPUs on AMD Framework 13 with Arch Linux works surprisingly well

This is more of a fluff post sharing my experience than anything else, so that others that google it to see if it works or not can have an easier time. Some/a fair bit of this might be Nvidia specific, so proceed with caution.

Background

So I had an Nvidia 3060Ti flying around for half a year or so from a desktop computer where the card didn’t really work well with the motherboard and I really didn’t want to bring it back and deal with the orga of it all. Particularly since I was convinced the card worked and that the motherboard was somehow busted, but I really also didn’t want to rebuild the PC with a new motherboard just for that one card.

Therefore I wondered if I can just start ignoring my desktop PC entirely, particularly since boot times on that thing take forever, and just use the thing as an eGPU with my arch linux installation.

What I did / Semi-Guide

I watched a Learn Linux TV video about it (https://www.youtube.com/watch?v=UviWU-1--gU&t=1919s&pp=ygUSZUdQVSBsZWFyIGxpbnV4IHR2), bought a Razor Core X from ebay and tried it out. Now the setup was a fair bit annoying, from what I understand other Distros are far simpler about this because on arch you get to set this stuff up yourself.

Now, I was under Gnome and already using Wayland, so that already made things easier. Because from what I understand, eGPUs on X11 are also possible, but require more finageling with controls and I ran into issues when trying to go down that route like some error messages on boot such as " 1. ucsi_acpi GET_CABLE_PROPERTY failed (-5)".

So on Wayland, what I did was, install the proprietary 550 nvidia drivers via pacman and a couple more packages. So what I ended up with in terms of installed packages was:

  • nvidia 550.78-4
  • nvidia-prime 1.0-4
  • nvidia-settings 550.78-1
  • nvidia-utils 550.78-1
  • switcheroo-control 2.6-4 (this one is not mandatory, it’s just a convenience package that might not work under DEs other than Gnome)

switcheroo-controls needs to be enabled manually via systemd, so running:
systemctl enable switcheroo-control.service and systemctl start switcheroo-control.service.
This allows right-clicking on programs in the Gnome application overview and adds the option “run on external GPU”.

The important packages besides the driver here are prime, because that allows the command “prime-run”, through which we can tell an application to run on the Nvidia eGPU. And then for a given CLI command we can now just use prime-run <command> and it’ll run on the eGPU. In steam, you’ll need to set prime-run %command% in the Launch Options of the game you want to play like this.

Result

The end result is now a framework laptop that works perfectly fine as it is 95% of the time, and the 5% of the time I actually need some extra juice or want to crank up the graphical fidelity I can just plug in the eGPU.

Even better, I can hot plug that thing (into one of the lower/more to the front positioned ports, the upper ports are not full USB4 after all) and the eGPU enclosures I use even charges the laptop while connected this way.

This does have drawbacks. I’m pretty sure I’m feeling some latency going on here or there and I see the odd frame-glitch here or there occasionally, though I’ve been told that the new nvidia driver that currently is in beta will take care of that. Further, I’m happy to accept those drawbacks if I can make use of the hitherto believed to be unuseable GPU that I had + my no longer having to deal with a desktop PC that takes 30+ seconds to boot when the framework with arch does a full boot in like 15s.