2019 17" Dell Inspiron 17 7791 2-in-1 (MX250) [10th,4C,U] + RX 5500 XT @ 32Gbps-TB3 (Razer Core X) + Win10 1909 & Linux Pop!_OS 20.04 [Gerdoch]
- 17" Dell Inspiron 17 7791 2-in-1
- Intel Core i7-10510U 1.8 Ghz-2.3Ghz 4c/8t
- 16GB DDR4-2666MHz
- Nvidia MX250 dGPU (Blacklisted for Compatibility reasons in Linux, Disabled in Device Manager in Windows) / Intel UHD iGPU
- 17" 1920x1080 Touch Internal Display / 32" LG 1080p 32MP58HQ External Display
- 32GB Optane Drive + 512GB Nvme m.2 (RAID) / 2TB HDD
- Pop!_OS 20.04 LTS Linux
- Windows 10 Home Build 1909
- Razer Core X
- Gigabyte Radeon RX 5700 XT 8GB (Windows) / RX 5500 XT 4GB (Linux)
- Thunderbolt 3 cable : Plugable 40Gbps 100W (20V, 5A) 2.6ft
Installation steps Win10
- Copy pci.sys from Windows 10 1903 ISO to Windows Recovery USB
- Boot from Recovery USB and open Terminal
- Copy 1903 pci.sys from Recovery USB to C:\Windows\System32\Drivers\pci.sys
- Reboot to Windows 10, Connect eGPU
- Install latest AMD Adrenalin drivers (20.4.2)
- Set Displays to Extend with External Display set as Primary (connected to eGPU via DP)
Benchmarks Win10 (All Benchmarks run on External screen)
Comments on Win10
I have had some issues with USB devices when using the eGPU. Setting PCI Link State Power management to "off" when plugged in helped (devices no longer entirely disconnect, but still stutter/crackle - mouse and USB audio dongle), but it is apparent that there is some sort of power management issue that can cause USB devices to stutter or disconnect. So far the solution for me has been to quit using my unpowered USB 3.0 hub and only have two USB devices plugged directly into the 2 USB 3.0 type A ports on my system. I intend to try a powered USB hub once I get one to see if that makes a difference.
As well, I've seen a lot of comments on builds with similar hardware about issues with Bitlocker when booting up with the eGPU connected. So for anyone who is curious about those issues, on the hardware for this build, Bitlocker is enabled, and I have no issues with boot-up, sleep, wake, etc. I just leave my eGPU connected constantly and everything works fine.
Installation steps Linux
- In BIOS setup, enable Thunderbolt to be always active from boot-up, before OS is loaded
- Install Pop!_OS 20.04 using the AMD/Intel ISO from USB (very important, we do NOT want proprietary Nvidia drivers installed despite this laptop having an Nvidia MX250 GPU)
- Reboot into new system, and blacklist Nouveau driver via
sudo kernelstub -a "modprobe.blacklist=nouveau" && sudo update-initramfs -u
- Reboot again, and open a terminal. Confirm that your eGPU is working by running
DRI_PRIME=1 glxinfo | grep renderer
- Result should be similar to this image.
- Optionally: By default this setup uses the internal Intel graphics as the main display, which results in a performance impact to eGPU graphics. You can opt to install eGPU-Switcher from https://github.com/hertg/egpu-switcher in order to actually swap over to using the AMD graphics as the main device. This will necessitate logging out and back in each time you switch back and forth, however.
Benchmarks Linux (Left is using AMDGPU driver as only Xserver, Right is Hybrid with Intel Xserver, eGPU running in PRIME mode. Both run on External screen)
Comments about Linux
Unlike with the Windows version of this set-up, I have had zero issues with USB device power or drop outs. I am unsure as to why, but it simply works better. One caveat is that Thunderbolt hotplugging only half works. You can unplug your laptop and take it with you with zero issues (so long as you are running in Internal Graphics mode), but plugging it back in again without powering the system down will result in a hard lock-up and necessitate a reboot anyhow. I did not test Linux with my 5700 XT as it has been installed in a Desktop (I didn't need that much power for a laptop eGPU), hence the 5500 XT. I apologize for not having a direct Windows-to-Linux performance comparison, but I have removed Windows entirely from my system due to the aforementioned USB issues and the need for hacks like PCI.SYS replacement to get AMD eGPUs working.
Additionally, if you are running the AMDGPU X Server, the primary display needs to be set to the display connected to the AMD eGPU to avoid stuttering on the secondary display. That basically means running an eGPU in Linux laptop-only mode (no external display) will only work if you're running the Intel X server with the AMD GPU via PRIME. If you have your eGPU hooked up to an external display, make sure the external display is set as the primary display to avoid this stutter on the laptop panel.
Also, this is entirely unrelated to eGPU, but if you have this exact laptop, the 32gb Optane drive works quite well as dedicated LVM cache under Linux
Hey always good to see another AMD linux setup. Everything looks as I'd expect except the hot plugging comments, which are basically the opposite of my experience. Obviously there are some differences between our setups but I'd like to see an output of dmesg after you've unplugged the egpu. I ask because I've been working on a pull request to the hertg script to add a way to remove the egpu. This function wouldn't be necessary for you but would add the functionality to those that don't already have it. If you are feeling generous, I'd like to see it tested on more systems as well.
Here's the output from dmesg after I unplug the Thunderbolt cable. This is running the Intel Xorg Server, *not* the AMDGPU (So, using DRI_PRIME=1 to run GPU-intensive programs on the eGPU). I'm pretty sure if I were running AMDGPU it'd just crash entirely. :
[24256.011582] pcieport 0000:02:01.0: pciehp: Slot(1): Link Down
[24256.011587] pcieport 0000:02:01.0: pciehp: Slot(1): Card not present
[24256.011605] snd_hda_intel 0000:08:00.1: Refused to change power state, currently in D3
[24256.173523] snd_hda_intel 0000:08:00.1: CORB reset timeout#2, CORBRP = 65535
[24256.472312] snd_hda_intel 0000:08:00.1: Refused to change power state, currently in D3
[24256.576699] snd_hda_intel 0000:08:00.1: CORB reset timeout#2, CORBRP = 65535
[24256.635735] thunderbolt 0-1: device disconnected
[24256.863994] snd_hda_codec_hdmi hdaudioC0D0: Unable to sync register 0x2f0d00. -5
[24257.064179] [drm:amdgpu_pci_remove [amdgpu]] *ERROR* Device removal is currently not supported outside of fbcon
[24257.065492] [drm] amdgpu: finishing device.
[24261.500126] [drm:amdgpu_dm_commit_planes.constprop.0 [amdgpu]] *ERROR* Waiting for fences timed out!
[24266.364180] [drm:amdgpu_job_timedout [amdgpu]] *ERROR* ring gfx_0.0.0 timeout, signaled seq=404493, emitted seq=404494
[24266.364390] [drm:amdgpu_job_timedout [amdgpu]] *ERROR* Process information: process Xorg pid 16759 thread Xorg:cs0 pid 16764
[24266.364395] [drm] GPU recovery disabled.
[24267.136167] [drm:amdgpu_dm_atomic_check [amdgpu]] *ERROR* [CRTC:59:crtc-0] hw_done or flip_done timed out
[24267.388042] Asynchronous wait on fence drm_sched:gfx_0.0.0:1702 timed out (hint:submit_notify+0x0/0x80 [i915])
And here is what occurs when I plug it in again:
[24287.833764] pcieport 0000:00:1c.0: PME: Spurious native interrupt!
[24287.833774] pcieport 0000:00:1c.0: PME: Spurious native interrupt!
[24290.573741] thunderbolt 0-1: new device found, vendor=0x127 device=0x1
[24290.573742] thunderbolt 0-1: Razer Core X
[24292.816638] usb usb4-port1: Cannot enable. Maybe the USB cable is bad?
[24295.721330] dell_wmi: Unknown WMI event type 0x12
[24296.936669] usb usb4-port1: Cannot enable. Maybe the USB cable is bad?
[24296.936747] usb usb4-port1: attempt power cycle
Hopefully this helps!
Thanks for the build info! I was curious about upgrading to a Dell XPS 17 from my 13 now.
Any idea why you had to do the copying back/forth with the pci.sys file you mentioned? I haven't seen that before with any Windows eGPU builds.