5.5 KiB
eGPU Gaming Setup – OneXplayer Super X
AMD Radeon RX 9060 XT (Navi 44) über CYID HL7 Thunderbolt 3 Dock an USB4
Hardware-Topologie
[Super X USB4] ──TB3── [CYID HL7 Dock (JHL7440)] ──PCIe 3.0 x4── [RX 9060 XT]
| Komponente | PCI-ID | Adresse |
|---|---|---|
| USB4 Root Port | 1022:150a |
00:01.2 |
| JHL7440 Upstream | 8086:15ef |
61:00.0 |
| JHL7440 Downstream | 8086:15ef |
62:01/02/04.0 |
| Navi 10 XL Upstream | 1002:1478 |
63:00.0 |
| Navi 10 XL Downstream | 1002:1479 |
64:00.0 |
| RX 9060 XT | 1002:7590 |
65:00.0 |
| iGPU (Strix Halo) | 1002:1586 |
c4:00.0 |
- DRI Nodes:
card0= eGPU,card1= iGPU - VRAM: eGPU 16 GB GDDR6, iGPU 64 GB shared
- TB3-Link: 40 Gb/s (2 Lanes × 20 Gb/s)
- PCIe-Tunnel: 2.5 GT/s ×1 am Root Port (physikalisches TB3-Limit), intern 32 GT/s ×16 zur GPU
Quick-Status
# Thunderbolt Auth
boltctl list
cat /sys/bus/thunderbolt/devices/1-2/authorized # 1 = verbunden
# GPU prüfen
lspci -nn | grep 7590 # RX 9060 XT
ls /dev/dri/card0 # eGPU (card1 = iGPU)
# PCIe Link
cat /sys/bus/pci/devices/0000:65:00.0/current_link_speed
cat /sys/bus/pci/devices/0000:65:00.0/current_link_width
# Treiber
sudo dmesg | grep "amdgpu 0000:65:00.0"
Auto-Connect mit Bolt
Das CYID HL7 Dock ist via boltctl enroll --policy iommu dauerhaft gespeichert.
Security-Level user → Bolt authorisiert bekannte Devices automatisch, kein manuelles OK nötig.
# Device neu enrollen (falls Dock getauscht wird)
boltctl list # UUID finden
boltctl enroll --policy iommu <uuid>
Installation
1. Modul-Parameter
Datei: /etc/modprobe.d/amdgpu-egpu.conf
options amdgpu ppfeaturemask=0xfff7bfff # OverDrive / PowerPlay Features
options amdgpu gpu_recovery=1 # GPU Recovery statt Kernel-Panic
options amdgpu runpm=0 # Runtime-PM aus (eGPU bleibt wach)
options amdgpu dc=1 # Display Core
options amdgpu sched_policy=1 # Priority-Scheduler (Gaming)
options amdgpu mes=1 # Micro Engine Scheduler
Nach Änderung: Reboot nötig (amdgpu ist built-in, nicht entladbar).
2. Performance-Script
Datei: /usr/local/bin/superx-egpu-perf.sh
Setzt beim eGPU-Connect:
power_dpm_force_performance_level→highpower/control→on(Runtime-PM deaktiviert)- PCIe ASPM → aus
power_dpm_state→performance
3. udev Hotplug-Regel
Datei: /etc/udev/rules.d/99-egpu-superx.rules
Triggert superx-egpu-perf.sh add wenn die RX 9060 XT (1002:7590) am PCI-Bus erscheint.
sudo udevadm control --reload-rules
sudo udevadm trigger
4. Alle Dateien auf einmal
sudo cp configs/amdgpu-egpu.conf /etc/modprobe.d/
sudo cp tools/superx-egpu-perf.sh /usr/local/bin/
sudo chmod +x /usr/local/bin/superx-egpu-perf.sh
sudo cp udev/99-egpu-superx.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
# → Reboot
Gaming – eGPU auswählen
Automatisch (empfohlen)
Der Wrapper tools/superx-game-wrapper.sh erkennt live ob die eGPU verbunden ist und setzt die Umgebungsvariablen nur dann. Einmal eintragen, nie wieder anfassen — ohne eGPU läuft alles normal auf der iGPU, mit eGPU automatisch drauf gerendert.
In Steam → Properties → Launch Options für jedes Spiel:
/home/nepharius/SuperX-goes-Arch/tools/superx-game-wrapper.sh %command%
Das Script prüft /dev/dri/card0 und setzt DRI_PRIME=1 + VK_ICD_FILENAMES nur wenn die RX 9060 XT da ist.
Manuell (falls du es direkt willst)
Die eGPU ist DRI_PRIME=1 (weil sie als erstes initialisiert wird = card0).
DRI_PRIME=1 VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/radeon_icd.x86_64.json %command%
Oder einzeln:
DRI_PRIME=1 %command% # OpenGL
VK_ICD_FILENAMES=… %command% # Vulkan explizit
Das musst du aber von Hand rausnehmen wenn die eGPU nicht angesteckt ist — deswegen lieber den Wrapper benutzen.
Manuelle Performance-Steuerung
# DPM-Level (benötigt root)
echo "high" | sudo tee /sys/class/drm/card0/device/power_dpm_force_performance_level
echo "low" | sudo tee /sys/class/drm/card0/device/power_dpm_force_performance_level
echo "auto" | sudo tee /sys/class/drm/card0/device/power_dpm_force_performance_level
# Power State
echo "performance" | sudo tee /sys/class/drm/card0/device/power_dpm_state
# VRAM
cat /sys/class/drm/card0/device/mem_info_vram_total # 17095983104 = ~16 GB
Monitoring
# GPU-Auslastung & Takt
watch -n1 cat /sys/class/drm/card0/device/gpu_busy_percent
watch -n1 cat /sys/class/drm/card0/device/pp_dpm_sclk
# Temperaturen
sensors | grep -A5 amdgpu
# PCIe-Bandbreite live
sudo dmesg -w | grep "available PCIe bandwidth"
Pitfalls
| Problem | Ursache | Lösung |
|---|---|---|
DROM CRC32 mismatch im dmesg |
CYID Dock-Firmware | Harmlos, ignorieren |
| eGPU wird im Idle disconnected | Runtime-PM aktiv | runpm=0 in modprobe.d |
Failed to setup vendor infoframe |
HDMI/DP am Dock ohne Monitor | Harmlos, ignorieren |
| eGPU nicht in lspci nach Connect | Device nicht authorisiert | boltctl list prüfen, authorized=1? |
| System-Freeze bei Hot-Unplug | GPU noch in Benutzung | Vorher alle GPU-Prozesse beenden |