Jump to content

Recommended Posts

<span style="font-size:large">Briefly: i5-3210M 2.5 13" MBP + TH05 + GTX660@x2 2.0 Win8 DIY eGPU implementation</span>

I managed to get my hands on a 2012 13" Macbook Pro which I paired successfully with a TH05 + GTX660 + Win8. I concur the findings of users Shelltoe and oripash - there are two ways of installing Win8 which significantly affect the ease of eGPU use.

The first (UEFI MODE) requires a little more skill to get Win8 loaded initially but the eGPU functionality is plug-and-play thereafter. It's the recommended mode to use. The second (BIOS MODE) is the default Bootcamp 4.0/5.0 method so it's likely users will find themselves in this less desirable mode. More details of both are below:

1. UEFI MODE [recommended]

If install Win8 using oripash's guide http://forum.techinferno.com/diy-e-gpu-projects/2494-macbook-air-11-2012-gtx-660ti-%40-2-2-no-opt.html#post33280 and Teknotronix' http://forum.techinferno.com/diy-e-gpu-projects/2385-17-macbook-pro-late-2011-th05-win-8-setup-guide.html#post31839 then just need to set TH05 SW1=1 (PERST# from PortRidge), SW2=2-3 (x2..x16) . Boot into Win8 where the eGPU will work out of the box. There will be no error 12. It's a plug-and-play configuration.

Unlike Teknotronix, I found no need to use a surrogate system to install the UEFI version of Win8. I could boot the MBP, hit ALT key and select either the Win8 Pro MSDN Installation DVD or USB stick copy of it and perform the installation. Only important point being I had to select the "EFI" DVD or USB stick.

2. BIOS MODE [avoid if possible]

A Bootcamped MBP runs a MBR type partition system. It requires a special sequence to get the eGPU detected. I found Win8 would *always* get an error 12 against the eGPU and if don't get the timing right I could end up with either no eGPU on the PCI BUS or if use the TH05 setting as UEFI mode above (SW1=1), the Macbook will power itself off when trying to boot Win8.

The 100% successful method to get the eGPU on the PCI BUS in this mode is to set SW1=3 (6.9s), SW2=2-3 (x2..x16) on the TH05, poweron the eGPU+TH05, poweron the Macbook. Hit ALT during boot to get a boot selection. Watch the RED PERST# LED on the TH05. When it's no longer red then the eGPU is on the PCI BUS so can select your required OS. It's also possible to flick switch SW1 to SW1=2 (500ms) to hasten the process of getting PERST# to no longer be RED while at the ALT screen or Setup 1.1x screen if the delay is too long for your system. The delay turns out to be more like 30s than 6.9s.

The most convenient fix for the error 12 that will be seen in Windows 8 is:

<ol><li>Install Setup 1.1x onto a USB stick.

<li>Configure it's \config\pci.bat to contain a replica of the same configuration UEFI boot uses for the eGPU, captured and translated below:


echo Performing PCI allocation for 2012 MBP (BIOS) matching the UEFI settings . . .

:: The X16 root port
@echo -s 0:1.0 1c.w=6030 20.l=AE90A090 24.l=CDF1AEA1 > setpci.arg

:: Underlying Bridges in order from high to low
@echo -s 4:0.0 1c.w=5131 20.l=AB00A090 24.l=C9F1B801 >> setpci.arg
@echo -s 5:4.0 1c.w=4131 20.l=A700A200 24.l=C5F1B801 >> setpci.arg
@echo -s 8:0.0 04.w=7 1c.w=3131 20.l=A300A200 24.l=C1F1B801 28.l=0 30.w=0 3c.b=10 >> setpci.arg
@echo -s 9:0.0 04.w=7 1c.w=3131 20.l=A300A200 24.l=C1F1B801 28.l=0 30.w=0 3c.b=10 >> setpci.arg

:: The NVidia GTX660
@echo -s a:0.0 04.w=400 0C.b=20 24.w=3F81 10.l=A2000000 14.l=B8000000 1C.l=C0000000 3C.b=10 50.b=1 88.w=140 >> setpci.arg

setpci @setpci.arg
set pci_written=yes
@echo off

<li>Configure the \config\startup.bat to do the pci-e fixups and then chainload to Win8.


call speedup lbacache

:: wait for eGPU to be on the PCI BUS
call vidwait 60 10de:11c0

:: initialize NVidia eGPU
call vidinit -d 10de:11c0

:: Perform the pci-e fixups
call pci

:: Chainload to the MBR
call grub4dos mbr
:: Speed up end-to-end runtime of startup.bat using caching

<li>Confirm this fixes error 12 against the eGPU as it did for me.</ol>

Once confirmed to work, streamline this into the more convenient and faster booting disk image install of Setup 1.1x. It's more convenient as you'll no longer need to hit ALT to boot the USB stick. Instead, you'll have a DIY eGPU Setup 1.x Win8 bootitem.

Proceed to copy your \config\pci.bat and \config\startup.bat from your USB stick to the Setup 1.1x disk image V:\config directory as mounted within Win8. The reason can't just use the disk image install for everything is because a Macbook doesn't do the disk mapping correctly so can't be used within the Setup 1.1x pre-boot environment to configure the system. Instead, the USB stick is used for initial configuration and when done, the pertinent configuration files copied across to the disk image for read-only access.

  • Thumbs Up 1
Link to comment
Share on other sites

Nice Nando. Yeah imho setting up an EGPU is actually easier in EFI ... if you know how to install windows EFI mode which can be a bit tricky though.

On NBR there's a guy who says he's got optimus running by default on his MBPr 15". But I guess he's talkin trash as he doesn't want to answer my questions.

Had Optimus installed once but GT 650m was used allways (tray shows: used by "displayport"). I can force VGA OUT on Intel HD and its actually running off screen. Received some strangly low results for 3D mark 11 while using Intel HD (like 800p?) with gt GT650 / GTX 660 ti showing up in resultsbrowser.

Found some hints on switching GPU/Display.

Like 4 IO-Ports need to be changed while Windows is up:

echo Switch select
outb 0x728 1
echo Switch display
outb 0x710 2
echo Switch DDC
outb 0x740 2
echo Power down discrete graphics
outb 0x750 0

Which has to be coded into a programm some way cause windows blocks those modifications by default.

Found some libraries that could actually help.

Link to comment
Share on other sites

Nice Nando. Yeah imho setting up an EGPU is actually easier in EFI ... if you know how to install windows EFI mode which can be a bit tricky though.

On NBR there's a guy who says he's got optimus running by default on his MBPr 15". But I guess he's talkin trash as he doesn't want to answer my questions.

Had Optimus installed once but GT 650m was used allways (tray shows: used by "displayport"). I can force VGA OUT on Intel HD and its actually running of screen. Received some strangly low results for 3D mark 11 while using Intel HD (like 800p?) with gt GT650 / GTX 660 ti showing up in resultsbrowser.

Found some hints on switching GPU/Display.

Like 4 IO-Ports need to be changed while Windows is up:

echo Switch select
outb 0x728 1
echo Switch display
outb 0x710 2
echo Switch DDC
outb 0x740 2
echo Power down discrete graphics
outb 0x750 0

Which has to be coded into a programm some way cause windows blocks those modifications by default.

Found some libraries that could actually help.

Yup.. MBP eGPU owners should avoid Win7 and bootcamp. Go straight to Win8 installed in UEFI mode for a plug-and-play eGPU implementation.

According to EFI shell help the mm command has the syntax is as follows:



Displays or modifies MEM/MMIO/IO/PCI/PCIE address space

Address - Starting address
Value - The value to write
-MEM - Memory Address type
-MMIO - Memory Mapped IO Address type
-IO - IO Address type
-PCI - PCI Configuration Space Address type
-PCIE - PCIE Configuration Space Address type
Address format: 0x00000ssbbddffrrr
ss - Segment
bb - Bus
dd - Device
ff - Function
rrr - Register
-w - Unit size accessed in bytes:
1 - 1 byte
2 - 2 bytes
4 - 4 bytes
8 - 8 bytes
-n - Non-interactive mode
MM Address [Value] [-w 1|2|4|8] [-MEM | -MMIO | -IO | -PCI | -PCIE] [-n]

Meaning, you should be able to code the above in your rEFIt or rEFInd shell as something like:

mm 0x728 1 -IO
mm 0x710 2 -IO
mm 0x740 2 -IO
mm 0x750 0 -IO

GTX660 - RE5 internal DX9 var benchmarks: x1.2Opt vs x2 2.0

re5dx9var1280x800dx9x22.th.jpg re5dx9var1280x800dx9x12.th.jpg

GTX660 at x2 2.0 versus x1.2Opt. 117.0 vs 95.9. Huge difference.

I forced a x1 link on the TH05 by cellophane taping all tracks past the seventh on the second section of the PCIe slot. The NVidia driver will see the 13" MBP's HD4000 and the x1 link, engaging pci-e compression so I get x1.2Opt. We see clearly the x2 2.0 link does significantly better than the x1.2Opt link when using the internal LCD.

AMD likely the better performer on a x2 2.0 or x4 2.0 Thunderbolt interface

Now prior to discovering Optimus' pci-e compression on a x1 expresscard/mPCIe link back in 2010, a ATiAMD card running at full duplex (x1E) was the better performer.

Now a Thunderbolt port runs off the Intel Northbridge, a completely different pathway. So if a AMD card negotiates full duplex speed we can speculate a HD7870 to perform noticably better than it's competitor, a GTX660, on a Thunderbolt x2 2.0 or x4 2.0 link due to it's lower bandwidth requirements.

Only things still favoring a NVidia card then would be the transparent internal LCD mode provided by the Optimus drivers and the CUDA processing. LucidLogix Virtu can provide the former or could investigate if can spoof necessary signatures in the ACPI tables to enable the AMD switchable graphics.

Need a AMD card to put the speculation to rest.

Link to comment
Share on other sites

Yup.. MBP eGPU owners should avoid Win7 and bootcamp. Go straight to Win8 installed in UEFI mode for a plug-and-play eGPU implementation.

According to EFI shell help the mm command has the syntax is as follows:

MM Address [Value] [-w 1|2|4|8] [-MEM | -MMIO | -IO | -PCI | -PCIE] [-n]

...

I forced a x1 link on the TH05 by cellophane taping all tracks past the seventh on the second section of the PCIe slot. The NVidia driver will see the 13" MBP's HD4000 and the x1 link, engaging pci-e compression so I get x1.2Opt. We see clearly the x2 2.0 link does significantly better than the x1.2Opt link when using the internal LCD.

yeah i actually tried the mm command allready (guess they are active right now) but without results. that's why id like to modfiy the values while i'm in windows which seems quiet hard to do.

could you provide an image of your taping? i tried it some day's ago but failed :D maybe i should try it again.

virtu drivers don't work for me. they fail with some error.

regarding my Intel HD:

here are some of those strange 3D Mark results

and some screens of the UI:

unbenannt1av.png unbenanntetq.png

Link to comment
Share on other sites

Hi,

thank you for alle the information.

I have two questions: Can you tell me the exact problems you run into when you try eqpu with Win 7 in EFI Mode? Theoretically i cannot see the difference to Win 8 in EFI Mode.

And my second question would be: I have a Macbook Air 2012. Do you see any fundamental difference to the Macbook Pro that would interfere with an egpu on my system with windows?

Thank you!

google

Link to comment
Share on other sites

yeah i actually tried the mm command allready (guess they are active right now) but without results. that's why id like to modfiy the values while i'm in windows which seems quiet hard to do.

could you provide an image of your taping? i tried it some day's ago but failed :D maybe i should try it again.

Those images of the Intel HD4000 system tray look promising. They wouldn't appear if the HD4000 wasn't installed and functioning. Well, you can try taping you card to only make the first lane available. I did it by leaving the first 7 tracks accessible on the second half of the pcie slot as shown below. It's just a small piece of cellophane tape that I ran on both sides to cover lanes 2 onwards.

If x1.2Opt engages then you'll get a 3dmark06 score that's higher than your x2 2.0 results.

gtx660x1forced.th.jpg

Link to comment
Share on other sites

Hi,

I have two questions: Can you tell me the exact problems you run into when you try eqpu with Win 7 in EFI Mode? Theoretically i cannot see the difference to Win 8 in EFI Mode.

And my second question would be: I have a Macbook Air 2012. Do you see any fundamental difference to the Macbook Pro that would interfere with an egpu on my system with windows?

well you will have to inject some boot files into your win7 image. even pc-based uefi systems run into problems without it.

mba can be compared to mbp 13" i guess. there's no dgpu right?

If x1.2Opt engages then you'll get a 3dmark06 score that's higher than your x2 2.0 results.

thanks i'll try it.

Link to comment
Share on other sites

from the eGPU experiences thread:

Hi Guys,

Just want to give my details on my eGPU experience,

Firstly I have to thank Nando who's actually provided a lot of help and without him this community wouldn't be where it is today.

Another huge thanks to Shelltoe who gave his eGPU experience and helped me a whole lot in getting my set up working.

I should also mention Oripash on another forum who actually provided a guide.

I essentially used Shelltoes setup on my 13" Retina Macbookpro.

Installed windows using REFIT. I won't go into a whole lot of detail as it's already provided.

Setup:

- Retina 13" Macbook Pro i7 8GB 512GB

- Bplus Th05

- GPU Palit GTX 670

- Display External (unable to use internal for now)

Installing windows 8 via USB using REFIT was a breeze very simple and easy.

The issue I came across after installation which I'd assume most would come across is no display or weird graphical glitch which are probably due drivers.

Below is a picture of what I came across. The way around is to delete the igdkmxd64.sys file. The easiest way I found was to boot via the windows 8 USB that I created and going into command prompt and deleting the file from there.

Once that file is deleted you will see Windows 8 how it should be displayed.

[ATTACH=CONFIG]5377[/ATTACH]

From there, followed what Shelltoe provided in his Macbook Pro Retina 15" thread.

I followed it to the tee but would come across no display, then realised I had to try it in an external monitor as the internal would not work which I was always trying it on.

Hopefully I can get the internal display working. Here are my results on Vantage and 3dmark 11 and a pic of the setup. The physics are quite low, can go from high 3k to low 4k in 3dmark 11.

3dmark11 P6098

3d mark vantage P19501

[ATTACH=CONFIG]5378[/ATTACH]

there are some problems with HD 4000 right now.

i guess it should be possible to make the Intel HD work as i can run it offscreen without igdkmxd64.sys problems using the latest drivers 15.288 ... i can't really use it anyways.

so you'll be stuck with external only for now i guess.

Link to comment
Share on other sites

from the eGPU experiences thread:

there are some problems with HD 4000 right now.

i guess it should be possible to make the Intel HD work as i can run it offscreen without igdkmxd64.sys problems using the latest drivers 15.288 ... i can't really use it anyways.

so you'll be stuck with external only for now i guess.

One other issue your 15" MBP will have is the GT650M. If you did get Optimus to use a GPU to render the image but display it to a iGPU-attached device then it would use the GT650M first. The solution to use the eGPU instead is to disable the GT650M within your EFI shell. Do that by translating the following setpci commands to your mm commands. I haven't done it because there is some bitmasking here so you'd need to check the original value and apply the mask.

:: Disable dGPU on a Series6/7 chipset
setpci -s 0:1.0 84.l=3:3 b0.w=10:10 19.b=0,0 3E.w=0:8 COMMAND=0:7 BASE_ADDRESS_4=0,0
setpci -s 1:0.0 COMMAND=0:7 10.l=0,0,0,0,0,0

Link to comment
Share on other sites

Unlike Teknotronix, I found no need to use a surrogate system to install the UEFI version of Win8. I could boot the MBP, hit ALT key and select either the Win8 Pro MSDN Installation DVD or USB stick copy of it and perform the installation. Only important point being I had to select the "EFI" DVD or USB stick.

Glad I could help!

I too tried the UEFI Windows 8 DVD install directly on the MacBook, however it had an error(which I cannot remember the details of) right at the end of the point where it was installing the system files after the formatting section. This would happen right when it was finishing and getting ready to do its first reboot. I did not try the USB method, so perhaps that would work.

Link to comment
Share on other sites

One other issue your 15" MBP will have is the GT650M. If you did get Optimus to use a GPU to render the image but display it to a iGPU-attached device then it would use the GT650M first. The solution to use the eGPU instead is to disable the GT650M within your EFI shell. Do that by translating the following setpci commands to your mm commands. I haven't done it because there is some bitmasking here so you'd need to check the original value and apply the mask.

:: Disable dGPU on a Series6/7 chipset
setpci -s 0:1.0 84.l=3:3 b0.w=10:10 19.b=0,0 3E.w=0:8 COMMAND=0:7 BASE_ADDRESS_4=0,0
setpci -s 1:0.0 COMMAND=0:7 10.l=0,0,0,0,0,0

I'll have to figure out how to replace "COMMAND" and "BASE_ADDRESS".

I assume the first line basically executes 6 commands right?

Link to comment
Share on other sites

Got my Optimus back up.

img002ht.jpg

btw. some time ago I stumbled upon a pretty nice source for modded inf files which might help someone.

Just click on "INF Modified" and copy the resulting file to mobile drivers "Display.Driver" folder and you'll be fine.

As far as I can tell Optimus is functional. 3D Mark 2011 shows 6816p for offscreen Intel HD.

Remember when I tried before my score was 800p. I'm a bit confused though. 3D Mark shows GTX 660 at the top and 0 Mhz for Intel HD.

I'll try to get a 3D Mark 06 result aswell.

Now I'll have to switch those IO ports of Apples gmux device.

It's working for Linux so it should be possible for Windows aswell.

To bad there are no mobile Virtu Win 8 Drivers. desktop drivers released like 3 weeks ago.

Is it possible to fool the installer?

Link to comment
Share on other sites

To bad there are no mobile Virtu Win 8 Drivers. desktop drivers released like 3 weeks ago.

Is it possible to fool the installer?

Good work in getting what appears the iGPU to be active. A big step for 15" Macbook users with both NVidia dGPU or eGPUs.

Biggest problem I'm seeing with Virtu is you can't buy it. Appears like systemboard manufacturers buy a license that gets loaded when the user runs UEFI firmware and Virtu then becomes a licensed version. The 30-day trial doesn't let you adjust settings nor does it actually appear to be doing anything on my HD7870 configuration. This is bad/goods news for AMD/NVidia cards. AMD cards will otherwise be the superior performers on a TB x2/x4 link. NVidia's Optimus giving a transparent internal LCD mode without the need for LucidLogix so long as you boot with an active Intel iGPU.

Link to comment
Share on other sites

To bad there are no mobile Virtu Win 8 Drivers. desktop drivers released like 3 weeks ago.

Is it possible to fool the installer?

Found a workaround. Unfortunately didn't find a way to fool the installer. Here I had to extract the files on a desktop system and copy them over to a mobile platform. It works :)LucidLogix Virtu MVP 2.1.220 (Mobile) 64-bit install on a Notebook

Link to comment
Share on other sites

So we are getting closer to get optimus to work on mbp 15"?

Well I've optimus running offscreen ... but we have to switch GPU/LCD Output.

Apple uses an actual hardware device so we'll probably need some kind of fake driver to trigger the graphical multiplexer or we won't be able to use Intel HD on internal screen.

I already tried to toggle the gmux device using efi shell but the IO space isn't set at all before windows boots up.

Also tried to change the "gpu-policy" variable in NVRAM with out success.

I've a MBP 15" late 2011 with dGPU Radeon 6770 and iGPU Intel 3000, would your solution work for this one to?

Virtu MVP needs Intel HD to work, too... so it won't work for now i guess. I'll probably do some tests tonight.

Having Virtu up and running is good news anyways!

Link to comment
Share on other sites

I tried tonight to install win8 from a usb stick to a completely wiped harddrive.

The installation goes well until it says "Windows 8 could not update boot configuration" This is when the last steps are perfomed, any ideas? (I'm downloading a fresh copy from msdn network right now to see if it could be an old iso i am using)

//P

::Edit::

No luck with the new iso either :/

Link to comment
Share on other sites

I tried tonight to install win8 from a usb stick to a completely wiped harddrive.

The installation goes well until it says "Windows 8 could not update boot configuration" This is when the last steps are perfomed, any ideas? (I'm downloading a fresh copy from msdn network right now to see if it could be an old iso i am using)

//P

::Edit::

No luck with the new iso either :/

Check here for instructions.
Link to comment
Share on other sites

Have seen this message too but its usually gone after one reboot.

Try to boot savemode or low VGA.

Its very strange, I keep getting this all the time even when i try to boot windows 8 installation thru the USB.

I got it to boot into windows 8 once, but then it installed the drivers for the intel 3000 so it got a black screen then after that i removed the file again but it keeps saying "IRQL_Less_or_equal"

Link to comment
Share on other sites

  • Tech Inferno Fan changed the title to 2012 15" rMBP GT650M + GTX560Ti@8Gbps-TB1 (TH05) + Win8.1 [Shelltoe]

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.