RX580 eGPU with external monitor sometimes results in no signal on login screen

Hey all, I’m having issues setting up my Razor Core X with Manjaro.

The situation:
I have an external monitor hooked up to the eGPU enclosure. I would like this external monitor to be my primary monitor and my laptop’s built-in monitor to be my secondary monitor.

Current Steps:
Initially, (with the appropriate AMD driver) I tried just connecting the eGPU and authorizing the thunderbolt device. The second display was detected but nothing showed up. I tried checking the “enabled” checkbox under KDE Plasma’s “Display Configuration” settings page. This didn’t change anything. It wasn’t until I also checked the “Primary” checkbox on the second monitor that it started working (turned on, received signal).

Everything was really choppy though so I followed Arch’s PRIME guide on setting a discrete GPU card as the primary GPU and eventually installed egpu-switcher. I tried the generated configuration from egpu-switcher, an analogous script from the Arch Wiki, and a conglomerate of the two. Both of which left me with the problem in the title.

Problem:
Seemingly randomly, when the eGPU is hooked up to the computer before boot, the primary (external) monitor won’t receive any video signal (it goes into sleep) on the login page (the laptop monitor is also off, I assume because it’s not set as the primary monitor). I know it’s the login page because by sheer luck, I tried entering my password with a black screen and Manjaro loaded up, after which, the external monitor would load. When this happens, there would be a number of login screens in windows (sddm-greeter) that can be interacted with, but does not lead to anything. I would just like a bit more consistency.

Currently used xorg.conf file:

Section "Module"
    Load           "modesetting"
    Load           "amdgpu"
    Load           "intel"
EndSection

Section "ServerLayout"
    Identifier     "layout"
    Screen 1       "primary"
    Screen 0       "secondary" LeftOf "primary"
EndSection

Section "Device"
    Identifier     "amdgpu"
    Driver         "amdgpu"
    BusID          "PCI:58:0:0"
#     Option         "AllowEmptyInitialConfiguration"
#     Option         "AllowExternalGpus" "True"
EndSection

Section "Screen"
    Identifier     "primary"
    Device         "amdgpu"
EndSection

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

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

Any help is appreciated!

Here’s my inxi:

System:
  Kernel: 5.14.10-1-MANJARO x86_64 bits: 64 compiler: gcc v: 11.1.0
  parameters: BOOT_IMAGE=/boot/vmlinuz-5.14-x86_64
  root=UUID=5cd0efe7-0bc3-40fe-9334-0cb2d5228078 rw quiet apparmor=1
  security=apparmor udev.log_priority=3
  Desktop: KDE Plasma 5.22.5 tk: Qt 5.15.2 wm: kwin_x11 vt: 1 dm: SDDM
  Distro: Manjaro Linux base: Arch Linux
Machine:
  Type: Convertible System: LENOVO product: 81C4 v: Lenovo YOGA C930-13IKB
  serial: <filter> Chassis: type: 31 v: Lenovo YOGA C930-13IKB
  serial: <filter>
  Mobo: LENOVO model: LNVNB161216 v: SDK0J40709 WIN serial: <filter>
  UEFI: LENOVO v: 8GCN37WW date: 11/23/2020
Battery:
  ID-1: BAT1 charge: 44.5 Wh (99.1%) condition: 44.9/60.0 Wh (74.9%)
  volts: 8.6 min: 7.7 model: Simplo BASE-BAT type: Li-poly serial: <filter>
  status: Unknown
Memory:
  RAM: total: 15.38 GiB used: 3.79 GiB (24.6%)
  RAM Report: permissions: Unable to run dmidecode. Root privileges required.
CPU:
  Info: Quad Core model: Intel Core i7-8550U bits: 64 type: MT MCP
  arch: Kaby Lake note: check family: 6 model-id: 8E (142) stepping: A (10)
  microcode: EA cache: L2: 8 MiB bogomips: 32012
  Speed: 2388 MHz min/max: 400/4000 MHz Core speeds (MHz): 1: 2388 2: 1170
  3: 1939 4: 1810 5: 1481 6: 1850 7: 1613 8: 1945
  Flags: 3dnowprefetch abm acpi adx aes aperfmperf apic arat arch_perfmon art
  avx avx2 bmi1 bmi2 bts clflush clflushopt cmov constant_tsc cpuid
  cpuid_fault cx16 cx8 de ds_cpl dtes64 dtherm dts epb ept ept_ad erms est
  f16c flexpriority flush_l1d fma fpu fsgsbase fxsr ht hwp hwp_act_window
  hwp_epp hwp_notify ibpb ibrs ida intel_pt invpcid invpcid_single lahf_lm lm
  mca mce md_clear mmx monitor movbe mpx msr mtrr nonstop_tsc nopl nx pae pat
  pbe pcid pclmulqdq pdcm pdpe1gb pebs pge pln pni popcnt pse pse36 pti pts
  rdrand rdseed rdtscp rep_good sdbg sep sgx smap smep ss ssbd sse sse2 sse4_1
  sse4_2 ssse3 stibp syscall tm tm2 tpr_shadow tsc tsc_adjust
  tsc_deadline_timer vme vmx vnmi vpid x2apic xgetbv1 xsave xsavec xsaveopt
  xsaves xtopology xtpr
  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 mitigation: Microcode
  Type: tsx_async_abort status: Not affected
Graphics:
  Device-1: Intel UHD Graphics 620 vendor: Lenovo driver: i915 v: kernel
  bus-ID: 00:02.0 chip-ID: 8086:5917 class-ID: 0300
  Device-2: AMD Ellesmere [Radeon RX 470/480/570/570X/580/580X/590]
  vendor: XFX Pine driver: amdgpu v: kernel bus-ID: 3a:00.0 chip-ID: 1002:67df
  class-ID: 0300
  Device-3: Acer Integrated Camera type: USB driver: uvcvideo bus-ID: 1-1:2
  chip-ID: 5986:2115 class-ID: 0e02
  Device-4: Logitech Webcam C270 type: USB driver: snd-usb-audio,uvcvideo
  bus-ID: 1-6.1.2:7 chip-ID: 046d:0825 class-ID: 0102 serial: <filter>
  Display: x11 server: X.Org 1.20.13 compositor: kwin_x11 driver:
  loaded: amdgpu,intel unloaded: modesetting display-ID: :0 screens: 1
  Screen-1: 0 s-res: 3840x1080 s-dpi: 96 s-size: 1013x285mm (39.9x11.2")
  s-diag: 1052mm (41.4")
  Monitor-1: HDMI-A-0 res: 1920x1080 dpi: 82 size: 598x336mm (23.5x13.2")
  diag: 686mm (27")
  Monitor-2: eDP1 res: 1920x1080 hz: 60 dpi: 157 size: 310x170mm (12.2x6.7")
  diag: 354mm (13.9")
  OpenGL: renderer: Radeon RX 580 Series (POLARIS10 DRM 3.42.0
  5.14.10-1-MANJARO LLVM 12.0.1)
  v: 4.6 Mesa 21.2.3 direct render: Yes
Audio:
  Device-1: Intel Sunrise Point-LP HD Audio vendor: Lenovo driver: snd_soc_skl
  v: kernel alternate: snd_hda_intel bus-ID: 00:1f.3 chip-ID: 8086:9d71
  class-ID: 0401
  Device-2: AMD Ellesmere HDMI Audio [Radeon RX 470/480 / 570/580/590]
  vendor: XFX Pine driver: snd_hda_intel v: kernel bus-ID: 3a:00.1
  chip-ID: 1002:aaf0 class-ID: 0403
  Device-3: Logitech Webcam C270 type: USB driver: snd-usb-audio,uvcvideo
  bus-ID: 1-6.1.2:7 chip-ID: 046d:0825 class-ID: 0102 serial: <filter>
  Sound Server-1: ALSA v: k5.14.10-1-MANJARO running: yes
  Sound Server-2: sndio v: N/A running: no
  Sound Server-3: JACK v: 1.9.19 running: no
  Sound Server-4: PulseAudio v: 15.0 running: yes
  Sound Server-5: PipeWire v: 0.3.38 running: yes
Network:
  Device-1: Intel Wireless-AC 9260 driver: iwlwifi v: kernel bus-ID: 6b:00.0
  chip-ID: 8086:2526 class-ID: 0280
  IF: wlp107s0 state: up mac: <filter>
  IP v4: <filter> type: dynamic noprefixroute scope: global
  broadcast: <filter>
  IP v6: <filter> type: dynamic noprefixroute scope: global
  IP v6: <filter> type: noprefixroute scope: link
  Device-2: Realtek RTL8153 Gigabit Ethernet Adapter type: USB driver: r8152
  bus-ID: 4-1.2:4 chip-ID: 0bda:8153 class-ID: 0000 serial: <filter>
  IF: enp55s0u1u2 state: down mac: <filter>
  WAN IP: <filter>
Bluetooth:
  Device-1: Intel Wireless-AC 9260 Bluetooth Adapter type: USB driver: btusb
  v: 0.8 bus-ID: 1-8:5 chip-ID: 8087:0025 class-ID: e001
  Report: rfkill ID: hci0 rfk-id: 3 state: down bt-service: enabled,running
  rfk-block: hardware: no software: yes address: see --recommends
Logical:
  Message: No logical block device data found.
RAID:
  Message: No RAID data found.
Drives:
  Local Storage: total: 462.05 GiB used: 129.44 GiB (28.0%)
  SMART Message: Unable to run smartctl. Root privileges required.
  ID-1: /dev/nvme0n1 maj-min: 259:0 vendor: Samsung model: MZVLB256HAHQ-000L2
  size: 238.47 GiB block-size: physical: 512 B logical: 512 B speed: 31.6 Gb/s
  lanes: 4 type: SSD serial: <filter> rev: 0L1QEXD7 temp: 43.9 C scheme: GPT
  ID-2: /dev/sda maj-min: 8:0 type: USB vendor: Kingston model: SA400S37240
  size: 223.57 GiB block-size: physical: 512 B logical: 512 B type: N/A
  serial: <filter> rev: SBFK scheme: MBR
  Message: No optical or floppy data found.
Partition:
  ID-1: / raw-size: 127.98 GiB size: 125.72 GiB (98.24%)
  used: 28.78 GiB (22.9%) fs: ext4 dev: /dev/nvme0n1p5 maj-min: 259:5
  label: N/A uuid: 5cd0efe7-0bc3-40fe-9334-0cb2d5228078
  ID-2: /boot/efi raw-size: 260 MiB size: 256 MiB (98.46%)
  used: 29.1 MiB (11.4%) fs: vfat dev: /dev/nvme0n1p1 maj-min: 259:1
  label: SYSTEM_DRV uuid: BAA4-116D
  ID-3: /run/media/ydeng/Windows-SSD raw-size: 109.25 GiB
  size: 109.25 GiB (100.00%) used: 100.64 GiB (92.1%) fs: ntfs
  dev: /dev/nvme0n1p3 maj-min: 259:3 label: Windows-SSD uuid: 98A2A485A2A46988
Swap:
  Alert: No swap data was found.
Unmounted:
  ID-1: /dev/nvme0n1p2 maj-min: 259:2 size: 16 MiB fs: <superuser required>
  label: N/A uuid: N/A
  ID-2: /dev/nvme0n1p4 maj-min: 259:4 size: 1000 MiB fs: ntfs label: WINRE_DRV
  uuid: CA74A4EB74A4DC07
  ID-3: /dev/sda1 maj-min: 8:1 size: 223.57 GiB fs: vfat label: ADDITIONAL
  uuid: E0BC-2389
USB:
  Hub-1: 1-0:1 info: Full speed (or root) Hub ports: 12 rev: 2.0
  speed: 480 Mb/s chip-ID: 1d6b:0002 class-ID: 0900
  Device-1: 1-1:2 info: Acer Integrated Camera type: Video driver: uvcvideo
  interfaces: 2 rev: 2.0 speed: 480 Mb/s power: 500mA chip-ID: 5986:2115
  class-ID: 0e02
  Device-2: 1-5:3 info: Synaptics type: <vendor specific> driver: N/A
  interfaces: 1 rev: 2.0 speed: 12 Mb/s power: 100mA chip-ID: 06cb:0081
  class-ID: ff00 serial: <filter>
  Hub-2: 1-6:4 info: VIA Labs VL813 Hub ports: 4 rev: 2.1 speed: 480 Mb/s
  chip-ID: 2109:2813 class-ID: 0900
  Hub-3: 1-6.1:6 info: Realtek RTS5411 Hub ports: 4 rev: 2.1 speed: 480 Mb/s
  chip-ID: 0bda:5411 class-ID: 0900
  Device-1: 1-6.1.2:7 info: Logitech Webcam C270 type: Video,Audio
  driver: snd-usb-audio,uvcvideo interfaces: 4 rev: 2.0 speed: 480 Mb/s
  power: 500mA chip-ID: 046d:0825 class-ID: 0102 serial: <filter>
  Hub-4: 1-6.1.3:8 info: Terminus Hub ports: 4 rev: 2.0 speed: 480 Mb/s
  power: 100mA chip-ID: 1a40:0101 class-ID: 0900
  Device-1: 1-6.1.3.1:10 info: Microdia USB DEVICE type: Keyboard,Mouse
  driver: hid-generic,usbhid interfaces: 2 rev: 2.0 speed: 12 Mb/s
  power: 100mA chip-ID: 0c45:8520 class-ID: 0301
  Device-2: 1-6.1.4:9 info: SINOWEALTH Game Mouse type: Mouse,Keyboard
  driver: hid-generic,usbhid interfaces: 2 rev: 1.1 speed: 12 Mb/s
  power: 480mA chip-ID: 258a:1007 class-ID: 0301
  Device-3: 1-8:5 info: Intel Wireless-AC 9260 Bluetooth Adapter
  type: Bluetooth driver: btusb interfaces: 2 rev: 2.0 speed: 12 Mb/s
  power: 100mA chip-ID: 8087:0025 class-ID: e001
  Hub-5: 2-0:1 info: Full speed (or root) Hub ports: 6 rev: 3.0 speed: 5 Gb/s
  chip-ID: 1d6b:0003 class-ID: 0900
  Hub-6: 3-0:1 info: Full speed (or root) Hub ports: 2 rev: 2.0
  speed: 480 Mb/s chip-ID: 1d6b:0002 class-ID: 0900
  Hub-7: 4-0:1 info: Full speed (or root) Hub ports: 2 rev: 3.1 speed: 10 Gb/s
  chip-ID: 1d6b:0003 class-ID: 0900
  Hub-8: 4-1:2 info: VIA Labs VL813 Hub ports: 4 rev: 3.0 speed: 5 Gb/s
  chip-ID: 2109:0813 class-ID: 0900
  Hub-9: 4-1.1:3 info: Realtek Hub ports: 4 rev: 3.0 speed: 5 Gb/s
  chip-ID: 0bda:0411 class-ID: 0900
  Device-1: 4-1.2:4 info: Realtek RTL8153 Gigabit Ethernet Adapter
  type: Network driver: r8152 interfaces: 1 rev: 3.0 speed: 5 Gb/s
  power: 256mA chip-ID: 0bda:8153 class-ID: 0000 serial: <filter>
  Device-2: 4-1.3:5 info: VIA Labs VL817 SATA Adaptor type: Mass Storage
  driver: uas interfaces: 1 rev: 3.1 speed: 5 Gb/s power: 8mA
  chip-ID: 2109:0715 class-ID: 0806 serial: <filter>
Sensors:
  System Temperatures: cpu: 52.5 C mobo: 29.8 C gpu: amdgpu temp: 72.0 C
  Fan Speeds (RPM): N/A gpu: amdgpu fan: 824
Info:
  Processes: 315 Uptime: 1h 37m wakeups: 9 Init: systemd v: 249
  tool: systemctl Compilers: gcc: 11.1.0 clang: 12.0.1 Packages: pacman: 1330
  lib: 346 flatpak: 0 Shell: Zsh v: 5.8 default: Bash v: 5.1.8
  running-in: yakuake inxi: 3.3.08

I thought it may have been that kscreen is somehow conflicting with xorg.conf potentially leading to the occasional and seemingly random black screens on startup I’ve mentioned.

I’ve tried disabling kscreen from auto-starting, and writing a much more complete xorg.conf with monitor, screen, serverlayout, and device sections specifying which device with which monitor via Option "Monitor-outputname" "monitorsection", designating the primary monitor with Option "Primary" "bool" and generally following the documentation for xorg.conf files found here (I would post this config, but forgot to keep a copy of it for posting). This didn’t fix anything nor set any of the values, I believe either kscreen is still overriding, or xorg.conf is using an internal default.

I’m now back on the following configuration:

Section "Module"
    # Load modesetting module for the iGPU, which should show up in XrandR 1.4 as a provider.
    Load "modesetting"
EndSection

Section "Device"
    Identifier     "amdgpu"
    Driver         "amdgpu"
    BusID          "PCI:58:0:0"
    Option         "TearFree" "true"
EndSection

Side note: found that TearFree true fixed the stuttering for the external display (unfortunately can’t remember the site that I found this on), but now the internal display is choppy, perhaps something to do with PRIME and the copying of framebuffers, will need to look into this further / may create a separate topic.