Has anybody got any idea what would be needed to have a working external GPU system (eGPU) under Linux? I've just seen this post of a DIY eGPU system:


I found this mentioned which I think is also relevant:

My system has switchable graphics. Can I still do a eGPU?

Yes you can. Setup 1.x's (Video card->Hybrid Graphics.dedicated=off) allows the dedicated graphics component to be completely disabled on Series-5 or older chipsets, freeing up 32-bit resources to host the desktop eGPU. If your primary video card is a Intel 4500MHD, HD or HD3000 then can even do a x1.Opt NVIDIA setup.


I can confirm that it works in 12.04. Tested with PE4H + EC2C on a thinkpad x220, using an Nvidia GTX 560ti. The tricky part was getting a working xorg.conf.

I needed the nvidia drivers :

sudo apt-get install nvidia-current

You need to find the correct pci bus for the graphic card.

lspci gave me :

05:00.0 VGA compatible controller: NVIDIA Corporation GF110 [GeForce GTX 560 Ti] (rev a1)

So in the "Device" section of xorg.conf, I set:

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    BusId          "PCI:5:0:0"
    VendorName     "NVIDIA Corporation"

Then use nvidia-settings after a reboot or a Xorg restart to configure the monitor(s) resolution(s).

It should be noted that it works much better in windows than linux and I had to disable compiz because it lagged so much. I will update if I can get both cards (HD3000 + Nvidia) at the same time.

  • Hi, have you done some other new tests? I mean other notebook/vgas – elect Sep 2 '14 at 7:49
  • GPU : geforce 9800gt, gtx 680 and gtx 260 all work. I also tested with a revodrive pcie ssd and it worked. I have no other expresscard laptop, but if it is listed in that thread forum.notebookreview.com/e-gpu-external-graphics-discussion/… I don't see why it wouldn't in linux as well. – boutch55555 Sep 17 '14 at 17:23

It's an interesting idea and I can't see why it wouldn't work on a technical level because Linux does support ExpressCard devices (as PCIE) so the riser on the other end should work and it should detect the graphics card too. From there it's just a case of using the nvidia drivers.

However there are some things that might give you grief:

  • You might need to manually add the module for ExpressCard:

    sudo modprobe pciehp pciehp_force=1

    You can do this automatically too.

  • Assuming the built-in graphics card isn't Nvidia, you might have a battle of drivers and configurations. Nvidia drivers still require a fairly static Xorg.conf file so you're going to need to manually set up two configurations, one for the onboard (so it knows what to do if there's no external card) and a layout for when it is present.

    I'm over-simplifying this - it could be a real headache to get X behaving.

  • You won't be able to hotplug this configuration. You'll need to restart X (and all the applications it has loaded) in order to switch graphics cards.

  • I don't think you'll be able to render things through the external card onto the built-in screen; aka you'll need an external monitor. The page you link to has it displaying on the laptop's screen but I don't see how it could be without some sort of extra hardware hack. Edit: I see from that post that it uses Optimus. This part won't work in Linux; you'll need an external monitor.

I wouldn't spend too much money on this if you're not sure it'll work.

If you've got $130 that you won't mind losing (or trying to recoup on ebay) start with the ExpressCard riser and a dirt-cheap, lowest-end Nvidia card. If it's low-end enough, you might be able to get by without a proper ATX PSU. See if it works... If it does, buy a proper PSU and a nice graphics card and rock on.

And if you do get it working, please document it somewhere!

  • 1
    Thanks for the detailed explanation. It seems like in Windows it's possible to treat the eGPU just as another card in a hybrid graphics system, which I think is good news for Linux, since we already have hybrid-graphics support. For example, the new Sony Vaio Z-series come with an eGPU configuration, which should be great to have working under Linux. – 719016 Aug 9 '11 at 14:21

External GPU on older laptop with Ubuntu 18.04.1 and Windows 10 Pro 1909

Many older laptops still have an acceptable CPU, but are lacking in the GPU/graphics area. Hardware is available to allow a desktop GPU to be easily attached to the laptop, at a much lower price than a new laptop. Most external GPU hardware connects with USBc/Thunderbolt, which is not available on most older laptops. Other options, like an M2 or an expresscard connection are available, and will provide the desired graphics upgrade.

The EXP GDC Beast adapter converts from a laptop's expresscard slot to an external PCIe slot, allowing plugin of a desktop GPU. Other versions are available using an M2 adapter, but to attach those, the latop case needs to be opened. Older issues reported with the adapter have been fixed with current Linux kernels and Windows releases. Setup for an external GT 640 GPU (1GB video memory) was trivial: In the BIOS/UEFI settings, turn off the discrete graphics and ensure that the expresscard slot is enabled.


The laptop used was a Lenovo W520, with Nvidia 1000M Quadro graphics and an expresscard slot. This is a 2011 64 bit UEFI machine, pre secure boot, dual booting 64 bit Ubuntu 18.04.1 (kernel 4.15) and 64 bit Windows 10 Pro 1909 build 18363.628. The adapter was a Semoic Express Card Mini PCI-E version Expresscard V8.0 EXP GDC Beast PCIe PCI-E PCI laptop external independent video card dock ($40.00 on sale). The power supply was a Dell D220P-01 power supply P/N:MK394 ($20.00). The GPU was a 1GB video memory GT 640. Consider getting/making a case to keep fingers/cables out of the GPU fan.

Ubuntu Setup

Shutdown the Ubuntu 18.04 running on the internal Nvidia Quadro using the 390 driver. On the laptop, plug in the expresscard on the adapter cable. On the adapter, plug in the GPU, and the 6 pin power supply cable. The cable to supply additional power to the GPU from the adapter was not used. Plug in the power supply, whose light stays yellow until the laptop is powered, then it turns green. Start the laptop and select the BIOS/UEFI settings. Ensure the graphics mode is set to internal (not discrete or automatic). Ensure that the expresscard slot is enabled. Save and exit. Start the laptop, it will find the new hardware, and use the existing Nvidia 390 driver (the latest one offered from the standard repositories) on the laptop's display. No additional modules needed to be loaded, no xorg.conf was needed, and no kernel options like pci=nocrs were used.

If a monitor is attached to the external GPU, it will display a screen positioned to the right of the laptop's display. Adjust the screen positions in the Settings/Display section. Now run Software and Updates, select the Additional Drivers tab, and update the Nvidia drivers to the now offered 345 version. Reboot, and Ubuntu should be using the 345 drivers for the GT 640 GPU. Shutting down the laptop will depower the GPU, and put the power supply into standby (yellow light).

Windows Setup

Review the setup video at https://www.youtube.com/watch?v=G0YMBvNFgyE The most valuable part is warning of the long wait with no progress bar on the automatic Windows Nvidia device install). (Plug everything in), boot Windows, let it find the new device, and let it update, drivers. There is no progress bar, so be patient and let it finish. Reboot, and the new device should be seen and used. The laptop screen will be used and if a monitor is attached to the GPU, it will display a second screen to the right of the laptop's display.

No errors were encountered in either setup. Note that the internal Quadro 1000M is a 2GB card, so GPUs up to 2GB probably will not have any problems on this W520. GPUs with larger video memories might have issues. Machines originally released with 32 bit OSes (like the Lenovo W520), might have problems with the PCI buffering at the top of the lower 4G of memory. Solutions are available on support sites like https://egpu.io/forums/pc-setup/fix-dsdt-override-to-correct-error-12/

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.