I’ve always chosen laptops with integrated Intel graphics for the superior FOSS driver support, and my latest laptop is no exception. I bought my Lenovo ThinkPad T580 in early 2018, but I finally found an opportunity to try the Thunderbolt 3 port with an eGPU. In short, it all works — and it doesn’t require any weird configurations, either.
The Hardware Tested
Today’s Fedora has Solid Thunderbolt Support
Having installed the graphics card into the enclosure, I connected the enclosure with Thunderbolt 3 (using the included, though very short, cable) and checked out the slick, new interface for authorizing devices in Fedora 28.
This worked without tweaking the firmware (BIOS) configuration for Thunderbolt security, which I know some eGPU guides suggest. After approving both devices, my laptop screen briefly flickered and came back. However, this did not mean anything was rendering through the eGPU yet.
Radeon Graphics Worked Out-of-the-Box
Before trying to run any games on the eGPU, I wanted to verify that the graphics card was recognized by the Linux kernel and other graphics-related systems.
I could confirm that the kernel had recognized the device and initialized the GPU by using the
lspci -vnn | grep '\''[030\]' .
It showed this output for me (the eGPU is second):
00:02.0 VGA compatible controller : Intel Corporation UHD Graphics 620 [8086:5917] (rev 07) (prog-if 00 [VGA controller])
0c:00.0 VGA compatible controller : Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon RX 470/480/570/570X/580/580X] [1002:67df] (rev e7) (prog-if 00 [VGA controller])
It was also possible to see the devices from an Xorg session (rather than the default, Wayland) by running
DRI_PRIME=1 glxinfo | grep "OpenGL renderer" . The
DRI_PRIME=1 environmental variable directs the running application to use the second GPU, which is the external one in this case.
It showed this output for me:
OpenGL renderer string: Radeon RX 580 Series (POLARIS10 / DRM 3.23.0 / 4.16.8-300.fc28.x86_64, LLVM 6.0.0)
The output of the above command was empty for me on Wayland, as I expected from the lack of X.
We can briefly put the eGPU to work in an Xorg session to verify the round trip back to the laptop display:
DRI_PRIME=1 glxgears -info
Running Steam Games on the eGPU
In anticipation of the upcoming Distant Stars and Stellaris 2.1 release, I tried out my most-played game:
I set launch options to
DRI_PRIME=1 %command% to run the game on the eGPU:
That’s it; it worked on the first launch. I tried it with a few other games, mostly with good luck:
- Gone Home
- The Talos Principle (both OpenGL and Vulcan modes)
- Slime Rancher
I could not get Firewatch to launch on the eGPU, but I encountered issues even launching it on my integrated GPU with the eGPU connected. It just hangs on a black screen pegging the CPU. I’ve tried adding
LIBGL_DEBUG=verbose to the launch options, but I haven’t been able to find the resulting output in any of the expected paths.
Other Thoughts on the Razer Core V2
With a few minor caveats, I think this would be pretty great as a docking station.
The enclosure includes LEDs that gradually drift from one color to another. It doesn’t bother me, but I’m also not sure how to reconfigure or disable them from Linux. I also haven’t made much of an attempt to do so.
The enclosure includes Ethernet and USB Type-A ports (the kind of port that was on almost every computer until Type-C).
The Ethernet shows up properly and probably works, but I didn’t try it. Because the Ethernet is over USB, its performance is probably not amazing. I’m not sure it would matter for gaming purposes, though. (It certainly wouldn’t matter for most typical desktop use.)
The actual USB ports also work fine. No surprises there.
Thunderbolt 3 Connection
There is no power switch on the enclosure, but it flawlessly turns on and off based on whether there’s a Thunderbolt connection to a host machine.
The connection supports Power Delivery support up to 65W, which is fine for ThinkPads. Other enclosures, including Razer’s newer, cheaper, wider “X” model, support up to 100W. 100W is the maximum possible with Power Delivery.
The enclosure comes with a short (about one foot) Thunderbolt 3 cable. There are longer ones on the market, but the good ones are pricey ($50+). Reliable Thunderbolt 3 cables have to meet pretty stringent specifications, so I’d recommend finding a certified cable. Apple is always a safe (if expensive) source for such accessories.
While hot-plugging the eGPU seems to initialize things fine, disconnecting the eGPU after having run a game on it freezes my desktop unless I unload the related kernel modules first:
$ sudo rmmod amdgpu amdkfd amd_iommu_v2
The enclosure feels great, both during GPU installation and for general use. The case acts like a giant heat sink, and everything is very quiet. It looks like a tiny, matte black version of the old Mac G5 towers, and it shows similar attention to detail.
Fedora 28 has Improved NVIDIA Driver Support
While I went the FOSS route by choosing a Radeon card, support for NVIDIA proprietary drivers in Fedora is better than ever. Wayland support is probably still wonky (on account of NVIDIA’s strange buffer architecture), so Xorg remains a better choice for eGPU NVIDIA gaming today.
Notes on Performance
I just wanted to see modern games run with decent graphics settings, so I haven’t run any formal benchmarks. Stellaris ran fine with the graphics cranked way up and displayed on my laptop’s built-in screen.
However, here are some tips based on how I understand the eGPU setup:
- Even under the best of circumstances, the bandwidth to the eGPU is fairly limited. Thunderbolt 3 only supports up to four PCIe lanes. Using a discrete GPU in a more typical configuration allows up to 16.
- Using an external display hooked directly up to the enclosure will save substantial bandwidth, as the rendered screen won’t need to be sent back to the laptop. This seems to have a massive impact on benchmarks with similar eGPU configurations.
- It’s probably better to use over sampling but a lower resolution when using the built-in screen on a laptop. Fewer, higher-quality pixels being pushed back to the laptop screen probably requires less bandwidth for a pleasing result. I haven’t tested this theory.
- Some Thunderbolt implementations only support two lanes, not four. This is the case for my T580. You can check the chipset on your computer by running
lspci | grep Thunderbolt. “Low Power” means two-lane support only.