floppah Posted February 20, 2014 Share Posted February 20, 2014 Hi everyone, Granted, I am not the first one to set up a native Thunderbolt eGPU system, but so far I have not come across a solder-free solution that works in OSX as well as Windows, so I wanted to write a little tutorial how I got my system running. My Setup Early 2011 13” MBP Sonnet Echo Express Pro (x16 mechanical interface and 150W internal PSU (including 75W aux connector) GTX 660 Not that it is particularly important which Thunderbolt extension bay is used, but the Sonnet pro line has got a couple of advantages: It has got two x16 pci-e slots, so there is no need to void your brand new enclosure’s warranty just to fit in your graphics card. It comes with a 75W auxiliary connector and 150W internal supply, so no extra psus, cables or whatnot scattered around, it’s a very neat and tidy solution It is recently discontinued which means you can get them for a fraction of the ridiculous price tag on ebay Disadvantages that I noticed: The thermal design is terrible, fans spin up quite loud early on and the ones it comes with as standard are very loud and annoying in particular (I hate you Sunon!). I fitted mine with Gelid Silent 5s as these are the only decent silent fans that come in 50mm. Overall noise is now acceptable and free from high pitched screeching even under hard gaming. To get it to work under OSX Nothing easier than that! All you have to do is tell OSX that the drivers are Thunderbolt enabled. This requires you to edit two kernel extensions: /System/Library/Extensions/NVDAStartup.kext /System/Library/Extensions/IONDRVSupport.kext In these files (use terminal command “sudo nano” to edit) look for sections beginning with <key><key><key>CFBundleIdentifier</key> </key></key> and just before this section is closed with </dict> add the two following lines: <true><true><key>IOPCITunnelCompatible</key> <true/> then close and save. Note that there are multiple of these entries in IONDRVSupport.kext. Here is an example of how the section in NVDAStartup.kext should look like: <key>NVDAStartup</key> <dict> <key>CFBundleIdentifier</key> […] <key>NVDAType</key> <string>Official</string> <key>IOPCITunnelCompatible</key> <true/> </dict> After that just reboot and you should be golden. Things that don’t work so well: Clamshell mode is a bit messed up now as the internal display cannot be switched off anymore. I got around the issue by installing NoSleep that prevents the system from going to sleep and just ignoring the ‘extra’ display. To get it to work under Windows Nobody likes Windows 8. But unfortunately unless you want to start fiddling about with extender cables, delay lines and extra boot loaders and make everything messy you need to run Windows in EFI mode which is very poor in Windows 7. So what you need is Windows 8 or 8.1 64 bit (32 bit has no EFI support). There are one or two tutorials on how to install Win8EFI on a MacBook out there, but it is pretty straight forward anyways: Go through initial bootcamp process: Create Windows USB installer, download bootcamp drivers and have them copied on the USB stick as well. Abort bootcamp after 1 is done, don’t let it create a partition. Open Disk Utility and create a partition for windows manually Reboot and hold option/alt. The windows USB drive should show in the bootable devices list. Install Windows and bootcamp drivers. Spend hours waiting for all Windows updates to install Once Windows is installed all that is left to do is download and install the newest Geforce drivers from NVidia. Here you go, native eGPU support in Windows as well! Things that don’t work so well: For some reason I did not manage to get the MBPs sound chip recognized in Windows. But do not worry, you have got two options: 1. Use a monitor that supports HDMI audio. 2. Use a USB sound card (‘cause it sounds better anyways, allegedly). Benchmarks: Don’t care about numbers Gaming experience: Superb. Games suddenly look good again! Concluding remarks: Is it worth it? Probably not. Would you do it again knowing that it’s not worth it? Definitely. </true></true> Performance benchmarks As apparently numbers are important to some, here are the 3DMark results of my little system: NVIDIA GeForce GTX 660 video card benchmark result - Intel Core i5-2415M Processor,Apple Inc. Mac-94245B3640C91C81 6 Quote Link to comment Share on other sites More sharing options...
uDenis Posted February 20, 2014 Share Posted February 20, 2014 Thank you for sharing. the enabling drivers in OS X info will be useful since I'm also trying to make an eGPU which runs under OS X all I need now is for someone to figure out how to make audio work in Win 8 Quote Link to comment Share on other sites More sharing options...
floppah Posted February 20, 2014 Author Share Posted February 20, 2014 Chances are it's going to be fixed in the next bootcamp update. Other than that, just get a USB sound card. When spending £500 on a £100 graphics card another £50 for brilliant EAX/THX sound is really not too much to think about ... Quote Link to comment Share on other sites More sharing options...
EpicBlob Posted February 21, 2014 Share Posted February 21, 2014 Great Job! I've had my Mac Mini running in Windows 8 and OS X for a few months now and it has worked perfectly. Did you have 10.9 then upgrade to 10.9.1? I'm still on 10.9 but I've here 10.9.1 improves performance. I saw quite a dip in performance upgrading to 10.9 from previously having 10.8.3.I'd also like to add that multiple monitors work in OS X with an egpu. I have a 27inch HDMI and a VGA monitor plugged in and both are working properly. Quote Link to comment Share on other sites More sharing options...
Gurdn Posted March 1, 2014 Share Posted March 1, 2014 Thanks for your research and info. I've been using my DiY setup to run graphically intensive games on my Windows 7 bootcamp partition for awhile now but have always wanted to utilize the same setup in OS X.My Setup is similar to yours:Late 2011 13" MBPDiY PE4Lv2.1 + Pico PU + Sonnet Thunderbolt adapterGTX 560Now I've followed your instructions to a T, adding the two extra lines in what I believe is 4 different locations between the two files (1 in the first, 3 in the second) and unfortunately I havn't seen any change whatsoever. On inspection the PCI Cards category reads "There was an error while gathering PCI card information.", the graphics/displays shows only the internal Intel HD 3000, and the thunderbolt section recognizes the Sonnet adapter. But no luck connecting to my monitor. The red light switches to yellow on my eGPU and the fans intensity decreases to a hum just like it would when successfully working under Windows 7.Any idea what I might be doing wrong? Quote Link to comment Share on other sites More sharing options...
Gurdn Posted March 1, 2014 Share Posted March 1, 2014 Problem solved!I followed a similar fix someone else used with the same problem here: A Thunderbolt GPU on a Mac : How-to | Le journal du lapinI'm not sure why it works but apparently after these steps all that was needed was to reset the extension cache which I did using the sudo command referenced in Marc's comment within the page linked to above.Next boot up the monitor flickered out of hibernation and the card was recognized.Thanks a ton! Quote Link to comment Share on other sites More sharing options...
Relentless Posted March 2, 2014 Share Posted March 2, 2014 Thanks floppah.I did a quick comparison of your FireStrike scores against the highest scores for the GTX660 (not-SLI) and found:FPS:Yours: 20.3fpsTheirs: 47.1fpsThis means yours is about 42% of the speed of their (quite ridiculous) gaming machine which is probably completely overclocked and runs a top model i7 desktop CPU. I don't think this is actually a bad result as these guys probably spend their whole lives trying to maximise benchmark scores. Also, I don't think he can just unplug his GPU and take the rest of the machine with him.I wonder what is constraining this? the Thunderbolt 1.0 interface or your MacBook's older i5 CPU.I hope we can see some Thunderbolt 2.0 and Haswell i7 benchmarks soon to answer some of these questions. Quote Link to comment Share on other sites More sharing options...
EpicBlob Posted March 3, 2014 Share Posted March 3, 2014 Thanks floppah.I did a quick comparison of your FireStrike scores against the highest scores for the GTX660 (not-SLI) and found:FPS:Yours: 20.3fpsTheirs: 47.1fpsThis means yours is about 42% of the speed of their (quite ridiculous) gaming machine which is probably completely overclocked and runs a top model i7 desktop CPU. I don't think this is actually a bad result as these guys probably spend their whole lives trying to maximise benchmark scores. Also, I don't think he can just unplug his GPU and take the rest of the machine with him.I wonder what is constraining this? the Thunderbolt 1.0 interface or your MacBook's older i5 CPU.I hope we can see some Thunderbolt 2.0 and Haswell i7 benchmarks soon to answer some of these questions.Most likely the biggest constraint is the i5. I had 13inch macbook pro with a 2415m then upgraded to a mac mini with 3615qm and saw a huge difference. Quote Link to comment Share on other sites More sharing options...
floppah Posted March 3, 2014 Author Share Posted March 3, 2014 I'm going to say its the i5 that is holding everything back. It's the baby version of of a MBP that was never designed with gaining in mind and three years old now ...I play quite a bit of SimCity which admittedly has a pretty poor game engine (the Glassbox simulation, not the graphics engine which is fairly decent actually) and it makes no difference if I play on the highest graphics settings or the lowest because the CPU cannot keep up with the simulation. Quote Link to comment Share on other sites More sharing options...
ScantyChunk Posted March 16, 2014 Share Posted March 16, 2014 Hey, I edited the files accordingly. There ended up being at least 3 in every kext file. I shut down my computer and immediately when starting up, I started up my eGPU and plugged in the expresscard. My mac only sees the Sonnet in my Thunderbolt port. But nothing in my displays section. I have a 2012 15" rMBP. It has a dGPU, so I don't know if that will cause any problems. But if it does then blagh. Any help is mega appreciated Quote Link to comment Share on other sites More sharing options...
Shelltoe Posted March 17, 2014 Share Posted March 17, 2014 Are you sure you updated Extension Cache after you modified the kext files ? I just checked it again and it worked.I'm currently running Lion so no drivers for my GTX 660 TI but the device gets listed under Graphics/Displays as "Monitor" with correct Device ID.Will probably reupdate to Maverricks later and report back. Quote Link to comment Share on other sites More sharing options...
ScantyChunk Posted March 17, 2014 Share Posted March 17, 2014 I didn't see updating the Extension Cache in the instructions, so I tried to look up how to do this and I scraped together these commands: sudo chown root:admin / sudo kextcache -system-prelinked-kernel sudo kextcache -system-caches I get a string of errors from the kext files I just edited. For example: Can't read info dictionary for IONDRVSupport.kext: IOCFUnserialize: syntax error near line 42.2014-03-17 09:23:59.168 kextcache[922:507] There was an error parsing the Info.plist for the bundle at URL Contents/Info.plist -- file:///System/Library/Extensions/NVDAStartup.kext/ The data couldn’t be read because it isn’t in the correct format. <cfbasichash 0x7f9e85911210="" [0x7fff78745f00]="">{type = immutable dict, count = 2,</cfbasichash> entries => 0 : <cfstring 0x7fff78728e00="" [0x7fff78745f00]="">{contents = "NSDebugDescription"} = <cfstring 0x7f9e85942b50="" [0x7fff78745f00]="">{contents = "Found non-key inside <dict> at line 30"}</dict></cfstring></cfstring> 1 : <cfstring 0x7fff7872b3a0="" [0x7fff78745f00]="">{contents = "kCFPropertyListOldStyleParsingError"} = Error Domain=NSCocoaErrorDomain Code=3840 "The data couldn’t be read because it isn’t in the correct format." (Malformed data byte group at line 1; invalid hex) UserInfo=0x7f9e859242c0 {NSDebugDescription=Malformed data byte group at line 1; invalid hex}</cfstring> } So I went to line 42 in IONDRVSupport.kext and it seemed totally fine. I don't know if this is a syntax error, but line 42 is just <key><key>IOPCITunnelCompatible</key></key> (This site won't let me add the key<key> and /key <key>parts. But they're there in the file). which is the command I was instructed to make. Could it be because I edited the files through the info.plist files in their contents? I tried editing the kext files through terminal but all I get is a blank screen. </key></key> Quote Link to comment Share on other sites More sharing options...
Shelltoe Posted March 17, 2014 Share Posted March 17, 2014 "sudo kextcache -system-caches" should be fineso it seems you messed at least with one file. hope you made a backupYour screenshot shows a new document created in nano.Type the following to open the actuall info.plist:sudo nano /System/Library/Extensions/IONDRVSupport.kext/Info.plist Quote Link to comment Share on other sites More sharing options...
ScantyChunk Posted March 17, 2014 Share Posted March 17, 2014 ohhhhhhhhhhh! I can't boot into my OSX anymore . Not even in safe mode haha I'll be back when I fix this. Quote Link to comment Share on other sites More sharing options...
Shelltoe Posted March 17, 2014 Share Posted March 17, 2014 Works flawless using Mavericks. Quick walkthrough: 1. Open Terminal 2. Type/CopyPaste sudo nano /System/Library/Extensions/IONDRVSupport.kext/Info.plist 3. In Nano find all blocks (starting with "<dict>dict") with "<key>CFBundleIdentifier</key>" as first key. ( occurrences: AppleHDAController 1 / IONDRVSupport 3 / NVDAStartup 1 ) 4. Add the following at the end of the recently found blocks (before the ending "</dict>/dict"): <key>IOPCITunnelCompatible</key><true/> <true><true> 5. Press "Ctrl+X" followed by "Y" 6. Repeat Steps 2-5 using the following commands: sudo nano /System/Library/Extensions/NVDAStartup.kext/Contents/Info.plist sudo nano /System/Library/Extensions/AppleHDA.kext/Contents/PlugIns/AppleHDAController.kext/Contents/Info.plist 7. Type sudo kextcache -system-caches 8. Restart</true></true></true> 3 Quote Link to comment Share on other sites More sharing options...
ScantyChunk Posted March 17, 2014 Share Posted March 17, 2014 Reinstalled my OS, and followed Shelltoe's. Whose God-like powers passed onto my macbook. Fantastic walkthrough. Very concise. Thank you! Restarted my computer and it all just worked. I definitely would have tripped and stumbled myself into frustration. That post should be the original post. Or at least a thread of its own. Does anyone know if I need to have my eGPU hooked up to an external monitor in order for it to be utilized? Quote Link to comment Share on other sites More sharing options...
EpicBlob Posted March 18, 2014 Share Posted March 18, 2014 Glad it's working! Another way to repair the kexts is to download kext wizard; after I added the lines to the three kext files I ran kext wizard and it automatically repaired all my kexts. Tested with a 560, 660, and 670.Also, I have a friend whose 770 shows up as a GPU, but not the specific 770. Anyone know why OS X isn't loading the specific model he has? Quote Link to comment Share on other sites More sharing options...
Shelltoe Posted March 18, 2014 Share Posted March 18, 2014 Does anyone know if I need to have my eGPU hooked up to an external monitor in order for it to be utilized?As far as I can tell, your eGPU will only be utilized using an external screen, while you internal will be stuck with the Intel HD 4000.During my benchmark tests GT650m never became the primary GPU of the internal screen even when using gfxcardstatus.Also, I have a friend whose 770 shows up as a GPU, but not the specific 770. Anyone know why OS X isn't loading the specific model he has?Does it show as "Monitor" or whats the actuall problem. I know some GTX 770 cards with 4GB RAM produce errors in OSX because of their high TPD (like 230-250W)Drivers are included in Mavericks and the GPU should show up as Nvidia GK104. Quote Link to comment Share on other sites More sharing options...
griwei Posted May 17, 2014 Share Posted May 17, 2014 Just a quick warning about the latest OS-X upgrade:I automatically downloaded and installed 10.9.3 from Apple and... no more eGPU.I fiddled with it for a while (not being that tech savvy) and gave up.I ended up restoring from a Time Machine backup, thereby stepping back to 10.9.2.As an aside, I clicked on "details" and noticed that 10.9.3 apparently includes changes intended to accommodate 4G monitors. I assume those changes are getting in the way of the quick kext fix for which we were all so grateful.I look forward to hearing from our resident wizards as to how to make everything work with 10.9.3. Quote Link to comment Share on other sites More sharing options...
EpicBlob Posted May 17, 2014 Share Posted May 17, 2014 Just a quick warning about the latest OS-X upgrade:I automatically downloaded and installed 10.9.3 from Apple and... no more eGPU. I fiddled with it for a while (not being that tech savvy) and gave up. I ended up restoring from a Time Machine backup, thereby stepping back to 10.9.2. As an aside, I clicked on "details" and noticed that 10.9.3 apparently includes changes intended to accommodate 4G monitors. I assume those changes are getting in the way of the quick kext fix for which we were all so grateful. I look forward to hearing from our resident wizards as to how to make everything work with 10.9.3. I believe the way to get it working again is to re-apply the kext edits from the files (posted on the first page). After every os x upgrade, the files reset themselves. Im wondering if someone can write a program to auto edit the kexts ) Quote Link to comment Share on other sites More sharing options...
numasoft Posted May 22, 2014 Share Posted May 22, 2014 Hello floppah,I have a mid 2012 macbook pro core i7 running osx 10.9.2 and Asus 24" external monitor. I have very little hardware experience but some software experience. I want to add an external gpu as simply and inexpensively as possible. I am a casual gamer and only play Second Life. Your solution sounds exactly what I need. Are you available for questions and/or consultation on this project?Thanks Quote Link to comment Share on other sites More sharing options...
ocarlisle Posted June 9, 2014 Share Posted June 9, 2014 is there any way you guys could show a noob how to do this? I have built PC's before and work on them even so I'm not a complete noob. But I have a macbook air that barely plays world of warcraft as it is and I want to be able to get better graphics while raiding and what not. I'd rather not spend 2700 on a new macbook pro lol. I dont intend to use windows just WoW on OSX. I'd like to be able to simply plug up my macbook air to the eGPU when I'm home, boot up my LED TV and just play wow on my TV from my wireless keyboard and mouse. If you guys know where a step by step guide is on how to accomplish what I'm trying to do. Please I would be greatly appreciative. my email is [email protected]. Quote Link to comment Share on other sites More sharing options...
Cheesecake Posted July 5, 2014 Share Posted July 5, 2014 Hey guys,can anyone confirm that this setup might not be working with an external Monitor via VGA under OSX? I got my GTX 650 running under Windows 8.1 with my Monitor connected via VGA, however in OSX it stays black and is not recognized. The card shows up though in System Report under graphics. I tried connecting my TV via HDMI under OSX which worked fine. Still I'd prefer to use my monitor over the TV if possible... Quote Link to comment Share on other sites More sharing options...
Shelltoe Posted July 7, 2014 Share Posted July 7, 2014 external works flawless both as separate or mirrored display using apples TB to DVI/VGA adapter. Quote Link to comment Share on other sites More sharing options...
Torsten Posted July 11, 2014 Share Posted July 11, 2014 Has anyone managed to get audio via display port / hdmi to the monitor? It's not listed in the audio output list. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.