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 560 Ti. The tricky part was getting a working
xorg.conf
.I needed the Nvidia drivers:
You need to find the correct PCI bus for the graphic card.
lspci
gave me:So in the
"Device"
section ofxorg.conf
, I set:Then use nvidia-settings after a reboot or an 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.
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:
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!
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.
Hardware
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/