Jump to content

2013 13" MBA + GTX670@10Gbps-TB1 (AKiTiO Thunder2) + Win8.1 [ithildin]


Recommended Posts

Here are my current results from testing the AKiTio Thunder2 with a 13" Macbook Air (mid-2013).

OsTVXaWl.jpg?1

Specs:

 

  • Laptop: Macbook Air 13" Core I5-4250u 1.3 GHz dual core (up to 2.6 GHz), 4GB RAM, Intel HD 5000 iGPU, Thunderbolt v1 port
  • Windows 8.1 Pro N 64-bit UEFI boot as default option
  • GPU1: EVGA GTX 670 FTW 2GB
  • GPU2: Gainward GTX 460 GS 1GB

 

Set up:

 

 

Observations:

 

  • The Macbook Air disables the internal screen automatically when it detects an eGPU so Optimus is not engaged. I've tried Evo*'s guide to enabling the iGPU on Macbook Pros but this implementation is bugged for the Macbook Air (clocks CPU down to max 1.3 GHz, disables laptop keyboard and trackpad).
  • All three Nvidia cards (GTX 460, 670 and 970) boot up and are recognized correctly. I had problems with the GTX 460 at first but updating its VBIOS allowed it to work with the Thunder2 adapter under UEFI boot conditions.
  • The only AMD card I've tested with this setup (Sapphire R9 290X 4GB) failed to boot. The same configuration successfully booted when connected to an Intel NUC instead of the Macbook Air.
  • The EVGA GTX 670 FTW 2GB is unstable as an AKiTiO Thunder2 eGPU. After substantial testing with multiple power configurations and different cables, I came to the conclusion that any high demand application (benchmark software, games) would eventually cause Windows to crash with the GTX 670. This problem is not apparent with the GTX 460/970 and the GTX 670 works fine in a regular desktop machine so this issue may be due to GPU-to-Thunder2 impedance mismatch, as suggested by Tech Inferno Fan and juniordiscart.
  • The EVGA GTX 970 SC ACX 2.0 is fully stable with the AKiTiO Thunder2. I managed to run a substantial suite of tests continuously for several hours without a single problem.

 

Results:

GTX 970:

TN0PIJw.gif

 

  • 3DMark06: 15233
  • 3DMark Vantage (graphics): P14587 (22361)
  • 3DMark 11 (graphics): P7280 (13144)
  • 3DMark Firestrike: 6803 (10274)
  • Unigine Heaven: Extreme 58.6 fps, Score 1476
  • Unigine Valley: Extreme HD 46.5, Score 1944
  • CUDA-Z:
    Memory Copy Pinned Pageable
    Host to Device 792.262 MiB/s 677.892 MiB/s
    Device to Host 893.463 MiB/s 746.893 MiB/s
    Device to Device 64.2137 GiB/s  
    GPU Core Performance    
    Single-precision Float 4054.58 Gflop/s  
    Double-precision Float 142.48 Gflop/s  
    32-bit Integer 1476.71 Giop/s  
    24-bit Integer 945.449 Giop/s  

 

GTX 460:

 

 

GTX 670 (sold):

 

Memory Copy Pinned Pageable
Host to Device 796.536 MiB/s 678.324 MiB/s
Device to Host 903.53 MiB/s 801.042 MiB/s
Device to Device 69.6637 GiB/s  
GPU Core Performance    
Single-precision Float 1874.95 Gflop/s  
Double-precision Float 135.806 Gflop/s  
32-bit Integer 540.554 Giop/s  
24-bit Integer 539.788 Giop/s  

 

 

Coming next:

 

  • Enclosure - Instead of a fully custom enclosure, I've decided to go for the Silverstone Sugo SG-05. This case has a small footprint yet enough room for a 450W SFX PSU and a 10-10.5" long GPU.

 

post-28168-14494999181602_thumb.jpg

 

  • Mini-ITX tray for AKiTiO Thunder2 and other electronics. I'm using a laser cutter to make this out of an acrylic sheet and mount the AKiTiO's PCBs with standoffs and screws - I will post the design here once it's finalized.
  • Power and case fan speed control with Arduino. This is meant to enable power control and monitoring from the front panel buttons and LEDs. In addition to power LED and toggle switch, the Arduino will monitor temperature inside the case and adjust case fan speed accordingly. Power from the Arduino comes from the +5V PSU stand-by line.
  • GPU upgrade. I've sold the GTX 670 and replaced it with a brand new EVGA GTX 970 SC ACX 2.0. Unlinke its predecessor, the GTX 970 performs beautifully with the AKiTiO, except for some moderate coil whine.

 

Work in progress pictures:

01p3rEXl.jpg

NOM9wvss.jpg5EZIfpos.jpgiJpbUI7s.jpg

Updates:

2015-01-12: Over the holidays, I tested my set up more extensively and found that it is inherently unstable. This is most likely a GPU issue, potentially due to impedance mismatch, that prevents it from performing stably with the AKiTiO Thunder2 as an eGPU. I will be collecting more data with alternative GPUs. I will also post an update soon with details on my enclosure (Silverstone SG-05) and some of the custom parts I am putting together (plastic tray to hold the AKiTiO circuit boards and an Arduino controller for the front LEDs and power button).

2015-01-18: I've hooked up an Arduino Uno board to the SFX PSU using a modded 24-pin ATX connector. With some simple code, the Arduino can toggle the PSU on or off upon pressing the front power button on the SG-05 case. The Arduino is also measuring ambient temperature with a TMP36 sensor - next step is implementing the 12V circuit to drive the fan!

2015-02-24: After many fruitless attempts at stabilizing my setup with the GTX 670, I upgraded the GPU to an EVGA GTX 970 SC ACX 2.0 (04G-P4-2977-KR). Preliminary stress tests running Firestrike on a loop showed no stability problems. I will continue running a full set of benchmarks with the new GTX 970 and post the results here soon.

2015-03-01: First set of benchmark results with the GTX 970 show much improved stability and performance. I was able to run a comprehensive suite of tests over several hours without a single hiccup. My unit has considerable coil whine so I'll be returning it to upgrade it to a GTX 970 FTW+. Next steps are to run some in-game benchmarks and record some sample videos. I will also continue working on the Arduino fan/power control and will post the final design and code through Fritzing.

post-28168-14494999181178_thumb.jpg

post-28168-14494999181389_thumb.jpg

  • Thumbs Up 2
Link to comment
Share on other sites

Good job buddy!

If you happen to have any of the following games I'd love to see some gaming results: Borderlands 2, left4dead2, CIV5 or DOTA2. Other games would be awesome too,

Thanks man!

Sure, I'll test the set up on a few of those games.

You did not power the AKiTo?

Like jacobsson mentioned, the powered riser feeds the AKiTiO Thunder2 so the DC adapter is redundant. I still need to test how the GTX 670 behaves without a powered riser (using the AKiTiO 25W PCIe slot power instead).

Does it work internally? :)

Not for now, unfortunately. The internal Intel GPU is still detected by Windows but the Macbook screen is turned off automatically on boot. I still need to play with it some more - there might be a hidden setting somewhere in the Intel drivers that can re-enable the internal screen. Also, I haven't implemented the eGPU on OS X but it should be possible.

  • Thumbs Up 1
Link to comment
Share on other sites

  • 4 months later...
2015-01-18: I've hooked up an Arduino Uno board to the SFX PSU using a modded 24-pin ATX connector. With some simple code, the Arduino can toggle the PSU on or off upon pressing the front power button on the SG-05 case. The Arduino is also measuring ambient temperature with a TMP36 sensor - next step is implementing the 12V circuit to drive the fan!

Can you go into detail? That sounds interessting ;)

Link to comment
Share on other sites

With the EVGA GTX670 instability issue, I'd suggest testing the video card inserted directly into the AKiTiO PCIe slot. That means there are no PCIe risers/extenders that could add impedance-matching reflections. There you'd be running the AKiTiO out of the chassis powered up via a barrel-to-molex adapter and do instability testing under load.

Link to comment
Share on other sites

Can you go into detail? That sounds interessting ;)

Sure! I wanted to be able to use the computer case's front button panel to turn the eGPU on or off. The issue is that all modern ATX/ITX computer cases come with momentary push switches to trigger power and reset but ATX/SFX power supplies require a toggle switch to connect the PS_ON pin to a ground pin in the 24-pin motherboard connector, which you can accomplish with a SWEX or using the paperclip trick. Modern motherboards accomplish this by maintaining an active circuit, even with the computer is off, and respond to a momentary press of the ON button to trigger the PSU on. Since we're not using motherboards, I needed to figure out a basic electronic circuit that would accomplish this same function so I decided that this was a good opportunity to play with an Arduino and use it to build a basic power control device for my eGPU. Since the Arduino microcontroller can be programmed to perform to a wide variety of different functions, I thought about going beyond power control and also use it to monitor temperature inside the case and control the case fan.

So far, I've put together a simple circuit with an Arduino to toggle an LED upon pressing a button (see here) and to measure ambient temperature (a barebones version of the "Lover Meter" starter kit example

). I then made a custom ATX 24 pin adapter following these instructions. I then hooked up the Arduino to the stand-by +5V supply from the SFX PSU, replaced the push button on the breadboard with a connection to the SG-05 case power switch and then I connected a line to the PS_ON pin instead of the LED. The same code that controlled the LED now switches the PSU on or off. You can't use the the Arduino's USB while it's hooked up to a separate 5V supply so I had to wire up an LCD module to display the temperature readings and the PSU state while everything is running off the SFX PSU but I'll probably remove the LCD once I'm happy with the design.

For now, here's a short video to show how the current version is working:

  • Thumbs Up 2
Link to comment
Share on other sites

With the EVGA GTX670 instability issue, I'd suggest testing the video card inserted directly into the AKiTiO PCIe slot. That means there are no PCIe risers/extenders that could add impedance-matching reflections. There you'd be running the AKiTiO out of the chassis powered up via a barrel-to-molex adapter and do instability testing under load.

You're right that the riser cable adds to impedance mismatch/signal reflection problems. I've tried hooking the GTX 670 directly to the AKiTiO PCIe slot and feeding power through a DC barrel adapter - it's better but still not stable. With a riser cable/adapter, running the full 3DMark test suite crashes the system (usually halfway through Firestrike). When I connect the GPU directly to the Thunder2 PCIe slot, the first round of 3DMark tests finishes successfully but the system eventually crashes if I repeat the 3DMark tests, usually during the second round.

Link to comment
Share on other sites

I've just done another round of tests with the GTX 670 directly connected to the Thunder2's PCIe slot. Additional PCIe bus power was provided through a modded DC barrel plug hooked up to the PSU. This time, I tried to mechanically stabilize all PCIe connections: between the GPU and the Thunder2 PCIe slot as well as between AKiTiO's TB controller + daughtercard. I secured both AKiTiO's cards firmly to a custom acrylic tray, mounted the GPU horizontally above the Thunder2 and braced it as well as I could. The system boots fine with the GTX 670 but the stability problem remains unresolved - I got a massive slowdown spike halfway through the first run of FireStrike and Windows crashed and rebooted soon after.

Thinking that my GTX 670 picked up a problem during my eGPU experiments, I plugged it back into my desktop rig and tested it by running Firestrike continuously - no issues after about 1h so the GTX 670 is fine.

I've been also trying to hook up my AMD R9 290X to the Thunder2. For some reason, Windows won't turn on the external monitor when the 290X is hooked up, with powered riser cable or when I connect the GPU directly to the Thunder2. On the other hand, OS X Yosemite boots just fine with the 290X so it must be a Windows issue. I've tried running Unigine Valley on Extreme HD on OS X. I can leave it running on a loop for over 30 mins without a problem but, when I start benchmarking, the system grinds to a halt as soon as it completes and the results on the screen...bizarre. I'll try to see if it's a specific problem with Valley or a broader stability issue.

Next, I'll run some tests with the Thunder2 + GPUs hooked up to an Intel Thunderbolt NUC.

Link to comment
Share on other sites

  • 1 month later...

Quick update on this project:

I replaced the GTX 670 FTW with a GTX 970 FTW+ and stability has improved by leaps and bounds. The system is now completely stable and performance is great! With the latest Windows updates (Feb 2015) the Intel GPU on the Macbook Air is no longer disabled at boot so Optimus is now possible without compromising any functionality. Here is a snapshot of Optimus in action:



External monitor

Internal (Optimus) Performance ratio (int/ext)
3DMark Firestrike (graphics score) 6206 (10440) 5787 (9051) 93.2% (86.7%)
Unigine Valley (Extreme 1440x900) Score:2350

FPS: 56.2
Score:2322 FPS:55.5 98.8%


The performance hit seems minimal, at least on these synthetic benchmarks, and arguably negligible considering the benefit of not requiring an external monitor. I will add some gaming benchmark results but these first set of numbers are very promising.

I've rebooted the machine several times just to confirm Optimus was robust. I will try to revert the drivers back to their previous state to confirm that these were indeed what enabled Optimus.

A small side note for users trying the GTX 970 FTW+ with an ST45SF-G power supply - even though the provided PCIe power cable comes 6 and 8 pin plugs, it's not capable of powering this GPU on its own. I left the PCIe cable hooked up to the 8 pin socket and used a separate power cable + molex-to-6-pin converter. As a result, 3DMark Firestrike went up from 4014 to 6206. See post below for updated info on FTW+ performance loss.
  • Thumbs Up 3
Link to comment
Share on other sites

A huge improvement in 3DMark Firestrike physics! But that shouldn’t be power consuming at all if it tests only the CPU as 3DMark11. Are you sure it’s because of using a separate 6pin power plug from the PSU to assist that 8pin from a blue? I use only the blue with 8pin+6pin heads and self-made 8pin to 4pin molex + molex-to-barrel adapter. I have occasionally noted different 3DMark11 physics results depending on my power configuration, especially when testing with those unstable Asus AMD cards.

By the way, have you already sold your unstable cards, particularly the R9 290X? You said you were not able to boot into Windows with that card. Did you try AMD’s Boot Camp driver and Evo*’s Optimus enabling method with alt/option key down, attaching the monitor cable after boot into Windows?

Link to comment
Share on other sites

A huge improvement in 3DMark Firestrike physics! But that shouldn’t be power consuming at all if it tests only the CPU as 3DMark11. Are you sure it’s because of using a separate 6pin power plug from the PSU to assist that 8pin from a blue? I use only the blue with 8pin+6pin heads and self-made 8pin to 4pin molex + molex-to-barrel adapter. I have occasionally noted different 3DMark11 physics results depending on my power configuration, especially when testing with those unstable Asus AMD cards. I have ruined the included 8pin cable, but maybe I have another one somewhere so that I could test the same…

I've realized that there are two variables at play here, the power configuration and the new driver (9.18.13.4752 vs. 9.18.13.4709). I'll try changing back to the old power config (just using the blue PCIe cable for 6+8 pin PCIe power) without touching the driver and see if the loss of performance is still present.

The reason I am still convinced it's a power issue is because I ran a EVGA GTX 970 SC (6+6 pin PCIe power) with the old drivers + single PCIe power cable and the Firestrike results were very similar to what I'm seeing now (6083). I shipped the GTX 970 SC back to EVGA in order to Step Up to a 970 FTW+. Once the new card arrived, I connected it with a single power cable as before (8+6 pin PCie power) , ran Firestrike and immediately noticed the low scores. After closing 3DMark and using the desktop, the display flickered on/off a few times - it was odd and seemed like the there was something up with the GPU. When I opened the case, the PCIe power cable was warm to the touch so I guessed that was the issue. I changed the power config to split the load across two different cables, re-tested and all the numbers improved.

By the way, have you already sold your unstable cards, particularly the R9 290X? You said you were not able to boot into Windows with that card. Did you try AMD’s Boot Camp driver and Evo*’s Optimus enabling method with alt/option key down, attaching the monitor cable after boot into Windows?

I've sold the GTX 670 FTW but still have the R9 290X. Yes, the R9 290X fails to boot with my Macbook Air but only with Windows 8.1. I've tried pre-installing AMD's boot camp driver - made no difference. I've also tried Evo*'s mod some time ago but it screwed up with the MBA's keyboard/touchpad and Intel Speedstep so I reverted back to vanilla EFI. The R9 290X boots well with either Macbook Air + OS X Yosemite or with Intel NUC + Windows 8.1. In both of these cases, the GPU is not stable though - it crashes with high demand apps. I haven't yet tried the taping trick - maybe this will help.

Link to comment
Share on other sites

Very interesting discovery. The blue plug gives three yellow wires, maybe they are not thick enough. Let me know if it turns out to be the reason.

When you say the R9 290X fails to boot, do you mean that you cannot even get the Windows login screen or that GPU is not listed under device manager? Sometimes some of my cards with a back-powered riser won’t be recognized when you need to install the driver, but attaching the GPU directly at x16 slot and using molex-to-barrel adapter often helps. And yes, that taping trick is worth to try. I am now focused on those peculiarly behaving Asus AMDs in low power conditions.

Link to comment
Share on other sites

When you say the R9 290X fails to boot, do you mean that you cannot even get the Windows login screen or that GPU is not listed under device manager? Sometimes some of my cards with a back-powered riser won’t be recognized when you need to install the driver, but attaching the GPU directly at x16 slot and using molex-to-barrel adapter often helps. And yes, that taping trick is worth to try. I am now focused on those peculiarly behaving Asus AMDs in low power conditions.

It's hard to say - Windows was clearly recognizing that a second GPU was connected because the iGPU was disabled right at the Windows logo stage. It's just that I never got image back, either on the Macbook display or on the external monitor hooked up to the R9 290X, so I'm guessing it failed to initialize. I tried blindly typing in my password to see if it would log in but I didn't hear any sound from the speakers or see the keyboard backlight coming on so I assumed it crashed. On OS X, there was no issue booting it up so I think the issue is specific to Windows & Intel GPU drivers and how they behave by default on the Macbook Air. In fact, when I tried to use an Intel NUC, the R9 290X was initialized on boot but I still had picture from the iGPU and thus could log in and install Catalyst drivers as per usual.

I tried hooking the R9 290X directly to the AKiTiO while powering the PCIe slot with a DC barrel adapter but it didn't seem to make a difference.

  • Thumbs Up 1
Link to comment
Share on other sites

OK I ran a few more experiments and it turns out that the PCIe power cable is not an issue. The boot state (Optimus vs. external monitor only) of the eGPU is what determines the numbers in Firestrike. When I tried to revert driver versions, I noticed that the system reverted back to the old behaviour (disabling the iGPU upon boot) and kept working like this until I powered the Macbook Air down AND disconnected the Thunderbolt cable. Once everything is disconnected and reconnected, the next system boot will have Optimus enabled.

Here is a summary of what I have done:

  • Switched drivers between 9.18.13.4752 and 9.18.13.4709

  • Alternated between using one or two separate PCIe cables to power the GTX 970 FTW+
  • Changed between Optimus to eGPU-only (iGPU disabled) boot modes

I ran Firestrike on all combinations of driver version, power config and boot mode. The conclusion is that in Optimus Firestrike scores are >6000 whereas in iGPU disabled mode the scores drop to ~4000. Driver version or power configuration had no influence in these results.

Despite my initial concerns, powering with a single PCIe power cable seems to be OK - the image flickering I had noticed before was simply Windows 8.1 silently updating the GPU drivers. I didn't test the two power configurations too extensively but I saw no difference in the Firestrike results.

I currently don't have a good explanation for why the system takes such a performance hit when running with iGPU disabled since the FTW+'s predecessor, an EVGA GTX 970 SC ACX 2.0, got >6000 on Firestrike without Optimus. In both cases, PhysX was configured to used the GPU and nothing stood out from monitoring the card using GPU-Z during the benchmarks. It is possible that this behaviour is specific to this specific card but I'm not sure why/how.

Optimus working on the Macbook Air cannot be attributed to the new Nvidia drivers (v9.18.13.4752) since it also works with older drivers (9.18.13.4709). Instead, Optimus may have been enabled by another Windows update (e.g. KB3000850) or due to a particular feature of the VBIOS on the GTX 970 FTW+. Reverting a cumulative Windows update can be tricky but I can easily test the latter hypothesis by trying to get Optimus to work with my GTX 460.

  • Thumbs Up 3
Link to comment
Share on other sites

Another quick update - I've figured out that the GTX 970 FTW+ is the critical component to enable Optimus on my set up. I've tried using my GTX 460 and couldn't get Optimus to work, despite several attempts and using the latest drivers. I replaced the GTX 460 with the GTX 970 FTW+, reconnected everything and Optimus worked right away. Thus, Optimus was not enabled by an update or a new Nvidia driver version. I can only conclude that there is something specific about the GTX 970 FTW+ card (perhaps the VBIOS) that allows for Optimus to work with the Macbook Air, either because it's more flexible in terms of resource allocation or somehow tricks the MBA's EFI to keep the iGPU active.

The fact that I could get Optimus to work with the EVGA GTX 970 FTW+ but not with an older GTX 970 model (GTX 970 SC, 04G-P4-2977-KR) is curious. The GTX 970 FTW+ is a second generation GTX 970 from EVGA with a number of improvements, including extra power phases (higher max TDP) and a physical VBIOS toggle switch (like the silent/Uber switch found in the AMD R9 290X). Either VBIOS setting (dBi or FTW performance) works with Optimus - perhaps it's this custom EFI VBIOS design that makes Optimus on the Macbook Air possible.

Link to comment
Share on other sites

  • Tech Inferno Fan changed the title to 2013 13" MBA + GTX670@10Gbps-TB1 (AKiTiO Thunder2) + Win8.1 [ithildin]

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.