A Thunderbolt GPU on a Mac : How-to

Today, a tutorial: how to use a Thunderbolt graphic card on Mac. This is the holy grail for some: it is possible to use a Thunderbolt graphic card on a Mac. This is not easy and there are a few issues, but it works pretty well.
04036056-photo-logo-intel-thunderbolt-hd

Une version en français existe

The hardware

In my case, I use a ViDock 3 enclosure (an ExpressCard enclosure , already used on my old MacBook Pro), a Sonnet Thunderbolt to ExpressCard adapter (the Pro version, PCI-Express 2.0 compatible) and a Thunderbolt cable.

Concerning the graphic card, any recent NVIDIA model – I tested a GeForce GTX 260 from Zotac, a GeForce GT120 from Apple and a Quadro K5000 for Mac – works. For everyday use, I installed a fanless GeForce GT610 (low cost) only to manage screens. AMD cards work, but with big graphic bugs, so I’d advise you not to use it for the moment.

The ViDock enclosure can be replaced by a BPlus PE4L, it’s cheaper and as effective.

Overall, with a mid-range graphic card, you can manage for about 500 $.

The Software

Mac OS X, by default, simply does not support Thunderbolt GPU drivers. The reason is simple : you normally need drivers adapted to hotplug to work on Thunderbolt, and GPU drivers are not. But it is quite easy to add what is needed in the pilots to make them Thunderbolt-compatible, even if the hotplug is not supported. Then take care, if the computer cable is disconnected while on, the kernel panic is to be foreseen.

Quadro installée

Quadro

For NVIDIA graphic cards, there are three files to edit. The first two are related to the display, the third one is dedicated to the support of the sound via HDMI or DisplayPort.

/System/Library/Extensions/NVDAStartup.kext
/System/Library/Extensions/IONDRVSupport.kext
/System/Library/Extensions/AppleHDA.kext/Contents/PlugIns/AppleHDAController.kext

You have to get each file, open the package (secondary click -> Show Package Contents) and open the file Info.plist with a text editor that supports editing system files (for example TextWrangler, in its version not from the Mac App Store).

In this file, look for sections beginning with <key>CFBundleIdentifier</key> and add just before </dict>, the two following lines :

<key>IOPCITunnelCompatible</key>
<true/>

Once this is done in the three files (beware, there are several occurrences in IONDRVSupport.kext), just reboot and the card should be activated and operate. In my case, it worked with all the GPU tested.

Be careful, the operation has to be repeated at each minor system update (e.g the move to 10.8.5).

Performances

The Thunderbolt barely disable graphic cards in practice. Obviously, some tasks and games are limited by the bus (which is here equivalent to two PCI-Express standard lines, 500 MB/s) but it is much more efficient than the integrated graphic card or even – with a good GPU – the dedicated graphic card of the MacBook Pro.

On Mac OS X, games like Batman Arkham City and Starcraft 2 are perfectly fluids on 1600 x 1200 on a 11 inches 2012 MacBook Air with a big GPU (a Quadro K5000, equivalent to a GeForce GTX 660/670), even with details at their maximum.

On Windows, the performances in a test as 3D Mark are better than on a laptop for gamers, as long as it is on an external screen. The NVIDIA drivers on Windows, make it possible to send the image back to the internal laptop screen, but the function does not exist on Mac OS X and has a big impact on performance.

15

For people who want to play on Windows, a little program is needed to initialize the graphic card. It is there, and the author is responsive for the configuration.

If you have any questions or need any further information, please feel free to ask in the comments.