I am kind of new to this forum, however, I am posting this build guide because for the most part there aren't very many people with the same configuration as me. I struggled a lot to get this set up to work well enough to be stable and not crash every time it boots. There wasn't very much information on this eGPU in general, so there was a lot of research and time that I had spend on this forum trying to find answers. I don't want anyone else to go through the same frustration that I did, so I am here to try to offer my experience with trying to get the Lenovo Thunderbolt 3 Graphics dock to work with my Mac
These are my System specs:
MacBook Pro (13-inch, 2019, Two Thunderbolt 3 ports) with Touch Bar, i5
Processor: 1.4 GHz Quad-Core Intel Core i5
Memory: 8 GB 2133 MHz LPDDR3
IGPU: Intel Iris Plus Graphics 645 1536 MB
eGPU hardware :
Cable: Maxonar Thunderbolt 3 cable.
Toshiba 3TB USB Drive (not required, but I only gave windows 50GB)
Experimentation, troubleshooting, and Crashing my Bootcamp Install around 100 times (no exaggeration):
I bought this eGPU used, the main reason I bought it is because of its relative size compared to other offerings in the eGPU market. It is only .74 Liters, this was important because space is at a premium in my room, it is actually rather impressive how much hardware Lenovo was able to cram into this small enclosure. However, despite all these benefits, there was one trade off that was made apparent not long after I bought this device. This device lost support from Lenovo all the way back in 2017, 4 YEARS AGO!!!! This wasn't really going to stop me however as Windows does a fairly good job at running old software. Initially, I was under the impression that like most Nvidia eGPU solutions this device was Plug-and-Play. However, I WAS VERY WRONG, after installing Bootcamp and the drivers from the Lenovo website, I plugged the device in, and was immediately met with a Blue Screen of Death. However, I thought this was just a fluke, so I tried it again. However, I would soon come to find out this would be a problem that I would experience A LOT. So since I didn't immediately know what the issue was, I did some experimenting, seeing what would crash the system and what would not. Cold Booting the device would cause Windows to freeze and cause a flicker of the Windows logo without ever booting into Windows. Here I learned that you CANNOT plug this device in before you boot the computer. So now I knew that the only way that I could get this device to even boot into Windows was to hot plug it after you loaded into the Windows desktop. However, this would cause further issues. Despite having re-installed the drivers from the Lenovo website, there was very little luck in getting the device to work without crashing into a BSOD. However, after much digging around, I found out that the reason that the device was crashing was because of the Bluetooth drivers. After deactivating the Bluetooth drivers I saw some marginal success in the stability of the device. However, it would still crash more often than not. After more digging around, it turns out that the actual cause of the crash was the Ethernet drivers from Lenovo, when the computer booted, the Broadcom drivers and the Lenovo driver would begin occupying the same IO, and this would cause Windows to crash as it has no way to handle two devices that boot to the same IO ports.
After disabling one of the internet drivers specifically the wireless card driver, I was not able to hot plug the device in without it instantly crashing the device. However, this turned out to be very hit or miss, as sometimes it would just instantly crash windows, or it would show signs of life and then not crash. However, when it didn’t crash it when I ran into another issue. There were two ways that Windows recognized the device. The first is that it sees it as a USB hub and does not detect the graphics card, or it detects the graphics card and reads a Code 10 on the “USB 3.1 Host Extensible”. However, the main issue is that I didn’t know which it would be depending when you reboot. But this was not the biggest deal, after awhile I was able to get the GPU to only recognize. After awhile and many countless crashes, I just gave up and deleted the windows partition. However, I didn’t give up just yet, I decided that I would give the latest version of windows a try perhaps they fixed the PCIE hierarchy issues that plagued the previous versions. So I downloaded the 20H2 iso and started to install. One thing I immediately noticed was that this version of Windows in my case is actually more stable than the 2 that are often used by those on this forum 1903 and 1809. For reference this build number of the Windows that I am using is build 19042. However, I was still running into many issues. This is when I started to look really deep on the eGPU.io forum in order to see what I could dig up. After multiple rereads of the article “eGPU on Thunderbolt 3 Mac” I was finally able to get this device to work. So I’m gonna lay out the process exactly as I did it. Hopefully anyone trying to copy what I am doing is able to get their’s working as well.
Step 1: Fresh install and DDU
In this step as laid out by the guide, I reinstalled a fresh partition of Windows for reference my I am on Build 19042. Once Windows is installed and up and running, you need to download DDU, which is a tool specifically used to uninstall the Intel Drivers that Windows installs for the iGPU. The reason you need to do this as cited by the article is because the drives that Windows automatically installs might be out of date there for not optimal for what you are trying to accomplish. One important thing to note is that you should boot into safe mode before you uninstall the graphics driver, because if you don’t windows will actually crash as soon as it uninstalls, putting it in safe mode gives Windows time to get switch to the “Microsoft Basic Display Adapter”. I want to reiterate how important it is to go back and read the main article of that eGPU.io has, as it offers a lot of information that they explain better than I can. To continue, once you have uninstalled the driver and you are now back into your regular Windows desktop, you want to create a restore point just in case something goes wrong, the articles goes over how to do it so I won’t bother. But I will leave a link so you don’t have to dig around for it. I would like to note that you should turn on the option that prevents Windows from automatically finding a driver.
Step 2: Creating the EFI Boot Loader
Thanks to goalque for his EFI tool! I recommend you read his forum post on how to get the EFI Boot loader to work first, as I might not do as good of a job on how to do it. You can find his post here
If you just want the gist of what he did, once you have gotten your back-up made, you want to turn the Mac off and reboot back into MacOs, here you are going to make what is called a “EFI Bootloader” in order to do this you are going to need a USB flash drive with a USB-A to USB-C adapter, in my case I used an adapter because I didn’t have a USB-C flash drive, however, any USB 3.0 flash drive should service. Now the reason you need to Boot Back into MacOS is because of the EFI that user goalque created, essentially, the EFI Bootloader’s purpose is to cause the Apple firmware to force windows into using both the iGPU and the eGPU when you are running your device. Luckily goalque makes setting up the USB drive very simple. In order to set the usb drive up, you need to open up the terminal on you Mac, and paste in this line of commands:
bash <(curl -s https://egpu.io/wp-content/uploads/2018/11/automate-eGPU-EFI-install.txt)
These commands are essentially and installer that automatically makes a EFI Bootloader with little to no hassle. Once the terminal executes the command, you should see a prompt of which USB drive you want to format, in this case just press the key that corresponds to the name of your USB flash drive. Once the EFI Bootloader is made it should change the drive name to “EGPUBOOT” this is how you know the boot drive has been made. Remove the USB drive and shut the Mac down.
Step 3: Installing iGPU Drivers
Once you have made the EFI drive you can turn the Mac off. Before proceeding forward you need to turn off the Boot Security, instructions on how to do so can be found at this link on the Apple support page.
Makes sure to select “No security” and also to select, “Allow Booting from external media”
Now shut the Mac off again, put the USB drive back into the Mac and then press the power button and boot the Mac, while pressing down the option key, you should see the partitions appear in front of you and should look like the image below. Once you see it the “EGPUUBOOT” partition, you have to choose to boot from it and then press the “Q” key and then selected “Windows” as your boot option using the arrow keys. Also make note of where you put the USB Drive, after much digging, I have found that the port nearest the Tab key has the most bandwidth, so that means that is the one that you should plug the eGPU into. This also means that the EFI USB Drive goes into the one nearest to the Esc key. Now in my case, I could not have the eGPU connected prior to booting into Windows, other wise the boot would get stuck on a Flickering Windows screen. So I booted back into windows without the eGPU connected. So now I downloaded a few key software at this point, HWiNFO64 this software is useful in telling you what devices may be possibly taking up bandwidth in the PCI lanes. After I then downloaded the Intel iGPU drivers I will put a link to where I specifically I downloaded them. Just a note that the CPU for my model of Mac is 8th Generation.
Once the drivers are installed make sure you create a restore point, this actually has helped me a few times. There is one other thing to make note of, from now on everytime you boot into Windows you need to do use the EFI USB Drive. Also once you have booted into Windows, DO NOT DISCONNECT THE DRIVE, in my case every time I have done so, the system crashes.
Step 4: eGPU Shenanigans
Restart the Windows make sure you still have the EFI USB still connected, and on restart push down the Option key and then select the “EGPUBOOT” partition, you can have the the eGPU connected when you boot into the EFI, just to confirm the Mac detects the eGPU, however, when you want to boot into Windows through the EFI, I suggest disconnecting the EGPU. Once you have booted back into Windows, I personally used the HWiNFO64 to see which PCI lanes were being taken up. So once I saw the which devices were connected where, I went into the Device manager and disabled the FaceTime Camera Drivers, and then I also had to disabled the Bluetooth drivers as well. This is and important as it frees up some bandwidth for you eGPU to occupy. Now, one issue that I ran into was the fact that there is actually no driver that Apple installs for the Thunderbolt, so in order to get the Thunderbolt to recognize I needed the Intel DCH drivers for Thunderbolt 3. I will leave a link down below.
Once I installed the driver, I also made sure to download the Nvidia drivers, in preparation for setting up the eGPU, however, don’t install the Geforce Drivers yet. One thing to note is the that GTX 1050 is actually a notebook version. I will leave a link down below where you can find that particular driver.
You should reboot again, just to make sure the drivers are all installed and in order. Once you have booted back into windows, you should now attempt connect the eGPU. In my case when I did it, I first turned off the Broadcom Driver, the internet drivers is still one of the main reasons for why a crash would happen. Once the internet driver is turned off, you now want to pull up the Thunderbolt Control center that should have automatically installed. Then hot plug the eGPU into the MacBook. It should freeze for a little bit and then another “Microsoft Basic Display Driver” should appear in the device manager. Now you can turn the internet back on, and there should be a few drivers that auto install, these should be okay as they don’t necessarily cause any instability. Once this is done you should start to install the Geforce driver. Once installed the GTX 1050 should show up in your device manager. The way you know the dock is communicating with the MacBook is the light on the front of the dock should turn green. It should be working properly now.
I am going to tell you the immediate boot up steps that you need to follow in order for the device not to crash. Remember the EFI USB should be connected at ALL TIMES when you are using the eGPU.
When you turn the device off, you need to disable the Broadcom Internet driver before you turn the computer off this way you don’t have re-disable it when you reboot the computer. For the computer to not crash having the Broadcom Driver disabled is very IMPORTANT on Boot Up. As soon as you boot into windows from the EFI Boot loader, you need to as quickly as possible open the device manger, and the Thunderbolt Control Center opened on your desktop. You need to wait a little bit for the background drivers to load, then you can hot plug the eGPU into the device, once the it detects and loads the drivers for the eGPU you can now turn the Broadcom Wireless back on. If you forgot to turn off the Broadcom of make sure you disable it before you plug in the eGPU.
Gaming Bench Marks:
I got this eGPU specifically for gaming. So I don’t have any productivity app benchmarks. I also don’t use an external monitors all bench marks come right off the internal display on the MacBook.
1280 x 800
FPS: 50-60 on average
This is significantly more than I was getting on the integrated graphics, nearly double the FPS and makes it way more playable.
Call of Duty Modern Warfare:
1280 X 800
This is actually really playable and the game really doesn’t look all that bad at these settings on a 13 inch screen.
Overall, this was the biggest pain the butt to get working. One comment I want to make is you will occasionally get an error from the Thunderbolt 3 Control Center saying that you have to authorize the device, however, it won’t actually allow you to because it never appears in the Control center when you plug the eGPU in. Just restart and try again if you are able to launch the Thunderbolt 3 Control Center immediately after you boot it should be okay. You know it its working properly because it will have “Port 1” and “Port 2”. Along with that sometimes the eGPU won’t detect, a restart and retry of the boot process I have described should fix it. Make sure you get the Thunderbolt 3 Control Center, and device manager open as fast as possible when you boot the computer.
If you are getting a Code 10 or a Code 12, it is most likely there is still not enough bandwidth freed up on the PCI lanes, try to disable other non-essential devices.
Closing thoughts, if you plan do do this, there is a lot of advantages of running this set up, mostly portability, and size. I can recommend doing it if you are willing to go through a few hurdles, but it is not as straight forward as devices like the Akitio Node or Razer Core.
Here is what the whole set up looks like: