[GUIDE] MBP eGPU detection issues: delayed hotplugging, PERST# switch
-a option does the same as hot plugging during the boot process. As of macOS Sierra, Apple changed kext loading mechanism significantly and I am not sure if this is required at present but it was necessary to turn on with Macs released after 2014. The -a mode is not supported on Macs released after 2015.
You should use apple_set_os.efi and the correct TB3 port.
Implementing a manual PERST# ON/OFF switch to control eGPU detection
The problem of a delayed assertion being required was implemented in the old BPlus TH05 TB1 adapter. My testing with a 2012 13" MBP testing found it was necessary there to prevent the Apple firmware shutting the system down when booting Windows by hiding the eGPU until control was handed over to the OS.
We can implement a manual PERST# on/off switch to allow/disallow eGPU detection. As Intel disallow such PERST# mechanisms on certified TB board we can create one with these steps.
As an example, just doing PERST# pin isolation on the video card was required for a 2012 11" MBA here, along with UEFI rather than MBR Win10 install to bypass a boot hang and get the eGPU detected and functioning in Windows. MBR mode Windows wouldn't allow eGPU detection.
- hair-fine enamelled wire of 60cm length
- a small resistor (eg: 100 ohm)
- scotch tape and scissors
Create the PERST# wire
- Singe 5mm of the enammelled wire to expose the copper core
- Singe 10mm of the enammed wire on the other end to expose the copper core
- Wrap the 10mm end around one leg of the 100 ohm resistor
Step 1. Switch OFF PERST# to prevent eGPU detection
Can use nail polish or sticky/scotch tape to isolate PERST# pin A11 as shown on the right picture below. This will be PERST# off, eGPU detection off.
Test this to confirm the eGPU doesn't appear in device manager but the Thunderbolt enclosure does appear. @shadow confirms this does prevent eGPU detection on his GT650 MBP here. If this works then proceed to step 2.
Step 2. Switch ON PERST# to allow eGPU detection
We need to send a PERST# signal (GND) to the TB board to allow eGPU detection. So we need to attach the 5mm end of the PERST# wire to the A11 pin. A couple of ways to do this on the AKiTiO Node TB board below:
- shove the wire into the A11 PCIe slot pin as seen below (A11 is marked)
- solder a little wire to the resistor that comes off A11 as seen below (A11 is marked)
The boot up process using the PERST# switch
1. The resistor end of the PERST# wire is left unconnected. PERST# is off, eGPU detection is off.
2. You'd boot your system to get past the Mac firmware, which would otherwise hang if it detects the eGPU.
3. halt Win10 loading [add a BCD timeout with EasyBCD to have a bootup menu to halt Windows loading], stick the resistor leg end of your PERST# wire to the TB3 chassis (GND) and keep it attached there. PERST# will now be on and eGPU will be detected.
4. Continue Win10 loading. Then check if the eGPU appears in Device Manager where I'd expect your eGPU will appear.
You could also try booting into Setup 1.35 (if using MBR/BIOS boot) and hit F5 to do a PCIe rescan after grounding the PERST# wire to be ON to also do a test for eGPU detection.
If that all works then look at add a physical OFF/ON PERST# switch to make it easier to use.
Appendix: BPlus TH05 Thunderbolt 1 circuitboard with PERST# delay
We can see the PERST# switch options settings silkscreened on the circuitboard. This product was recalled and then discontinued by BPlus in 2013 due to legal threats by Intel.
Im using a 2015 13" Macbook pro retina. I can boot into MacOS and hot plug the egpu but getting into Windows is a pain. Is there a guide for MBPr specifically for this?
Summary of detection methods by Mac model
|Model||Detection method needed||Src|
|2013-15 15" MBP GT750M||Disconnect TB cable. Boot the laptop until POST/Apple symbol, then connect the TB cable||here|
Is it a 13” 2015 MBP? If so, I guess the system hangs in POST or the firmware blocks certain Nvidia cards, and therefore the startup manager will not show anything.
Yeah the 13" MBPr.
So previously I've had it working in OSX and Windows.
Windows was always a pain to get loaded. I had to keep all the cables connected but pull out the power of the Akitio2. Then when I get to the boot manager plug it back in, wait a few seconds and hope it doesn't freeze. Then boot to Windows. This works 1 in 10 times. I was looking for an easier way.
Just wondering if there's an official solution as rebooting into Windows can take me 30mins+
Your Mac model is one of the most problematic. Assuming that you've already installed my automate-eGPU.sh and running Windows 8/10 in UEFI (installed via Boot Camp Assistant):
1) Boot into macOS/OS X and turn on the -a mode: sudo ./automate-eGPU.sh -a
2) Select "BOOTCAMP" as startup disk, and restart
The eGPU will stay invisible during POST (power-on self test), but you may have better success rate to boot into Windows. Steps 1&2 are required after each Windows boot.
Let me know if this helps.
I concur with @goalque. This bootup/detection issue the least publicly documented problem across Macbook models. To complicate matters even more:
* Apple firmware initialization if different if using MBR or EFI mode.
* squinks reported variation by video cards with EVGA cards were the least problematic.
* there is no PERST# delay switch on the TB hardware.
The best scenario is to hide the eGPU from the Apple firmware. How to do that?
1. Play with timing the following;
i. just after halting Windows loading with F8/F12
ii. hit OPTION key and when select windows
For either of these, test:
* From off position, poweron your PSU
* having had the TB cable unplugged, plug it in
* having had the AKiTiO yellow/black cable disconnected, attach it
* having had one PCIe video card power cable unplugged, plug it in.
Then proceed loading your OS. The last two above the closest to a PERST# workaround.
I'll try again tonight.
Previously the best way to get it to work was:
1. Boot into MacOS with no eGPU connected
2. Run the automate eGPU script with the -a flag.
4. Unplug the power to the eGPU THEN plug the TB cable into the Mac.
5. Boot to the boot manager screen
6. When the mouse becomes free to move (takes around 5 seconds) plug the power into the eGPU
7. if it doesn't freeze continue to boot into Windows.
8. This will work more often than other techniques I've tried.
@matt I follow a similar process as what you laid out. There's a small difference in step 6 for me though. I would not plug the eGPU in while on the Boot Manager screen. I'd select Windows then wait until the spinning circles on Windows load screen show up then plug the TB3 cable in immediately (power cable in your approach). It works rather consistently for me.
Success! I decided to try out the automate-efi that Goalque put on their Git. Well it's working like a charm every time. Boot into boot manager with out the egpu plugged in. Select the EFI boot (from the USB I made). When it says no eGPU.rom found plug in the eGPU. Then it carrys on into Windows