Advice on iMac NVMe eGPU Troubleshooting
I'm currently working on a CPU, SSD, and eGPU upgrade using my base model 2017 27" iMac (everymac link). I'd been planning to do the CPU and SSD upgrade ever since I bought the machine, but had planned on using a TB3 enclosure for the eGPU. After reading the info on here about using TB3 vs NVMe, and because of the fact that I'd have the machine open anyway, I decided to try an ADT-Link adapter in the PCIe SSD slot. Here's what I've currently bought and am testing with:
- Sintech Apple to NVMe Adapter - https://www.amazon.com/gp/product/B01CWWAENG
- NVMe Extension - https://www.amazon.com/gp/product/B08B3RFSKL
- R43SR - https://www.amazon.com/gp/product/B08B3HRG7L
- NVMe to Apple SSD Adapter - https://www.amazon.com/gp/product/B07924XZKH/
I've got the Sintech adapter connected to the motherboard, and then have the NVMe Extension running out the back of the iMac through the ram door to give external access to the NVMe slot. I've then got the R43SR adapter connected to the extension cable. I'm using a 560ti + 700W PSU I have from another PC for testing, with the plan being to get a stronger GPU and SFF PSU once I've got the hardware setup working. Eventually I want to put everything into some kind of custom enclosure and either have it directly behind the iMac on my desk, or potentially buy/build one of those iMac shelves and have the box sitting on that. I've also picked up the NVMe to Apple SSD adapter to reuse the 32GB Apple SSD as a glorified flash drive in a USB enclosure since it's a perfectly good bit of h/w I didn't want to go to waste.
From the testing I've done so far, I think I may have a problem with the Sintech adapter, but I'm not entirely sure yet. I can't seem to get the GPU to show up at all in macOS, Windows 10, or an Ubuntu installer USB. I've tried the GPU both with and without the NVMe extension and saw no change in behavior. I did notice there are a couple LEDs on the extension cable, and only the 1st one was ever lit when I was using it, and from what I've read the first is the power LED, and the second is an activity LED. I've also tested using the 32GB Apple SSD in the extension cable with its adapter, but it also didn't show up at all. I was going to give it a try attached directly to the Sintech adapter but the added height with all the adapters prevents the motherboard from fitting back in the iMac properly and I didn't trust testing it out with the motherboard not screwed in.
Are there any potential pitfalls I should keep an eye out for with this setup (beyond what I've got going on already)? I'm thinking if I can get this current hardware in a mostly working state, I'll return the parts and order a 50cm R43SG. That will keep me from having to use the extension cable which I've read can cause issues. I'm also not entirely sure if I can trust the quality of parts I've bought since I just went with what I could order with Prime shipping on Amazon, and while they look okay to me, they aren't actual name brand ADT-Link items . From the couple build guides I saw with Macs using an R43* product, it seemed pretty simple to get going from a hardware perspective. Has anyone heard of issues with off-brand versions of these adapters? From the software side of things, I've booted Windows using an apple_set_os.efi flash drive to enable the iGPU and that seemed to work as expected. I'm planning this week to pick up an NVMe drive to verify the sintech adapter actually does work, and go from there.
I appreciate any and all suggestions! Thanks!
@lkc, This is a very cool build and I hope you can get it to work soon. My guess is that the M.2 adapter is not able to power on properly. Best to go with the 50cm ADT-Link R43SG imo. I have use it with multiple Macs and other ultrabooks with good success. Going through multiple adapters/extensions causes more issues in the long terms too even if it works. Have you cut an opening in the back of the iMac shell?
@itsage, Thankfully no mods necessary so far. I was able to keep the ram door off and route the cable between the ram mechanism and the iMac shell. It's about ~15cm from the SSD slot over to the ram door, so the 20cm extension allowed a little bit of play outside the machine. Apple has a little plastic shield around the ram area, but it's only held in with a few screws and a little adhesive and was easy enough to remove with the motherboard out. The cable has to make a sharp-ish bend in the case to run the opposite direction to the ram door, but it doesn't crease so I don't think it's actually damaging anything. Also just in case, I went ahead and ordered the stubby Sintech adapter to see if that works any better. I know this is probably something I can find elsewhere on the site, but is there a certain timing sequence I should use when booting macOS to allow the GPU to even get recognized? When booting Windows, I've been powering when I see the windows logo. Having it even show up in the system information app, or viewable with a Terminal command is good enough for me at this point.
@lkc, No timing for power on in my Mac M.2 eGPU builds. I think there's power issue with your current setup due to different adapters. If the connection was recognized, you'd see it in PCI and Graphics/Displays tree in System Information.
Show some pictures?
Do you have a fan connected to the external PSU so you know that it's turned on?
12V power to the R43SR from the PSU?
3.3V power from the M.2? (maybe check with multi-meter between GND and 3.3V pins of PCIe slot).
The GPU should be powered on before the iMac boots.
Latest update: I picked up an NVMe SSD yesterday and used it for testing. It was recognized in the Sintech adapter connected directly to the motherboard, but not when using the extension cable. I also noticed that when it wasn't recognized, it did still get warm when the system was powered on. I also re-tested the R43SR without the extension, but saw no change in behavior.
@joevt, I'm able to see the fans on the PSU and 560ti spinning when the PSU is powered on. To use the PSU I've got a wire grounding the PS_ON pin on the 24 pin connector and manually turning it on/off with the switch on the back. For the R43SR I'm using the SATA to 4-pin floppy power adapter it came with hooked up to a SATA power from the PSU. I've also got 2 6-pin PCIe power connectors hooked up for the GPU. On the NVMe extension there's a power LED that's lit when the computer is on, so I'm assuming it's getting 3.3V but I haven't probed it. There are through holes labeled 3.3V that I assume are for probing.
As for pictures, I took everything out after testing yesterday and don't have any from when everything was installed in the iMac. I'm going to try and probe those voltages tonight so I'll take some while the system is open.
Here are some photos of the setup with the NVMe drive I was using for testing. I was able to verify I'm getting 3.26V using the test points on the NVMe extension cable.
Decided to go ahead and order an R43SG and give it a try instead. It came in yesterday and I'm not seeing much difference in behavior. I can see the reset LED briefly flash on power up, and the 3.3V and 12V LEDs are lit while the system is powered. It looks to be detecting power on/off correctly based on the fans from the PSU and GPU. The switches are all set to the "1" position and the J1 jumper is shorted in case anyone is curious.
Still nothing in windows device manager or in the system information app in macOS. Tested with my Nvidia 560ti and a hauppauge tv tuner card.
I'm thinking my next step will be starting over with a clean windows 10 install, since up until now I've been using my existing installation that was upgraded to the beta channel version (win10 pro v2004, build 19041.450).
@lkc, does the R43SG get 3.3V from the ATX power instead of the M.2 slot?
Do you have any PCIe devices besides a GPU to test? It's a strange problem because you can't even get an NVMe to work so a different PCIe device probably won't work either.
I wouldn't bother with Windows until you can get the device to be seen in macOS with lspci from pciutils.
@joevt, Yes it looks to get 3.3V from the ATX supply. On the R43SG there are 3.3V, 5V, and 12V test points and they only have the correct voltages when the ATX power is on. On the R43SR it was probably using the 3.3V internally from the iMac with 5V and 12V from the ATX supply. The link you provided is interesting, that's the first adapter I've seen with a separate regulator. Definitely will look into that further. For reference, on the R43SG I've got the 24-pin connected, as well as the 4-pin CPU power. The GPU (when it's being used) is using 6-pin PCIe plugs directly from the PSU.
I was able to verify a few days back that 3.3V was present on the NVMe extension, and the NVMe drive I picked up was recognized when it's connected directly into the sintech adapter on the motherboard (re-tested again yesterday as a sanity check and it still worked).
The only other PCIe cards I have besides the 560ti are a Hauppauge WinTV tuner card, and a GeForce 7300LE GPU. Those seem to behave the same as the 560ti, LEDs for voltages on the board, but nothing in lspci/Device Manager/System Information.
I'm beginning to wonder if the iMac just doesn't have much wiggle room from a signal integrity standpoint...I've not run across anyone else trying to do anything with NVMe on an iMac besides upgrading the SSD.
Also, just in case it's useful here's my lspci output:
00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers (rev 05)
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor PCIe Controller (x16) (rev 05)
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 630 (rev 04)
00:14.0 USB controller: Intel Corporation 100 Series/C230 Series Chipset Family USB 3.0 xHCI Controller (rev 31)
00:16.0 Communication controller: Intel Corporation 100 Series/C230 Series Chipset Family MEI Controller #1 (rev 31)
00:17.0 SATA controller: Intel Corporation Q170/Q150/B150/H170/H110/Z170/CM236 Chipset SATA Controller [AHCI Mode] (rev 31)
00:1c.0 PCI bridge: Intel Corporation 100 Series/C230 Series Chipset Family PCI Express Root Port #1 (rev f1)
00:1c.1 PCI bridge: Intel Corporation 100 Series/C230 Series Chipset Family PCI Express Root Port #2 (rev f1)
00:1c.4 PCI bridge: Intel Corporation 100 Series/C230 Series Chipset Family PCI Express Root Port #5 (rev f1)
00:1f.0 ISA bridge: Intel Corporation Z170 Chipset LPC/eSPI Controller (rev 31)
00:1f.2 Memory controller: Intel Corporation 100 Series/C230 Series Chipset Family Power Management Controller (rev 31)
00:1f.3 Audio device: Intel Corporation 100 Series/C230 Series Chipset Family HD Audio Controller (rev 31)
00:1f.4 SMBus: Intel Corporation 100 Series/C230 Series Chipset Family SMBus (rev 31)
01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] (rev c5)
01:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere HDMI Audio [Radeon RX 470/480 / 570/580/590] 02:00.0 Network controller: Broadcom Inc. and subsidiaries BCM43602 802.11ac Wireless LAN SoC (rev 01)
03:00.0 Ethernet controller: Broadcom Inc. and subsidiaries NetXtreme BCM57766 Gigabit Ethernet PCIe (rev 01)
03:00.1 SD Host controller: Broadcom Inc. and subsidiaries BCM57765/57785 SDXC/MMC Card Reader (rev 01)