Intel Nuc + eGPU + AMD rx 5700 xt

Hi,

Any ideas how to get this kind of eGPU setup working?
Intel NUC6i7KYB + Racer Core X + AMD RX 5700 XT

Thunderbolt setting can see that Race Core X is authorized but it seems that AMD card is not found as I only see one Device-1?

System:
  Kernel: 5.8.18-1-MANJARO x86_64 bits: 64 compiler: gcc v: 10.2.0 
  parameters: BOOT_IMAGE=/boot/vmlinuz-5.8-x86_64 
  rw quiet udev.log_priority=3 
  Desktop: GNOME 3.38.1 tk: GTK 3.24.23 wm: gnome-shell dm: GDM 3.38.1 
  Distro: Manjaro Linux 
Machine:
  Type: Desktop Mobo: Intel model: NUC6i7KYB v: H90766-402 serial: <filter> 
  UEFI [Legacy]: Intel v: KYSKLi70.86A.0071.2020.0909.1612 date: 09/09/2020 
Battery:
  ID-1: hidpp_battery_0 charge: N/A condition: N/A volts: 3.8/N/A 
  model: Logitech G Pro Wireless Gaming Mouse type: N/A serial: <filter> 
  status: Discharging 
CPU:
  Info: Quad Core model: Intel Core i7-6770HQ bits: 64 type: MT MCP 
  arch: Skylake-S family: 6 model-id: 5E (94) stepping: 3 microcode: D6 
  L2 cache: 6144 KiB 
  flags: avx avx2 lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx 
  bogomips: 41621 
  Speed: 892 MHz min/max: 800/3500 MHz Core speeds (MHz): 1: 900 2: 900 3: 900 
  4: 900 5: 900 6: 900 7: 901 8: 900 
  Vulnerabilities: Type: itlb_multihit status: KVM: VMX disabled 
  Type: l1tf 
  mitigation: PTE Inversion; VMX: conditional cache flushes, SMT vulnerable 
  Type: mds mitigation: Clear CPU buffers; SMT vulnerable 
  Type: meltdown mitigation: PTI 
  Type: spec_store_bypass 
  mitigation: Speculative Store Bypass disabled via prctl and seccomp 
  Type: spectre_v1 
  mitigation: usercopy/swapgs barriers and __user pointer sanitization 
  Type: spectre_v2 mitigation: Full generic retpoline, IBPB: conditional, 
  IBRS_FW, STIBP: conditional, RSB filling 
  Type: srbds status: Vulnerable: No microcode 
  Type: tsx_async_abort mitigation: Clear CPU buffers; SMT vulnerable 
Graphics:
  Device-1: Intel Iris Pro Graphics 580 driver: i915 v: kernel bus ID: 00:02.0 
  chip ID: 8086:193b 
  Display: wayland server: X.org 1.20.9 compositor: gnome-shell driver: i915 
  note: display driver n/a - try sudo/root display ID: 0 
  resolution: <xdpyinfo missing> 
  OpenGL: renderer: Mesa Intel Iris Pro Graphics 580 (SKL GT4) 
  v: 4.6 Mesa 20.2.1 direct render: Yes 
Audio:
  Device-1: Intel 100 Series/C230 Series Family HD Audio driver: snd_hda_intel 
  v: kernel bus ID: 00:1f.3 chip ID: 8086:a170 
  Sound Server: ALSA v: k5.8.18-1-MANJARO 
Network:
  Device-1: Intel Ethernet I219-LM driver: e1000e v: 3.2.6-k port: f040 
  bus ID: 00:1f.6 chip ID: 8086:15b7 
  IF: eno1 state: down mac: <filter> 
  Device-2: Intel Wireless 8260 driver: iwlwifi v: kernel port: f040 
  bus ID: 03:00.0 chip ID: 8086:24f3 
  IF: wlp3s0 state: up mac: <filter> 
  Device-3: Realtek RTL8153 Gigabit Ethernet Adapter type: USB driver: r8152 
  bus ID: 1-3.4:6 chip ID: 0bda:8153 serial: <filter> 
  IF: enp0s20f0u3u4 state: down mac: <filter> 
Drives:
  Local Storage: total: 232.89 GiB used: 8.14 GiB (3.5%) 
  SMART Message: Required tool smartctl not installed. Check --recommends 
  ID-1: /dev/nvme0n1 vendor: Samsung model: SSD 960 EVO 250GB size: 232.89 GiB 
  block size: physical: 512 B logical: 512 B speed: 31.6 Gb/s lanes: 4 
  serial: <filter> rev: 3B7QCXE7 scheme: MBR 
Partition:
  ID-1: / raw size: 232.88 GiB size: 228.23 GiB (98.00%) used: 8.14 GiB (3.6%) 
  fs: ext4 dev: /dev/nvme0n1p1 
Swap:
  Alert: No Swap data was found. 
Sensors:
  System Temperatures: cpu: 55.0 C mobo: 29.8 C 
  Fan Speeds (RPM): N/A 
Info:
  Processes: 215 Uptime: 51m Memory: 31.25 GiB used: 2.23 GiB (7.1%) 
  Init: systemd v: 246 Compilers: gcc: 10.2.0 clang: 10.0.1 Packages: 
  pacman: 1108 lib: 395 Shell: Zsh v: 5.8 running in: gnome-terminal 
  inxi: 3.1.08

Hello,

You have a couple of alternatives
http://aur.archlinux.org/packages/egpu-switcher-git

or
http://aur.archlinux.org/packages/xswitcher-git

Older ways

1 Like

Thanks! Looks good! I’ll start with these instructions.

Problem is that I can’t see that AMD RX 5700 XT card:

udo egpu-switcher setup                                                                       [1]
[warn] Only 1 GPUs found, there need to be at least 2. Make sure to connect your EGPU for the setup.

Ok. After one week duckduckgoing, bios changes,kernel parameter changes, trying different Linux distributions without able to see AMD card - I decided to start from scratch and basics and opened the eGPU case to find that Card was not properly in place. Bloody “you know wat”. (and super embarrassing…)

Well, just now I got some sort of steps to get this setup to work:

  1. Connect GPU to eGPU - and thunderbolt cable to proper place

  2. Intel NUC BIOS settings (and update to latest BIOS):

  • Advanced → Video → IGD Primary Video Port: Auto
  • Security → Security Features → Allow UEFI 3rd Party Driver Loaded: Enable
  • Security → Security Features → Intel VT for Directed I/O (VT-d): disabled
  • Security → Security Features → Thunderbolt Security Level : legacy
  • Power → Secondary Power Settings → Deep S4/S5: enable
  • Power → Secondary Power Settings → Wake from Thunderbolt Device: disable
  • Power → Secondary Power Settings → PCIe ASPM Support: disable
  • Power → Secondary Power Settings → Native ACPI OS PCIe Support: enable
  • Boot → Boot Priority → Fast Boot: disable
  • Boot → Boot Priority → Thunderbolt Boot: enable
  • Boot → Boot Priority → Ignore Thunderbolt Option ROM: enable
    https://community.intel.com/t5/Intel-NUCs/NUC10i7FNH-Issue-with-Thunderbolt3-eGPU/m-p/1208168/highlight/true#M76356
  1. Check that Thunderbolt settings show Racer Core X is connected and authorized

After this I could connect both Intel NUC and eGPU/AMD display port to Monitor. HDMI would work but eGPU-display port would show only “green” window.
I would remove NUC/HDMI and connect only with eGPU/display port - Monitor would show picture but it’s really laggy.

lspci | grep VGA
DRI_PRIME=0 glxinfo | grep “OpenGL renderer”
DRI_PRIME=1 glxinfo | grep “OpenGL renderer”
glxinfo | grep “OpenGL vendor string” | cut -f2 -d":" | xargs
Some of the logs made me feel that Intel GPU was doing still the job. (did not save the logs but…)

Then tried:
5. install egpu-switcher-git

  • After installing ONLY HDMI/NUC would work
  1. Playing with xorg.conf.egpu
    (* recommend to enable SSH so one can do the small config changes to this file remotely and reboot to see if it worked out)

Current conf:
cat /etc/X11/xorg.conf.egpu

Section "Module"
    Load           "modesetting"
EndSection

Section "ServerLayout"
    Identifier     "Default Layout"
    Screen      0  "amdgpu" 0 0
    Inactive       "intel"
EndSection

Section "Screen"
    Identifier     "amdgpu"
    Device         "amdgpu"
    Monitor        "Monitor0"
EndSection

Section "Monitor"
    Identifier     "Monitor0"
EndSection

Section "Device"
    Identifier     "intel"
    Driver         "modesetting"
    Option         "AccelMethod" "none"
    BusID          "PCI:0:2:0"
EndSection

Section "Device"
    Identifier     "amdgpu"
    Driver         "amdgpu"
    BusID          "PCI:11:0:0"
    Option         "AllowEmptyInitialConfiguration"
    Option         "AllowExternalGpus" "True"
    Option         "PrimaryGPU" "true"
EndSection
  1. Kernel Parameters

/etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash i915.modeset=0 udev.log_priority=3"

So currently I have couple hours experience with Intel Nuc + eGPU + AMD RX 5700 XT which is responsive and feels fast.
OpenSource driver are in use.

Of cource now I cannot use Intel NUC HDMI output but that is what I can live without if this works othervice perfectly. Time will tell…

(basically going back to Intel NUC HDMI setup would only require removing ‘i915.modeset=0’ kernel parameter and connecting HDMI cable back and removing thunderbolt cable. egpu-switcher-git would automatically use xorg.conf.internal. Should work. :slight_smile: )

I’ll try to update this thread if I end up with new problems or I change the setup somehow.