Jump to content

2011 13" MBP + GTX660@10Gbps-TB1 (Sonnet EE Pro) + Win8.1/OSX10.9.1 [floppah]


Recommended Posts

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.

post-22593-14494997191731_thumb.jpg

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:

  1. Go through initial bootcamp process: Create Windows USB installer, download bootcamp drivers and have them copied on the USB stick as well.
  2. Abort bootcamp after 1 is done, don’t let it create a partition.
  3. Open Disk Utility and create a partition for windows manually
  4. Reboot and hold option/alt. The windows USB drive should show in the bootable devices list.
  5. 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.

post-22593-14494997191893_thumb.jpg</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

  • Thumbs Up 6
Link to comment
Share on other sites

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 ...

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

  • 2 weeks later...

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" MBP

DiY PE4Lv2.1 + Pico PU + Sonnet Thunderbolt adapter

GTX 560

Now 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?

Link to comment
Share on other sites

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 lapin

I'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!

Link to comment
Share on other sites

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.3fps

Theirs: 47.1fps

This 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.

Link to comment
Share on other sites

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.3fps

Theirs: 47.1fps

This 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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

  • 2 weeks later...

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.

post-17059-14494997361091_thumb.png

Any help is mega appreciated :D

post-17059-14494997360101_thumb.png

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

post-17059-1449499736349_thumb.png

</key></key>

Link to comment
Share on other sites

"sudo kextcache -system-caches" should be fine

so it seems you messed at least with one file. hope you made a backup

Your 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

Link to comment
Share on other sites

Works flawless using Mavericks.

post-6707-14494997364116_thumb.png

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>

  • Thumbs Up 3
Link to comment
Share on other sites

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?

post-17059-14494997364441_thumb.png

Link to comment
Share on other sites

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?

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

  • 1 month later...

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.

Link to comment
Share on other sites

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 :))

Link to comment
Share on other sites

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

Link to comment
Share on other sites

  • 3 weeks later...

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].

Link to comment
Share on other sites

  • 4 weeks later...

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...

Link to comment
Share on other sites

  • Tech Inferno Fan changed the title to 2011 13" MBP + GTX660@10Gbps-TB1 (Sonnet EE Pro) + Win8.1/OSX10.9.1 [floppah]

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.