external GPU system in Linux?

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:

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"
EndSection

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:

    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!