The 2016 MacBook Pro has endured criticism for its lack of I/O ports, but what that it does have — two or four Thunderbolt 3 ports based on your configuration — has lots of potential. For example, it’s now possible to connect an external GPU (eGPU) box via Thunderbolt 3 and tap into the power offered by a full-sized graphics card.
In this hands-on post, we’re going to showcase how to power the 13-inch 2016 MacBook Pro with an eGPU using Sapphire’s AMD RX 480. The RX 480 is modestly-priced GPU with a decent amount of power that’s good enough for 1080p gaming. The connection is made possible by means of the Akitio Node — an external GPU box with an embedded 400W power supply, and enough room inside for a full sized card like the RX 480.
The nice folks at Akitio provided us with an early unit for testing with macOS. Unlike Akitio’s other Thunderbolt 3-enabled enclosures, the Node features the newer Texas Instruments TI83 controller and is immediately recognized in macOS. While that makes for one less hurdle to clear, there are still lots of factors to consider before taking the eGPU plunge.
As you’ll see in this post, the setup takes some effort to get right, but it’s fairly simple to get working if you follow the steps correctly. If you’re a Mac gamer or video editor, then the benefits are very apparent, especially if you’re using a MacBook Pro with an integrated Intel Iris GPU like the 13-inch 2016 model. Have a look at our full hands-on video walkthrough for our step-by-step guide through the setup process.
What you’ll need
- Akitio Node or other eGPU box
- RX 480 or other compatible graphics card
- MacBook Pro with Thunderbolt 3 ports
- External Display (at this point GPU acceleration only works via an external display, so you will need a separate display to make this work)
- USB-C adapter (USB-C to USB, USB-C SD Card reader, or something similar)
- automate-eGPU.sh from goalque
Subscribe to 9to5mac on YouTube for more videos
The Akitio Node hardware
As mentioned, the Akitio Node is an GPU Box that allows you to run a full-sized graphics card externally with your Thunderbolt 3-equipped MacBook Pro. The unit ships standalone, so you’ll need to provide your own GPU.
The Node, which is all black, is fairly large at about 17-inches long (including rear handle), 5.75-inches wide, and about 9-inches tall (including feet).
The build of the Node feels very much like a PC case, and that’s essentially what it is, a small PC case specifically designed to work as an eGPU solution. The case is large enough to house a full-sized dual-width GPU, features a single x16 PCIe slot, and contains a 400W SFX power supply built into the case.
Although you’ll find a beefy power supply inside, the Node doesn’t provide power back to your MacBook. Hence, you’ll still need to connect a power source to your computer if using it for a long session.
The case includes two PCIe 6+2pin connectors for supplying power to the GPU, and features a fan in the front of the unit to help circulate air throughout the case.
The rear of the unit is where you’ll find the single I/O connection for the case — a Thunderbolt 3 port — which means you’ll be able to connect directly to your MacBook Pro, but you won’t be able to include the unit as a part of a daisy chain. Outside of the Thunderbolt 3 port, you’ll find a power switch, power connector port, and a removable PCIe slot cover.
The Node features a cover that slides on to the unit a little awkwardly, but it does a good job of protecting the internals and providing airflow to the internals. Both the front and rear of the Node feature perforated panels to allow plenty of cool air to work its way throughout the case.
With a graphics card inside, the Node is pretty heavy, almost like a small PC case. The unit’s handle is obviously there for convenience, but it’s probably not something you’d want to travel around with often. I see the Node as more of a stationary solution that will sit on top of your desk, or even under your desk — or maybe even on the entertainment center for using it as a gaming solution on the big screen.
Picking the right graphics card
While the Node itself is an instrumental piece of equipment for utilizing an eGPU solution, the actual graphics card that you choose is perhaps an even more important decision.
A lot will depend on how you plan on using the Node. And since the unit features no I/O ports outside of the sole Thunderbolt 3 connection, you’ll want to make sure that your graphics card features all of the necessary ports that you require.
But even more important is the issue of compatibility. Nvidia’s Pascal cards (GTX 1060, 1070, 1080, etc.) aren’t supported yet in macOS, because there are no drivers. AMD’s Polaris lineup (RX 470, 480, etc.) does work, and that’s what I use in this tutorial.
Older Nvidia Maxwell cards (GTX 970, 980, etc.) do feature web drivers for macOS, but these cards are difficult to find unless you already own one right now.
And what if you’re running Windows on your Mac via a Boot Camp partition? Depending on the card you choose, that could be a walk in the park, or a whole new challenge.
I decided to go with the RX 480, because it is one of the newest cards available that features macOS compatibility. And since FCP X can see heavy benefits from AMD-powered GPUs, the decision was a no-brainer for me. Unfortunately the current version of FCP X — version 10.3.1 — doesn’t play nice with my eGPU setup, so I’ve downgraded to version 10.2.2, which works particularly well. I’m fairly confident that we’ll see a workaround or an update from Apple that better supports this setup, but there’s nothing guaranteed here.
The point is, much of this is still in the trial and error phase. I’ve actually been working on this eGPU RX 480 project for almost a month, and I’m just now to the point where I can pull off the installation with relative ease.
Goalque, who provides a handy script, makes the process particularly easy, but even without the script it’s possible to go into /System/Library/Extensions, and edit kernel extension plist values manually to enable hardware acceleration. But for this tutorial, I’m showcasing the method using goalque’s script, since it’s easy to use and works with a variety of graphics cards.
Upgrading the Akitio Node’s firmware
The first thing I needed to do before I could make this setup work was to install the latest firmware on the Akitio Node. Akitio sent us an early version of the Node with early firmware. The new firmware (v22.214.171.124 B1-23+3.6.1) adds support for Thunderbolt 3 hosts that do not support external GPUs.
Since the firmware is only available for Windows, I used a Windows 10 Boot Camp partition to make it work. Unfortunately, it appears that the driver that comes installed doesn’t work well with the Thunderbolt 3 hardware used in the Node.
After doing some research, and looking at the Hardware ID via Device Manager in Windows 10, I searched Google for an Intel Thunderbolt driver with the same Hardware ID. I stumbled upon this Intel Thunderbolt Driver 126.96.36.199, and what do you know, it worked. My Windows 10 installation was now able to see the Node, which allowed me to update the Node’s firmware via my Boot Camp installation.
Updating the firmware is very straightforward. Just connect the Node via its included Thunderbolt 3 cable, power it on, and run the firmware utility provided by Akitio. After a few minutes, your Node should be on the latest firmware, which is the first step towards making this whole setup work. If your Node already has this or newer firmware upon receipt, then it might not be necessary to update at all.
Configuring the Node to work with the 2016 MacBook Pro
Note: Please back up your macOS installation and any files you need before proceeding. I don’t anticipate any major issues, but when you’re modifying system files, anything is possible. You have been warned.
Step 1: Install the GPU properly inside the Akitio Node. Be sure to connect the PCIe 6+2 pin connector if needed.
Step 2: Connect the GPU to an external display. (At this juncture I’ve only been able to get 4K working at 60Hz via DisplayPort. The RX 480 features dual HDMI 2.0 ports, which should work at 4K @ 60Hz as well. I’m still investigating this).
Step 3: Shut down macOS and disconnect everything from your MacBook Pro
Disable System Integrity Protection
Step 4: To disable SIP, reboot your MacBook and hold Command (⌘)+R until you see the Apple logo. This will cause your Mac to boot into recovery mode.
Step 5: Click the next arrow button on the welcome screen, and in the menu bar, click Utilities → Terminal.
Step 6: At the Terminal Prompt type: csrutil disable; reboot and press Return on your keyboard.
You MacBook Pro will reboot back into macOS’ normal mode.
Note: Once you run the script below, you may re-enable System Integrity Protection if you wish.
Using goalque’s automate-eGPU script
GitHub user goalque has created an easy-to-use script, which was just recently updated to include AMD Polaris & Fiji support for macOS. This script modifies the necessary kernel extensions to support the GPU used. It also automatically downloads Nvidia web drivers for those utilizing compatible Nvidia GPUs. This script is great, because it makes it so that users don’t have to go tinkering with plist values in /System/Library/Extensions/ to make the needed modifications.
Step 7: Connect the Akitio Node to your MacBook Pro via the included Thunderbolt 3 cable, and power it on.
Step 8: Open Terminal and type the following commands to download and execute the script:
curl -o ~/Desktop/automate-eGPU.sh https://raw.githubusercontent.com/goalque/automate-eGPU/master/automate-eGPU.sh
chmod +x ~/Desktop/automate-eGPU.sh
Enter your password when requested and press Return.
Here is what your terminal should look like once the script has completed:
Of course, depending on the GPU you decide to use, the Detected eGPU and Nvidia web driver section may be different. If you wish to uninstall the automate-eGPU changes, simply use the flag -uninstall.
Step 9: Close all apps and Finder windows and shut down your MacBook.
Booting with hardware acceleration enabled
Step 10: Connect another USB-C device to the adjacent USB-C port on your MacBook Pro, such as a USB drive, Apple’s USB-C to USB adapter, etc. Without doing this, I’ve found that macOS will boot with GPU acceleration disabled. On my MacBook Pro, this seems to only apply to the left USB-C ports, and not the right USB-C ports. However, according to Apple, you should probably use the left USB-C ports when connecting to a high bandwidth device like an eGPU. Therefore, you will need to connect a USB-C device to the adjacent USB-C port, as this acts like a ‘booster’ of sorts for hardware acceleration. Once your MacBook Pro is booted, you can remove this extra USB-C device until you need to reboot again.
Step 11: Power up the MacBook Pro, and you will eventually hear a brief ‘woosh’ sound from the GPU. If you hear this, then it means that hardware acceleration worked, and you should be good once macOS boots completely. If you don’t hear a woosh sound, and the MacBook Pro takes a long time to boot, ensure that you’ve followed the previous step.
Optional step: Modifying GPU name to correct name
Depending on the graphics card used, the GPU name listed in About This Mac may be incorrect. For example, when using the RX 480, the GPU is listed as a R9 xxx.
Before modifying the GPU name
The following steps can be used to fix this, if desired. It is not an absolutely necessary step to get your GPU working, but it makes for a cleaner-looking installation.
Step 2: Open Finder → Go → Go to Folder.
Step 3: Paste the following in the Go to the folder box: /System/Library/Extensions/AMD9500Controller.kext/Contents/MacOS
Step 4: Drag a copy of AMD9500Controller to the Desktop
Step 5: Open iHex and drag the AMD9500Controller from the Desktop to the iHex app.
Step 6: In the iHex menu bar click Edit → Find → Find to bring up the Find menu, or simply use ⌘+F.
Step 7: Select Text and in the Find box, type xxx in lower case. You will find R9 xxx. Replace that text with RX 480 by placing your cursor in front of the ‘9’ and typing an ‘X’ and then placing your cursor in front of the first x in ‘xxx’ and typing 480.
Step 8: In the iHex menu bar click File → Save, or use ⌘+S. Close out of iHex.
Step 9: Drag the AMD9500Controller back to the /System/Library/Extensions/AMD9500Controller.kext/Contents/MacOS location. A popup will appear asking you to Authenticate. Click the Authenticate button, and click the Replace button on the next popup that appears. Enter your User Name and Password and click OK to successfully replace the AMD9500Controller with the modified version.
Step 10: Launch the Kext Utility app, and enter your password once requested. The Kext Utility will repair permissions for extensions, and only take a minute or so. Once it’s finished, click the Quit button and restart your MacBook.
Step 11: Check → About This Mac to verify that the GPU name has been updated.
After correcting the GPU name
Benefits of an eGPU?
The aforementioned guide may seem like a lot of steps, but depending on how you use your Mac, it may be well worth it. If you’re a gamer, then you’ll definitely want to pay attention here, and if you’re an avid Final Cut Pro X user, there are tangible benefits to be reaped as well.
But instead of just talking about it, I’ll show you by means of several benchmarks that I performed. You can also see these results in our video walkthrough embedded above. The results speak for themselves.
If you’re a gamer, then you may be interested in going the eGPU route, because there is a tangible difference within macOS. Even games that aren’t traditionally looked at as being intensive, such as Rocket League, benefit noticeably from the presence of the eGPU. 1080p gaming at high settings is definitely feasible, whereas 4K gaming is also possible when keeping settings modest.
When using the integrated Intel Iris 550 GPU, I find that 1080p gaming, even at low settings, is almost unplayable. My definition of playable is a consistent 30 FPS and above. Of course, depending on the game you’re playing, your mileage may vary, but the Intel Iris 550 is definitely not designed with gamers in mind.
One of the more exciting finds for me, as a long time Final Cut Pro X users, is how much the addition of the GPU helps video exports. Videos without any effects exported faster, but not fast enough to make a huge difference. However, projects that contained effects, color correction, and titles heavily benefitted from the extra graphics muscle.
Is an eGPU worth it?
If you’re a MacBook Pro owner that needs to tap into more power on a regular basis, then an eGPU is a viable way to do so. It’s especially nice for 13-inch MacBook Pro owners who outright lack access to discrete graphics. With a single Thunderbolt 3 cable, it’s now possible to tap into much more power when you need it.
Paired with the right graphics card, the Akito Node can turn your MacBook Pro into a decent gaming machine. I especially enjoyed playing Rocket League at 60 FPS and above using max settings.
But there are some definite downsides to using an eGPU with the MacBook right now. As you can see, the setup process isn’t exactly plug and play; it’s a bit of an arduous process. There’s also the matter of expense. Adopting a proper eGPU setup with a external graphic box like the Akitio Node, along with a modern graphics card, and external display is a considerable investment.
And speaking of an external display, you’ll have to use one to reap the benefits of the extra power provided by the GPU. As of now, the Node cannot drive the MacBook Pro’s internal display via Thunderbolt 3. You’ll need to have an external display connected to one of the GPU’s display connectors to make it work. If you already use an external display featuring DisplayPort connectivity, then this isn’t much of an issue, but if you don’t use an external display, it’s an obvious problem.
There’s also the matter of space — the Node is fairly large, and takes up a significant footprint on a desk. It’s probably best to relegate the Node to the floor like a typical PC tower, but Akitio only provides a short Thunderbolt 3 cable in the box. You’re going to need to buy a longer Thunderbolt 3 cable, like the one that comes with the LG UltraFine 5K Display, in order to move the Node to the floor.
Another reason why you may want to relocate the Node is due to the fan noise it, and the card inside, may produce. Even when not engaged in processor-intensive tasks, the Node is easily audible, especially when it’s sitting right next to you. If you’re using the Node as a part of a gaming setup, and you have it placed in your entertainment center, then it’s not so bad. But when it’s right next to you, it can be distracting.
One of the biggest downsides, for me at least, is the lack of Final Cut Pro X 10.3 support at the moment. Although the Node makes a noticeable improvement on certain export tasks on older versions of FCP X, the incompatibility with the latest version is a big annoyance.
Finally, once the Akitio Node is running on your Mac, you must shut down to remove the Thunderbolt 3 cable. Removing it while macOS is running causes my MacBook Pro to lock up, which requires a reboot.
All of that said, the benchmarks make it clear that eGPUs are a good way to add instant power to your MacBook Pro. It’s the equivalent of adding a turbo charger to a 4-cylinder car. Outside of buying a different computer, there’s simply nothing else out there that can provide this sort of power. With this in mind, you may be able to live with the setup’s downsides.
Keep in mind that eGPUs are still in their infancy. We’ve already made considerable progress in the little bit of time that I’ve had with the Akitio Node. I’m hoping that Apple will see this as a big opportunity and help assist third-party hardware makers by taking a more defined stance on eGPU support. If Apple gets behind the concept of external graphics boxes, then I can see this becoming a huge area of interest for anyone who wishes to get more power out of our thin and light Mac computers.
We’ll be back with more coverage of eGPUs and the Akitio Node in future posts. In fact, I have another eGPU-related post in the works, this time for Boot Camp users on Windows. If you have any questions, please ask down below in the comments and I will answer them as best as I can.