eGPU – Connecting an external video card to a notebook (DIY implementation)
Our community is populated with tons of enthusiasts and many of them are very well skilled in various areas of the computer sciences. Because of that, we thought that the most interesting things that happen on our forums should also be published on the website, so many others can benefit from the experience of our community members. And we are starting this “LAB501 contributors program” with a thorough DIY eGPU implementation from our forum member Arise.
As the need for mobility is on the rise, many users found themselves facing a dilema – should I buy the ultra portable device which I can take anywhere with me, but sacrifice gaming performance, or should I go for a desktop PC which can use a massive graphics card, but which cannot be carried around?
The real question here is… what would you say if I told you that you can have both? An ultraportable device that you can take with you anywhere, that can be connected to some sort of device back home, in order to have desktop like graphics performance… Does such a thing exist? No, but we can build it in the form of an eGPU setup!
There are several ways to connect a video card to a notebook and while the physical connectors and cables can take various forms, at the electrical level there is no difference, it is just a PCI Express link. So far people were able to connect video cards to their computers using mPCI Express slots or PCI Express Cards, however, recently, Thunderbolt became the prefered choice for most new implementations.
So what exactly is this Thunderbolt thing? If we ask Apple they would say something like: ”Thunderbolt is a revolutionary I/O technology that supports high-resolution displays and high-performance data devices through a single, compact port.” Such a definition is kinda exactly what we are looking for when trying to connect a graphics card to a notebook, basically we need a technology that can provide high-performance data devices through a single, compact port.
The original Thunderbolt connector, being built on the miniDisplayPort connector was designed to keep the DisplayPort protocol and add the PCI Express capability, mapping them in a single protocol that can be transmitted over a single cable between Thunderbolt controllers available at each end.
Designed to be a one cable solution for everything that means it needs to have a lot of bandwidth at its disposal. First version of Thunderbolt chipset is capable of providing two full-duplex channels, each channel providing 10Gbps of bi-directional bandwidth. That’s 10 gigabits per second in each direction. In terms of speed, when looking for raw numbers, it is up to 20 times faster than USB 2.0 and up to 12 times faster than FireWire 800. In essence, from the eGPU implementation point of view, Thunderbolt is a muxer/demuxer capable to combine all those signal lanes found on PCI Express boards and send them over a thin and flexible cable.
So, cards on the table, what do we need exactly to make a Thunderbolt eGPU implementation? First, we need a notebook with such a Thunderbolt port onboard. There are a couple of notebooks so far that feature a Thunderbolt connector, most of them are Apple’s Air and MacBooks but there are also notebooks from Asus like G750 Series or G46 Series.
Second, we need a Thunderbolt PCI-Express Expansion board. Those are boards with one or more Thundebolt ports at one end and one or more PCI Express Slots that allow adding PCI Express cards. Like a video card. Unfortunatelly , such expansion boards are pretty expensive, but to name a couple, you can look for AKiTiO Thunder2 PCIe Box, ThunderTek/PX PCIe Expansion Chassis, and also several Thunderbolt products from OWC, Magma and Sonnet Technologies.
Third, we need that cable, with length from 50cm to 2 or 3 meters. I’ve found that longer is better, just don’t settle for 50cm just because is cheaper. Having the eGPU far from you is actually a good thing. And at last, we need a Video Graphics Card and some power source to power the card.
So far all seems good, but you may ask why is this a DIY implementation and not a readily available one so anyone can go out and purchase it?
The answer is dead simple. The eGPU project implementations are actively blocked by Intel, Apple and several other companies. The reason behind this is not made clear, however it can be assumed that it has something to to with compatibility issues and also the fact that spreading of such eGPU implementation could become a comercial threat to some sales/business patterns.
In the past Intel used to lockdown the x1, x2, x4 port settings in the flash descriptor region for notebooks equiped with SandyBridge processors and later, and now, both Intel and Apple must approve licenses for Thunderbolt based products. So far they refused granting certifications for Thunderbolt products without a case/enclosure (it means no one can sell only the board) and they are refusing expansions boards with 16x length slots. They also clearly mention in their guidelines regarding Thunderbolt implementations that video cards support is not allowed.
Lastly, Thundebolt is a somewhat complicated technology, hot plug support for PCI Express card was never considered (you don’t think about taking out your video card or sound card from your desktop PC while powered on, right?). Unlike desktop motherboards, notebooks could possible run into some BIOS issues in order to accomodate the video cards in the PCI memory space, so BIOS updates are required (as we know, laptop makers won’t bother much with releasing BIOS versions) or… some applications to do that.
There were some attempts for complete comercial implementations for Thunderbolt based eGPUs from companies like Asus and MSI, but guess what, they never saw the store’s shelves. Intel refused to certificate them.
So, the only thing you can do if you want to connect a powerfull graphic card to your notebook is to attempt a DIY eGPU implementation…
First thing, like already mentioned on the previous page, we need a notebook with Thunderbolt support. We are going to use an Asus ROG notebook from G750 series, a 17 inch gaming machine, featuring an Intel Haswell i7 4700HQ CPU and a discrete graphics card like Nvidia 765m.
Asus G750JW model features a Cactus Ridge DSL3310 Thunderbolt chipset, capable to power a single Thunderbolt connection port. For the PCI Express Expansion board, I’ve opted (at that time) for a Sonnet Echo Express SE.
It comes in an aluminium enclosure and is bundled with a 12V adapter to provide up to 60W of power for the Thunderbolt chip inside and for the PCI Express card that should be installed.
The Sonnet Echo Express SE solution is based on two boards, a daugherboard featuring a PCI Express slot with a 8x width and the main board with the Thunderbolt chipset soldered on it.
While the PCI Express slot/socket should allow one half-length (up to 6.6″ long), single-width, full-height x8 PCIe 2.0 card, the electrical connection is limited to a x4 PCIe 2.0 (because the actual electrical bandwidth of Thunderbolt is x4). The slot is not allowing us to install a full length x16 board like a modern video card, because the end of the slot is closed. Such an issue can be avoided by using a PCI Express riser, or using some tool like a sharp knife to carve in the plastic to make the card slide in properly.
Hey! Told you this is a DIY project, right?
Due to constraints like orientation, position of the slots on the expansion board and the size of the video card, and trying to fit everything inside some sort of a case, I chose to use a PCI Express riser.
A couple of things about the PCI Express socket. There are many pins in that socket, and some of them are for transmitting data while others are for providing 12V and 3.3V.
A Nvidia GTX 680 card is power hungry card and it will exceed the max of 25W provided by the original Sonnet Echo bundled 12V power brick adapter. We also need some 3.3V lines to power it. The easiest solution for this is to use an ATX Power Supply because that one can provide both required voltages and also enough power for any highend video card.
The riser extender cable was marked for both sides, required wires were identified and then cut and soldered to an ATX motherboard extender cable in order to be powered from the PSU.
The operation above was also required in order to avoid some issues (PERST# delay) with computer having time to „see” the video card after doing POST initializations by the BIOS. You may ask why the 12V wires were splitted, considering the card could draw the voltages over the dual 8 pins connectors from the ATX PSU. Well, the Sonnet Echo Expansion board was also powered from 12V from the original brick adapter, and allowing current to flow from both ways might not be a clever ideea.
Also, why did I cut the first 3 wires for 12V, when the PCI Express specification labels the third pin as Reserved and only the first two pins are for 12V? The reason is simple, please get a video card and take a look at the pins, you will see that first three pins on side B are connected and like mentioned above you don’t want current coming from ATX PSU to flow back into the Sonnet Echo Expansion board.
After connecting all pieces together, we are ready to power on the whole thing, and it works, at least at the electrical level.
Having all those wires on the desk is by no means something pretty for the rest of the family, so we may want to place the whole eGPU setup into a case, a box or something. Because DIY means creativity, people used shoes boxes, cardboards, small computer ITX enclosures, custom 3D Printed enclosures, and so on. I personally went for a SFF (Small Form Factor) mini ITX box from Cooler Master Elite 120 Advanced.
I had to find a way to install the MSI Lightning card as the card doesn’t seem to fit properly, but in the end I managed to mount it in a secure way. I also discovered that the slot from the riser card won’t fit, because of its height added to the board connector. After a little bit of masking tape and a Dremel tool later I had the space required to properly route the soldered connector protruding outside the case and then back in.
For the Thunderbolt PCI Express Expansion Board decided to use a piece of soft plastic to make a base for it and taped it with some velcro fastening tape on the metal case.
Added the ATX PSU, connected everything, and now everything looks much better.
With everything connected, time to see if it works. Having the eGPU powered on, I can finally boot into Windows and we run into this issue when opening the Device Manager.
Basically it tells us that the BIOS/Windows was not able to properly allocate/accomodate the video card memory constraints into the PCI space. So at this point we need a solution to make it fit, and for this we are going to use Setup 1.x, a donationware pack of applications created by nando4 user from the techinferno forums.
After configuring the Setup 1.x and creating a compact batch file in order to rearange devices into the PCI space memory blocks and some tweakings like reboots and disabling video cards in device manager we can finally see both card active in Windows and working perfectly.
Taking a look at devices sorted by connection, we can see the Nividia GTX 680 card connected to the end of a PCI bridges tree on the Southbridge chip, which limits the connections to PCI 2.0 link connections.
Comparing to the Nvidia 765m dGPU connected directly to the Northbridge (PCI 3.0 link connections) we can easily guess those underlying PCI bridge ports could be a source of latency bottlenecking the performance of the external connected card.
GPU-Z tool has a function to report the link speed, as can be seen it the image, the eGPU is limited to a PCI Express firstname.lastname@example.org connection. Cuda-Z also is capable to provide some insights on the limitations of memory bandwitth.
Running Furmark on the eGPU we can take a look at the average power consumption.
What about PhysX? Well, in case of games it is possible to dedicate the internal dGPU for PhysX and use the eGPU for graphics only as long as the dGPU is powerful enough to do that. Of course, the dGPU must be also a Nvidia card, AMD cards won’t work, and neither iGPUs (Intel Integrated video cards).
Setting the primary display we are ready to run some benchmarks to see how the external GPU compares to the mobile mainstream GPU (765m) inside the notebook. As you can see the performance almost doubles compared to what we could get without the eGPU.
Started as a low cost alternative to bring desktop gaming performance on laptops, the eGPUs projects saw a lot of success for the models based on Expresscards and mPCI Express connectors. Unfortunately, Haswell laptop generation basically completely removed the Expresscards configurations so people interested in eGPU solutions should look for laptops with accesible mPCIe slots or Thunderbolt.
As said before, Thunderbolt is not a cheap option, laptops with Thunderbolt on board are high end laptops selling with a premium tag, like Apple notebooks and Asus G series. However being able to see an ultra portable notebook like an Apple Macbook Air having almost desktop graphics performance and playing latest games without an issue will surelly add a big grin on your face.
As a last question, you might ask what is the penalty in performance saw by the video card when connecting it over Thunderbolt instead of a native PCI Express x16 slot? Well, this could be the subject for another article.
We hope that in the future this type of solutions will be supported by manufacturers and commercialy available. Until then, we hope you enjoyed our DYI adventure and we must add that any enterprise like this is done at your own risk. And of course, we would like to thank the DIY eGPU community for their support!