An external GPU under Mac OS X : three screens on a MacBook Pro

An external graphic card on a Mac? Some dream of. Others do. An American company has indeed boxes that can contain an ExpressCard card or any PCI-Express card.

Proud owner of a box of this type, I will test it, obviously with an Mac OS X orientation.

Theory

ViDock boxes allow you to connect a graphic card externally, on Express Card. This connector is available on the 15 and 17-inch aluminium 2006, 2007 and 2008 MacBook Pro. The 17-inch Unibody MacBook Pro (2009, 2010 and 2011) are also equipped.

In theory, it should work putting a compatible graphic card on Mac OS X.

In practice

It is not as simple in reality. First of all, the support depends strongly on the model. I tested it on a 17 inch 2009 MacBook Pro (MacBookPro5,2) and it works partially: the GPU can not be removed while on or plugged. Clearly, I needed to connect the card with the computer turned off. It also prevents reboots (as it must be off) and standby.

From what I’ve seen on the Internet, it works well on the 2006 MacBook Pro Core 2 Duo and on the 2011 MacBook Pro, the Thunderbolt must be helping. On the 2007, 2008 and 2010 MacBook Pro, I don’t have any clue and it does not work. On the 2006 MacBook Pro Core Duo, it works but it disables the internal graphic card (according to those who tried).

Secondly, you need a compatible graphic card. I have a ViDock 3 (power of only 75 W) and so I had to choose a mid-range card. The easiest way on Mac is to use a Mac Pro card, like the Radeon HD 2600 XT or the GeForce GT120. It is easy to find, it does not consume too much and it is silent. I tested both models and I use the GeForce GT120 everyday.

Then you have to play the « hackintosh » for it to work : I had to install ATY_init, a tool that actually inject the « BIOS » of the card in the Mac OS X drivers. No need for other hacks, just install the Kext. The card is also not recognized as a GeForce GT120 but as a GeForce 9500 GT. Good news, both outputs work well.

Little trick : you must modify a jumper on the box to boot. By default, the card starts at the same time as the Mac EFI and do not like it. With the jumper, you can add a delay so that the card starts after the Mac, but early enough that Mac OS X does not crash.

Theoretically, it should work with any Mac OS X compatible card (basically what happens on a Mac Pro). You just need a box with a suitable power supply, a ViDock 4 or 4+.

Performances

This is not a gamer solution. With about 200 MB/s measured, it is below what is necessary to simply display an image 1 280 x 1 024 at 60 frames/s. The PCI-Express really limits performances. In my case, it is perfectly suitable for the office work or for video decoded by the GPU (via QuickTime). But on the other sire, videos via VLC or Flash (and what does not properly use the GPU for decoding in general) are choppy in full screen.

I use two screens on the card: a 1 680 x 1 050 20-inch screen and a 1 600 x 1 024 22-inch screen, which require much more than the poor 200 MB/s. Hard gamers will not be enthusiastic, cause it is very slow.

A simple example on Xbench : the graphic score passes from 163 with the IGP (GeForce 9400M) to 171 with my MacBook Pro dedicated GPU (9600M GT). With the external GPU, equivalent to a 9600M GT GPU, it comes down to only 125. The impact is clear, even on light things.

9400M

9600M

External GT 120

In my case, working with three screens instead of one compensates defects.

For amateurs, a 2011 MacBook Pro should be faster because its ExpressCard slot is PCI-Express 2.0 (500MB/s), and a Thunderbolt version should be even more effective with its 4 lines PCI-Express 1.0 (1 GB/s).

Last thing, it is also possible to connect something else than an external GPU. A SATA card, a USB 3.0 card (you will obviously need drivers), and all the standard PCI-Express cards work perfectly in the box. I tested an old PCI-Express x1 SATA (JMicron) and it works : both SATA ports are recognized. Performances are average – the bus puts some limits – but it is usable. Similarly, a USB 3.0 works with adaptated drivers…