Requesting assistance with configuring optimus-manager to select the correct GPU

PREFACE: This is my first post on the forums; my apologies if I’ve missed some conventions.

CONTEXT: I initially installed Manjaro XFCE about a month ago, after finally giving up on Windows, due to various driver and software updates that (seemingly irreversibly) broke my configuration. I have been running various eGPU setups for about 2 years now, using mPCI-E adaptors plugged into the empty WWAN port on my motherboard (yes, there’s a performance bottleneck, but it’s still been worth it). I’ve experienced a number of troubles with my laptop’s NVIDIA Optimus setup, however I am certain that the use case I’m aiming for is physically possible (because I’ve had it set up successfully previously on Windows). I bought a bunch of upgrades for my Dell XPS 17 L702X back in June, and for all of a week I had it working together on Windows before some update or other killed it… I cannot upgrade parts and the performance I had during that week would more than suffice for the next year or so - if only I could get to work.

GOAL: To have the NVIDIA GTX 980 eGPU essentially acting as the primary GPU of my system, from running the display and monitors, to rendering games and other 3D applications, to hardware-accelerated computationally-intensive workloads (e.g. tensorflow) for my degree (I’m a Master’s student in Engineering).

I have scoured as many forums as I have been able and tried everything I could find, installing different drivers, gswitch, optimus-swtich, egpu-switcher, PRIME offloading, changing boot parameters, customising xorg.conf files, and a few combinations of the above (the mhwd “bumblebee” default doesn’t seem to work, either).

The closest I’ve come to making it work is in my current setup, where I’ve installed optimus-manager and I’m running the X server using the nvidia only mode, with the NVIDIA GT 550M dGPU. The video-nvidia-390xx driver lists both of my GPUs on its supported lists, so the driver is supposedly installed on both GPUs, and optimus-manager even detects both GPUs, but I cannot figure out how to direct it to ignore the dGPU and set-up with the eGPU.

If anyone who might understand all this better than I could offer a helpful suggestion, I would be extremely grateful.

INFO DUMPS:

inxi -Fazy

System:
  Kernel: 5.9.16-1-MANJARO x86_64 bits: 64 compiler: gcc v: 10.2.0 
  parameters: BOOT_IMAGE=/boot/vmlinuz-5.9-x86_64 
  root=UUID=358523bb-a828-4103-a85a-55adf5da6a5e rw quiet apparmor=1 
  security=apparmor udev.log_priority=3 pcie_ports=native 
  pci=assign-busses,nocrs 
  Desktop: Xfce 4.14.3 tk: Gtk 3.24.23 info: xfce4-panel wm: xfwm4 
  dm: LightDM 1.30.0 Distro: Manjaro Linux 
Machine:
  Type: Portable System: Dell product: Dell System XPS L702X v: N/A 
  serial: <filter> Chassis: type: 8 v: 0.1 serial: <filter> 
  Mobo: Dell model: 0K4H3G v: FAB1 serial: <filter> UEFI: Dell v: A19 
  date: 09/07/2012 
Battery:
  ID-1: BAT0 charge: 65.8 Wh condition: 65.8/73.3 Wh (90%) volts: 12.3/11.1 
  model: LGC Dell type: Li-ion serial: <filter> status: Full 
CPU:
  Info: Quad Core model: Intel Core i7-2760QM bits: 64 type: MT MCP 
  arch: Sandy Bridge family: 6 model-id: 2A (42) stepping: 7 microcode: 2F 
  L2 cache: 6 MiB 
  flags: avx lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx bogomips: 38335 
  Speed: 1365 MHz min/max: 800/3500 MHz Core speeds (MHz): 1: 1365 2: 1813 
  3: 1706 4: 799 5: 798 6: 1315 7: 798 8: 798 
  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: Not affected 
  Type: tsx_async_abort status: Not affected 
Graphics:
  Device-1: Intel 2nd Generation Core Processor Family Integrated Graphics 
  vendor: Dell driver: i915 v: kernel bus ID: 00:02.0 chip ID: 8086:0126 
  Device-2: NVIDIA GF106M [GeForce GT 550M] vendor: Dell driver: nvidia 
  v: 390.138 alternate: nouveau,nvidia_drm bus ID: 01:00.0 chip ID: 10de:0dd6 
  Device-3: NVIDIA GM204 [GeForce GTX 980] driver: nvidia v: 390.138 
  alternate: nouveau,nvidia_drm bus ID: 02:00.0 chip ID: 10de:13c0 
  Device-4: Quanta WEBCAM type: USB driver: uvcvideo bus ID: 1-1.4:3 
  chip ID: 0408:1802 serial: <filter> 
  Display: x11 server: X.Org 1.20.10 driver: modesetting FAILED: nvidia 
  display ID: :0.0 screens: 1 
  Screen-1: 0 s-res: 3520x1080 s-dpi: 96 s-size: 931x286mm (36.7x11.3") 
  s-diag: 974mm (38.3") 
  Monitor-1: HDMI-0 res: 1920x1080 hz: 60 dpi: 51 size: 960x540mm (37.8x21.3") 
  diag: 1101mm (43.4") 
  Monitor-2: LVDS-1-1 res: 1600x900 hz: 60 dpi: 106 
  size: 382x215mm (15.0x8.5") diag: 438mm (17.3") 
  OpenGL: renderer: GeForce GT 550M/PCIe/SSE2 v: 4.6.0 NVIDIA 390.138 
  direct render: Yes 
Audio:
  Device-1: Intel 6 Series/C200 Series Family High Definition Audio 
  vendor: Dell driver: snd_hda_intel v: kernel bus ID: 00:1b.0 
  chip ID: 8086:1c20 
  Device-2: NVIDIA GF106 High Definition Audio vendor: Dell 
  driver: snd_hda_intel v: kernel bus ID: 01:00.1 chip ID: 10de:0be9 
  Device-3: NVIDIA GM204 High Definition Audio driver: snd_hda_intel v: kernel 
  bus ID: 02:00.1 chip ID: 10de:0fbb 
  Sound Server: ALSA v: k5.9.16-1-MANJARO 
Network:
  Device-1: Intel Wireless 7260 driver: iwlwifi v: kernel port: 6000 
  bus ID: 03:00.0 chip ID: 8086:08b1 
  IF: wlp3s0 state: down mac: <filter> 
  Device-2: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet 
  vendor: Dell driver: r8169 v: kernel port: 2000 bus ID: 06:00.0 
  chip ID: 10ec:8168 
  IF: enp6s0 state: up speed: 1000 Mbps duplex: full mac: <filter> 
Drives:
  Local Storage: total: 1.35 TiB used: 8.64 GiB (0.6%) 
  SMART Message: Required tool smartctl not installed. Check --recommends 
  ID-1: /dev/sda maj-min: 8:0 vendor: Samsung model: SSD 860 QVO 1TB 
  size: 931.51 GiB block size: physical: 512 B logical: 512 B speed: 6.0 Gb/s 
  serial: <filter> rev: 2B6Q 
  ID-2: /dev/sdb maj-min: 8:16 vendor: Crucial model: CT480BX300SSD1 
  size: 447.13 GiB block size: physical: 4096 B logical: 512 B speed: 6.0 Gb/s 
  serial: <filter> rev: 010 
Partition:
  ID-1: / raw size: 931.22 GiB size: 915.6 GiB (98.32%) used: 8.64 GiB (0.9%) 
  fs: ext4 dev: /dev/sda2 maj-min: 8:2 
  ID-2: /boot/efi raw size: 300 MiB size: 299.4 MiB (99.80%) 
  used: 312 KiB (0.1%) fs: vfat dev: /dev/sda1 maj-min: 8:1 
Swap:
  Alert: No Swap data was found. 
Sensors:
  System Temperatures: cpu: 60.0 C mobo: 40.0 C sodimm: SODIMM C gpu: nvidia 
  temp: 46 C 
  Fan Speeds (RPM): cpu: 2450 
Info:
  Processes: 244 Uptime: 3h 23m wakeups: 1 Memory: 15.53 GiB 
  used: 1.98 GiB (12.7%) Init: systemd v: 247 Compilers: gcc: 10.2.0 Packages: 
  pacman: 1146 lib: 363 flatpak: 0 Shell: Bash v: 5.1.0 
  running in: xfce4-terminal inxi: 3.2.01

dmesg | grep -i nvidia

[    3.743774] audit: type=1400 audit(1610389534.757:4): apparmor="STATUS" operation="profile_load" profile="unconfined" name="nvidia_modprobe" pid=288 comm="apparmor_parser"
[    3.745166] audit: type=1400 audit(1610389534.757:5): apparmor="STATUS" operation="profile_load" profile="unconfined" name="nvidia_modprobe//kmod" pid=288 comm="apparmor_parser"
[    4.640304] input: HDA NVidia HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:1c.0/0000:02:00.1/sound/card2/input9
[    4.640372] input: HDA NVidia HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:1c.0/0000:02:00.1/sound/card2/input10
[    4.640438] input: HDA NVidia HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:1c.0/0000:02:00.1/sound/card2/input11
[    4.640500] input: HDA NVidia HDMI/DP,pcm=9 as /devices/pci0000:00/0000:00:1c.0/0000:02:00.1/sound/card2/input12
[    4.640564] input: HDA NVidia HDMI/DP,pcm=10 as /devices/pci0000:00/0000:00:1c.0/0000:02:00.1/sound/card2/input13
[    4.640626] input: HDA NVidia HDMI/DP,pcm=11 as /devices/pci0000:00/0000:00:1c.0/0000:02:00.1/sound/card2/input14
[    4.640697] input: HDA NVidia HDMI/DP,pcm=12 as /devices/pci0000:00/0000:00:1c.0/0000:02:00.1/sound/card2/input15
[    4.715279] input: HDA NVidia HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1/input16
[    4.715369] input: HDA NVidia HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1/input17
[    4.715451] input: HDA NVidia HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1/input18
[    4.715531] input: HDA NVidia HDMI/DP,pcm=9 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1/input19
[    5.284720] nvidia: loading out-of-tree module taints kernel.
[    5.284728] nvidia: module license 'NVIDIA' taints kernel.
[    5.292041] nvidia: module verification failed: signature and/or required key missing - tainting kernel
[    5.302760] nvidia-nvlink: Nvlink Core is being initialized, major device number 235
[    5.303101] nvidia 0000:01:00.0: enabling device (0006 -> 0007)
[    5.303201] nvidia 0000:01:00.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=none:owns=none
[    5.303314] nvidia 0000:02:00.0: enabling device (0000 -> 0003)
[    5.303392] nvidia 0000:02:00.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=none:owns=none
[    5.303526] NVRM: loading NVIDIA UNIX x86_64 Kernel Module  390.138  Thu May 14 01:01:53 PDT 2020 (using threaded interrupts)
[    5.322348] nvidia-modeset: Loading NVIDIA Kernel Mode Setting Driver for UNIX platforms  390.138  Thu May 14 04:02:47 PDT 2020
[    5.324391] [drm] [nvidia-drm] [GPU ID 0x00000100] Loading driver
[    5.843654] [drm] Initialized nvidia-drm 0.0.0 20160202 for 0000:01:00.0 on minor 1
[    5.843782] [drm] [nvidia-drm] [GPU ID 0x00000200] Loading driver
[    5.848142] [drm:nv_drm_load [nvidia_drm]] *ERROR* [nvidia-drm] [GPU ID 0x00000200] Failed to allocate NvKmsKapiDevice
[    5.848235] [drm:nv_drm_probe_devices [nvidia_drm]] *ERROR* [nvidia-drm] [GPU ID 0x00000200] Failed to register device
[10323.748271] WARNING: CPU: 0 PID: 5706 at /storage/manjaro/makepkg/linux59-nvidia-390xx/src/NVIDIA-Linux-x86_64-390.138-no-compat32/kernel/nvidia-drm/nvidia-drm-drv.c:492 nv_drm_master_set+0x22/0x30 [nvidia_drm]
[10323.748272] Modules linked in: mousedev joydev hid_steam hid_generic uvcvideo videobuf2_vmalloc videobuf2_memops videobuf2_v4l2 videobuf2_common videodev mc nvidia_drm(POE) nvidia_modeset(POE) nvidia(POE) ipmi_devintf ipmi_msghandler snd_hda_codec_realtek snd_hda_codec_generic squashfs intel_rapl_msr intel_rapl_common usbhid i915 x86_pkg_temp_thermal intel_powerclamp hid coretemp loop kvm_intel iwlmvm dell_laptop i2c_algo_bit drm_kms_helper snd_hda_codec_hdmi ledtrig_audio kvm irqbypass cec dell_wmi iTCO_wdt crct10dif_pclmul at24 mei_hdcp mac80211 intel_pmc_bxt crc32_pclmul sparse_keymap ghash_clmulni_intel wmi_bmof iTCO_vendor_support snd_hda_intel dell_smbios rc_core snd_intel_dspcfg libarc4 snd_hda_codec dell_wmi_descriptor dcdbas nls_iso8859_1 aesni_intel nls_cp437 snd_hda_core vfat fat snd_hwdep drm crypto_simd iwlwifi dell_smm_hwmon r8169 snd_pcm cryptd glue_helper rapl intel_gtt realtek agpgart intel_cstate snd_timer psmouse i2c_i801 mdio_devres cfg80211 of_mdio syscopyarea
[10323.748322] RIP: 0010:nv_drm_master_set+0x22/0x30 [nvidia_drm]
[10323.758189] WARNING: CPU: 3 PID: 5706 at /storage/manjaro/makepkg/linux59-nvidia-390xx/src/NVIDIA-Linux-x86_64-390.138-no-compat32/kernel/nvidia-drm/nvidia-drm-drv.c:492 nv_drm_master_set+0x22/0x30 [nvidia_drm]
[10323.758190] Modules linked in: mousedev joydev hid_steam hid_generic uvcvideo videobuf2_vmalloc videobuf2_memops videobuf2_v4l2 videobuf2_common videodev mc nvidia_drm(POE) nvidia_modeset(POE) nvidia(POE) ipmi_devintf ipmi_msghandler snd_hda_codec_realtek snd_hda_codec_generic squashfs intel_rapl_msr intel_rapl_common usbhid i915 x86_pkg_temp_thermal intel_powerclamp hid coretemp loop kvm_intel iwlmvm dell_laptop i2c_algo_bit drm_kms_helper snd_hda_codec_hdmi ledtrig_audio kvm irqbypass cec dell_wmi iTCO_wdt crct10dif_pclmul at24 mei_hdcp mac80211 intel_pmc_bxt crc32_pclmul sparse_keymap ghash_clmulni_intel wmi_bmof iTCO_vendor_support snd_hda_intel dell_smbios rc_core snd_intel_dspcfg libarc4 snd_hda_codec dell_wmi_descriptor dcdbas nls_iso8859_1 aesni_intel nls_cp437 snd_hda_core vfat fat snd_hwdep drm crypto_simd iwlwifi dell_smm_hwmon r8169 snd_pcm cryptd glue_helper rapl intel_gtt realtek agpgart intel_cstate snd_timer psmouse i2c_i801 mdio_devres cfg80211 of_mdio syscopyarea
[10323.758229] RIP: 0010:nv_drm_master_set+0x22/0x30 [nvidia_drm]

glxinfo | grep -i vendor

server glx vendor string: NVIDIA Corporation
client glx vendor string: NVIDIA Corporation
OpenGL vendor string: NVIDIA Corporation

lspci -t -v

-[0000:00]-+-00.0  Intel Corporation 2nd Generation Core Processor Family DRAM Controller
           +-01.0-[01]--+-00.0  NVIDIA Corporation GF106M [GeForce GT 550M]
           |            \-00.1  NVIDIA Corporation GF106 High Definition Audio Controller
           +-02.0  Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller
           +-16.0  Intel Corporation 6 Series/C200 Series Chipset Family MEI Controller #1
           +-1a.0  Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2
           +-1b.0  Intel Corporation 6 Series/C200 Series Chipset Family High Definition Audio Controller
           +-1c.0-[02]--+-00.0  NVIDIA Corporation GM204 [GeForce GTX 980]
           |            \-00.1  NVIDIA Corporation GM204 High Definition Audio Controller
           +-1c.1-[03]----00.0  Intel Corporation Wireless 7260
           +-1c.3-[04]----00.0  NEC Corporation uPD720200 USB 3.0 Host Controller
           +-1c.4-[05]--
           +-1c.5-[06]----00.0  Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
           +-1d.0  Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1
           +-1f.0  Intel Corporation HM67 Express Chipset LPC Controller
           +-1f.2  Intel Corporation 6 Series/C200 Series Chipset Family 6 port Mobile SATA AHCI Controller
           +-1f.3  Intel Corporation 6 Series/C200 Series Chipset Family SMBus Controller
           \-1f.6  Intel Corporation 6 Series/C200 Series Chipset Family Thermal Management Controller

xrandr --listproviders

Providers: number : 2
Provider 0: id: 0x279 cap: 0x1, Source Output crtcs: 2 outputs: 1 associated providers: 1 name:NVIDIA-0
Provider 1: id: 0x2a2 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 2 outputs: 4 associated providers: 1 name:modesetting

cat /etc/X11/xorg.conf.d/10-optimus-manager.conf

Section "Files"
	ModulePath "/usr/lib/nvidia"
	ModulePath "/usr/lib32/nvidia"
	ModulePath "/usr/lib32/nvidia/xorg/modules"
	ModulePath "/usr/lib32/xorg/modules"
	ModulePath "/usr/lib64/nvidia/xorg/modules"
	ModulePath "/usr/lib64/nvidia/xorg"
	ModulePath "/usr/lib64/xorg/modules"
EndSection

Section "ServerLayout"
	Identifier "layout"
	Screen 0 "nvidia"
	Inactive "intel"
EndSection

Section "Device"
	Identifier "nvidia"
	Driver "nvidia"
	BusID "PCI:1:0:0"
	Option "Coolbits" "28"
EndSection

Section "Screen"
	Identifier "nvidia"
	Device "nvidia"
	Option "AllowEmptyInitialConfiguration"
	Option "AllowExternalGpus"
EndSection

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

Section "Screen"
	Identifier "intel"
	Device "intel"
EndSection

Section "ServerFlags"
	Option "IgnoreABI" "1"
EndSection

cat /etc/default/grub

GRUB_DEFAULT=saved
GRUB_TIMEOUT=5
GRUB_TIMEOUT_STYLE=hidden
GRUB_DISTRIBUTOR="Manjaro"
GRUB_CMDLINE_LINUX_DEFAULT="quiet apparmor=1 security=apparmor udev.log_priority=3 pcie_ports=native pci=assign-busses,nocrs"
GRUB_CMDLINE_LINUX=""

# If you want to enable the save default function, uncomment the following
# line, and set GRUB_DEFAULT to saved.
GRUB_SAVEDEFAULT=true

# Preload both GPT and MBR modules so that they are not missed
GRUB_PRELOAD_MODULES="part_gpt part_msdos"

# Uncomment to enable booting from LUKS encrypted devices
#GRUB_ENABLE_CRYPTODISK=y

# Uncomment to use basic console
GRUB_TERMINAL_INPUT=console

# Uncomment to disable graphical terminal
#GRUB_TERMINAL_OUTPUT=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command 'videoinfo'
GRUB_GFXMODE=auto

# Uncomment to allow the kernel use the same resolution used by grub
GRUB_GFXPAYLOAD_LINUX=keep

# Uncomment if you want GRUB to pass to the Linux kernel the old parameter
# format "root=/dev/xxx" instead of "root=/dev/disk/by-uuid/xxx"
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
GRUB_DISABLE_RECOVERY=true

# Uncomment and set to the desired menu colors.  Used by normal and wallpaper
# modes only.  Entries specified as foreground/background.
GRUB_COLOR_NORMAL="light-gray/black"
GRUB_COLOR_HIGHLIGHT="green/black"

# Uncomment one of them for the gfx desired, a image background or a gfxtheme
#GRUB_BACKGROUND="/usr/share/grub/background.png"
GRUB_THEME="/usr/share/grub/themes/manjaro/theme.txt"

# Uncomment to get a beep at GRUB start
#GRUB_INIT_TUNE="480 440 1"

cat /etc/optimus-manager/optimus-manager.conf

[optimus]

# This parameter defines the method used to power switch the Nvidia card. See the documentation
# for a complete description of what each value does. Possible values :
#
# - nouveau : load the nouveau module on the Nvidia card.
# - bbswitch : power off the card using the bbswitch module (requires the bbswitch dependency).
# - acpi_call : try various ACPI method calls to power the card on and off (requires the acpi_call dependency)
# - custom: use custom scripts at /etc/optimus-manager/nvidia-enable.sh and /etc/optimus-manager/nvidia-disable.sh
# - none : do not use an external module for power management. For some laptop models it's preferable to
#          use this option in combination with pci_power_control (see below).
switching=none

# Enable PCI power management in Intel mode.
# This option is incompatible with acpi_call and bbswitch, so it will be ignored in those cases.
pci_power_control=no

# Remove the Nvidia card from the PCI bus.
# May prevent crashes caused by power switching.
# Ignored if switching=nouveau or switching=bbswitch.
pci_remove=no

# Reset the Nvidia card at the PCI level before reloading the nvidia module.
# Ensures the card is in a fresh state before reloading the nvidia module.
# May fix some switching issues. Possible values :
#
# - no : does not perform any reset
# - function_level : perform a light "function-level" reset
# - hot_reset : perform a "hot reset" of the PCI bridge. ATTENTION : this method messes with the hardware
#         directly, please read the online documentation of optimus-manager before using it.
#         Also, it will perform a PCI remove even if pci_remove=no.
#
pci_reset=hot_reset

# Automatically log out the current desktop session when switching GPUs.
# This feature is currently supported for the following DE/WM :
# KDE Plasma, GNOME, XFCE, LXDE, Deepin, i3, Openbox, AwesomeWM, bspwm
# If this option is disabled or you use a different desktop environment,
# GPU switching only becomes effective at the next graphical session login.
auto_logout=yes

# GPU mode to use at computer startup. Possible values: nvidia, intel, hybrid, auto
# "auto" is a special mode that auto-detects if the computer is running on battery
# and selects a proper GPU mode. See the other options below.
startup_mode=nvidia
# GPU mode to select when startup_mode=auto and the computer is running on battery.
# Possible values: nvidia, intel, hybrid
startup_auto_battery_mode=intel
# GPU mode to select when startup_mode=auto and the computer is running on external power.
# Possible values: nvidia, intel, hybrid
startup_auto_extpower_mode=nvidia


[intel]

# Driver to use for the Intel GPU. Possible values : modesetting, intel
# To use the intel driver, you need to install the package "xf86-video-intel".
driver=modesetting

# Acceleration method (corresponds to AccelMethod in the Xorg configuration).
# Only applies to the intel driver.
# Possible values : sna, xna, uxa
# Leave blank for the default (no option specified)
accel=

# Enable TearFree option in the Xorg configuration.
# Only applies to the intel driver.
# Possible values : yes, no
# Leave blank for the default (no option specified)
tearfree=

# DRI version. Possible values : 2, 3
DRI=3

# Whether or not to enable modesetting for the nouveau driver.
# Does not affect modesetting for the Intel GPU driver !
# This option only matters if you use nouveau as the switching backend.
modeset=yes

[nvidia]

# Whether or not to enable modesetting. Required for PRIME Synchronization (which prevents tearing).
modeset=yes

# Whether or not to enable the NVreg_UsePageAttributeTable option in the Nvidia driver.
# Recommended, can cause poor CPU performance otherwise.
PAT=yes

# DPI value. This will be set using the Xsetup script passed to your login manager.
# It will run the command
# xrandr --dpi <DPI>
# Leave blank for the default (the above command will not be run).
DPI=96

# If you're running an updated version of xorg-server (let's say to get PRIME Render offload enabled),
# the nvidia driver may not load because of an ABI version mismatch. Setting this flag to "yes"
# will allow the loading of the nvidia driver.
ignore_abi=yes

# Set to yes if you want to use optimus-manager with external Nvidia GPUs (experimental)
allow_external_gpus=yes

# Comma-separated list of Nvidia-specific options to apply.
# Available options :
# - overclocking : enable CoolBits in the Xorg configuration, which unlocks clocking options
#   in the Nvidia control panel. Note: does not work in hybrid mode.
# - triple_buffer : enable triple buffering.
options=overclocking

nvidia-smi

Mon Jan 11 22:06:54 2021       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 390.138                Driver Version: 390.138                   |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GT 550M     Off  | 00000000:01:00.0 N/A |                  N/A |
| N/A   47C    P0    N/A /  N/A |    318MiB /   964MiB |     N/A      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0                    Not Supported                                       |
+-----------------------------------------------------------------------------+

(Let me know if I’ve missed anything!)

1 Like

[quote=“jimux, post:1, topic:48241”]
CONTEXT: I initially installed Manjaro XFCE about a month ago, after finally giving up on Windows, due to various driver and software updates that (seemingly irreversibly) broke my configuration. I have been running various eGPU setups for about 2 years now, using mPCI-E adaptors plugged into the empty WWAN port on my motherboard (yes, there’s a performance bottleneck, but it’s still been worth it). I’ve experienced a number of troubles with my laptop’s NVIDIA Optimus setup, however I am certain that the use case I’m aiming for is physically possible (because I’ve had it set up successfully previously on Windows). I bought a bunch of upgrades for my Dell XPS 17 L702X back in June, and for all of a week I had it working together on Windows before some update or other killed it… I cannot upgrade parts and the performance I had during that week would more than suffice for the next year or so - if only I could get to work.

GOAL: To have the NVIDIA GTX 980 eGPU essentially acting as the primary GPU of my system, from running the display and monitors, to rendering games and other 3D applications, to hardware-accelerated computationally-intensive workloads (e.g. tensorflow) for my degree (I’m a Master’s student in Engineering).

I have scoured as many forums as I have been able and tried everything I could find, installing different drivers, gswitch, optimus-swtich, egpu-switcher, PRIME offloading, changing boot parameters, customising xorg.conf files, and a few combinations of the above (the mhwd “bumblebee” default doesn’t seem to work, either).

The closest I’ve come to making it work is in my current setup, where I’ve installed optimus-manager and I’m running the X server using the nvidia only mode, with the NVIDIA GT 550M dGPU. The video-nvidia-390xx driver lists both of my GPUs on its supported lists, so the driver is supposedly installed on both GPUs, and optimus-manager even detects both GPUs, but I cannot figure out how to direct it to ignore the dGPU and set-up with the eGPU.

If anyone who might understand all this better than I could offer a helpful suggestion, I would be extremely grateful.

I have been running various eGPU setup NVIDIA GTX 980 eGPU
using mPCI-E adaptors plugged into WWAN port
en. wikipedia. org/wiki/PCI_Express#PCI_Express_Mini_Card

on my Dell XPS 17 L702X NVIDIA Optimus setup,


Dell XPS 17 L702X NVIDIA
Graphics adapter
[NVIDIA GeForce GT 555M]
NVIDIA-GeForce-GT-555M -
3072 MB, Core: 590 MHz,
Memory: 900 MHz
shader rate: 1180 MHz
, DDR3-VRAM, 265.94

Memory
4096 MB ,
2x 2048 MBDDR3 (1333 MHz)

Display
17.30 inch 16:9, 1920 x 1080 pixel,
LGD02C5, 120 Hz, FHD 3D WLED True Life, glossy: yes

Mainboard
Intel HM67
wikipedia. org/wiki/List_of_Intel_chipsets#Mobile_chipsets
wikipedia. org/wiki/Flexible_Display_Interface
wikipedia. org/wiki/Platform_Controller_Hub#Cougar_Point
Sandy and Ivy Bridge processors contain a [DRM].wikipedia.org/wiki/Digital_rights_management) technology that some video streaming web sites rely on to restrict use of their content. Such web sites offer 1080p streaming to users with such CPUs and downgrade the quality for other users
wikipedia. org/wiki/Sandy_Bridge#cite_note-45)
ntel. com /content/www/us/en/ark/products/52809/mobile-intel-hm67-express-chipset.html
intel. com /content/dam/support/us/en/documents/boardsandkits/Intel-6-Series-Chipset-Specification-Update.pdf

Storage
Seagate Momentus 7200.4 ST9500420AS, 500 GB , 7200 rpm

Soundcard
Realtek ALC665 @ Intel Cougar Point PCH - High Definition Audio Controller

Connections
2 USB 2.0, 2 USB 3.0 / 3.1 Gen1, 1 HDMI, 1 DisplayPort,
1 Kensington Lock, 1 eSata, Audio Connections: 2 outputs,
1 input, Card Reader: SD,SDIO,SDHC,SDXC,MS,MS PRO,MSXC,MMC,XD,
TV Card: DVB-T TV-Tuner, antenna

Networking
Realtek PCIe GBE Family Controller (10/100/1000/2500/5000MBit/s),
Gigabit Ethernet LAN controllers 82579LM and 82579LF

Intel Centrino Wireless-N 1030 (b/g/n = Wi-Fi 4), Bluetooth 3.0
8 lane PCIe 2.0. No intel VT support.
/pcisig.com/
wikipedia. org/wiki/Peripheral_Component_Interconnect#Mini_PCI
wikipedia org/wiki/Centrino#Huron_River_platform_(2011)
Intel Centrino Wireless-N 1030 BGN mini-PCIe adapter with Bluetooth[[24]]/en. wikipedia. org/wik /Centrino#cite_note-24) (codenamed Rainbow Peak 2×1 ),


eGPU NVIDIA GTX 980 eGPU
wikipedia. org/wiki/PCI_Express#External_GPUs
In 2006, [Nvidia].wikipedia .org/wiki/Nvidia) developed the [Quadro Plex]//en. wikipedia. org/wiki /Nvidia_Quadro_Plex) external PCIe family of [wikipedia. org/wiki/Graphics_processing_unit) that can be used for advanced graphic applications for the professional market.wikipedia. org/wiki /PCI_Express#cite_note-102) These video cards require a PCI Express x8 or x16 slot for the host-side card, which connects to the Plex via a [VHDCI]wikipedia. org/wiki/VHDCI) carrying eight PCIe lanes.wikipedia. org/wiki/PCI_Express#cite_note-103

essentially acting as the primary GPU
from running the display and monitors,

I tried different drivers, gswitch, optimus-swtich, egpu-switcher, PRIME offloading, changing boot parameters, customising xorg.conf files, and a few combinations of the above (the mhwd “bumblebee” default doesn’t seem to work, either.

The closest I’ve come to making it work I’ve installed optimus-manager I’m running the X server using the nvidia only mode, with the NVIDIA GT 550M dGPU.
The video-nvidia-390xx driver lists both of my GPUs on its supported lists, so
The driver is supposedly installed on both GPUs,
and optimus-manager even detects both GPUs,
how to direct it to ignore the dGPU and set-up with the eGPU.

downloads. dell. com/manuals/all-products/esuprt_laptop/esuprt_xps_laptop/xps-l702x_setup%20guide_en-us.pdf


download.nvidia. com/XFree86/Linux-x86_64/390.141/README/index.html
dell. com/support/home/en-sg/product-support/product/xps-l702x/docs
rtfm?

SLI and Multi-GPU
“The NVIDIA Linux driver contains support for NVIDIA SLI FrameRendering and NVIDIA Multi-GPU FrameRendering. Both of these technologies allow an OpenGL application to take advantage of multiple GPUs to improve visual performance.
The distinction between SLI and Multi-GPU is straightforward. SLI is used to leverage the processing power of GPUs across two or more graphics cards, while Multi-GPU is used to leverage the processing power of two GPUs colocated on the same graphics card. If you want to link together separate graphics cards, you should use the “SLI” X config option. Likewise, if you want to link together GPUs on the same graphics card, you should use the “MultiGPU” X config option. If you have two cards, each with two GPUs, and you wish to link them all together, you should use the “SLI” option.”
download.nvidia. com/XFree86/Linux-x86_64/390.141/README/sli.html

The Xinerama extension
The NVIDIA Linux Driver supports GLX when Xinerama is enabled on similar GPUs. The Xinerama extension takes multiple physical X screens (possibly spanning multiple GPUs), and binds them into one logical X screen. This allows windows to be dragged between GPUs and to span across multiple GPUs. The NVIDIA driver supports hardware accelerated OpenGL rendering across all NVIDIA GPUs when Xinerama is enabled.
download.nvidia. com/XFree86/Linux-x86_64/390.141/README/xineramaglx.html

X Resize and Rotate Extension
This NVIDIA driver release contains support for the X Resize and Rotate (RandR) Extension versions 1.1, 1.2, and 1.3. The version of the RandR extension advertised to X clients is controlled by the X server: the RandR extension and protocol are provided by the X server, which routes protocol requests to the NVIDIA X driver. Run xrandr --version to check the version of RandR provided by the X server.
download.nvidia. com/XFree86/Linux-x86_64/390.141/README/xrandrextension.html

READ!
download.nvidia. com/XFree86/Linux-x86_64/390.141/README/xconfigoptions.html
download.nvidia. com/XFree86/Linux-x86_64/390.141/README/optimus.html
download.nvidia. com/XFree86/Linux-x86_64/390.141/README/randr14.html
Disable Integrated NIC in BIOS
egpu
/hertg/ egpu-switcher

READ NVIDIA X-RUN!
archlinux. org/index.php/Nvidia-xrun
archlinux. org/index.php/NVIDIA#Enabling_SLI
archlinux. org/index.php/NVIDIA#Multiple_monitors
archlinux. org/index.php/Multihead#Xinerama

Yeah. Itll work

This seems a bit odd. What’s the output of xrandr --listproviders? And can you post the Xorg log?

Will not work at all cause Manjaro dropped support for older NVIDIA chips at all. Only open source nouveau will handle it now.
See: