I’m experiencing the same CUDA hard-lock issue reported in several other threads (e.g. GitHub #974, #979), but on a different host/enclosure combination, which I hope helps narrow down the root cause.
• GPU is detected by the system and visible via boltctl
• nvidia-smi reports correct model, VRAM, temperature, and power at idle
• Driver loads without errors
What fails
• Any CUDA operation (Ollama inference, PyTorch, even python3 -c "import torch; torch.zeros(1, device='cuda')") causes an immediate system hard-lock
• No kernel panic, no Xid error, no SysRq response — only a power cycle recovers the system
• Kernel log before the lock shows: kfspWaitForResponse: FSP command timed out
Workarounds tried
• NVreg_EnableGpuFirmware=0 — ignored on open kernel modules (confirmed by NVIDIA staff)
• Blacklisting nvidia_drm + nvidia_modeset (compute-only)
• Disabling ASPM, enabling native PCIe ports, disabling Resizable BAR
• Early-loading Thunderbolt module in initramfs
• Multiple driver versions tested
Observation
The pattern appears consistent: TB4 host + Blackwell eGPU = CUDA hard-lock. TB5 + Blackwell reportedly works in some configurations, suggesting the issue may be related to Thunderbolt PCIe tunneling bandwidth or latency rather than the GPU itself.
Request
Is NVIDIA aware of this issue with Blackwell + Thunderbolt on Linux?
Is there an internal tracking bug or ETA for a fix?
Are there any additional debug flags that could help isolate the GSP communication failure over Thunderbolt?
Happy to provide nvidia-bug-report.log.gz or any additional diagnostics.
Blackwell generally rarely works with TB3, TB4 or USB4v1 (on any OS), probably due to its intolerance for signal latency. Among USB-C based adapters, it only works somewhat reliably with TB5, which has its own problems on Linux.
Nvidia shows almost zero interest in fixing standard desktop Linux bugs, so I wouldn’t count on any eGPU related fixes in any foreseeable future.
@guoxh, I’ve noticed on Github, that you’ve managed to make it work using similar workarounds like in case of TB5. Would you care to create a build on egpu.io? This would be an important data point for others. Thanks!
modprobe.d — blacklist nvidia modules and use install nvidia /bin/false to prevent early auto-load
udev rule — disable RTX 5060 Ti HDMI audio function to prevent it from claiming PCIe bandwidth
Step-by-step with all file contents is in the jciolek/aorus-5090-egpu repo ( GitHub - jciolek/aorus-5090-egpu · GitHub ), adapted for RTX 5060 Ti Device ID 0x2d04. Happy to cross-post to egpu.io.
Note: This is an unverified conceptual translation of the AMD fix adapted (by AI) for Intel topology. Not yet validated on physical Intel hardware. Testing and feedback are welcome.
This guide and the provided scripts are experimental, community-developed workarounds intended for advanced users and technical testing only.
Modifying low-level PCIe configuration registers (setpci) and altering module loading behavior can lead to kernel lockups, boot loops, or unbootable systems.
DO NOT USE THIS ON YOUR DAILY DRIVER / PRODUCTION MACHINE.
Always test these scripts on a separate test installation, dedicated testing partition, or expendable test drive with full backups in place.
The author assumes no responsibility for hardware instability, data loss, or system corruption.
System Compatibility
✅ Supported (Mutable / Traditional Linux Distributions):
Arch Linux / Arch-based:CachyOS(Recommended), Arch Linux, EndeavourOS, Manjaro (mkinitcpio).
bolt (provides boltctl and boltd for Thunderbolt authorization)
nvidia proprietary or open kernel modules (nvidia-open-dkms / nvidia-dkms)
Step 1: System Pre-Configuration (RUN ONCE WITHOUT eGPU CONNECTED)
Filename:setup-system-intel.sh
When to run:ONCE, BEFORE PLUGGING IN THE eGPU.
What it does:
Installs driver interceptors in /etc/modprobe.d/ (install nvidia /bin/false) to prevent the kernel/udev from auto-loading nvidia.ko prematurely during hotplug.
Configures persistent ASPM performance policy.
Enables boltd for Thunderbolt authentication.
Regenerates initramfs so early boot stages respect the driver locks.
Code: setup-system-intel.sh
Bash
#!/usr/bin/env bash
# ==============================================================================
# Step 1: Host System Pre-Configuration for Intel Thunderbolt eGPU
# IMPORTANT: Run this script ONCE WITHOUT the eGPU plugged in.
# ==============================================================================
set -euo pipefail
if [ "$EUID" -ne 0 ]; then
echo "[-] Error: This script must be run as root: sudo $0" >&2
exit 1
fi
echo "========================================================"
echo " Intel eGPU Host System Pre-Configuration Setup "
echo "========================================================"
# 1. Lock driver auto-loading in modprobe.d
echo "[+] 1/4: Installing driver locks into /etc/modprobe.d/..."
cat << 'EOF' > /etc/modprobe.d/99-egpu-intel-lock.conf
# Block automatic loading of open/proprietary NVIDIA drivers
blacklist nouveau
blacklist nvidia
blacklist nvidia_drm
blacklist nvidia_modeset
blacklist nvidia_uvm
options nouveau modeset=0
options thunderbolt host_reset=0
# Intercept module requests to prevent race condition during hotplug
install nvidia /bin/false
install nvidia-drm /bin/false
install nvidia-modeset /bin/false
install nvidia-uvm /bin/false
EOF
# 2. Configure ASPM performance policy persistence
echo "[+] 2/4: Configuring PCIe ASPM defaults..."
cat << 'EOF' > /etc/tmpfiles.d/pcie-aspm-performance.conf
w- /sys/module/pcie_aspm/parameters/policy - - - - performance
EOF
# 3. Enable boltd for Thunderbolt management
echo "[+] 3/4: Ensuring Thunderbolt daemon (boltd) is active..."
if command -v boltctl >/dev/null 2>&1; then
systemctl enable --now bolt.service 2>/dev/null || true
fi
# 4. Regenerate initramfs
echo "[+] 4/4: Updating initramfs to prevent driver embedding..."
if command -v mkinitcpio >/dev/null 2>&1; then
mkinitcpio -P
elif command -v dracut >/dev/null 2>&1; then
dracut -f --regenerate-all
elif command -v update-initramfs >/dev/null 2>&1; then
update-initramfs -u -k all
fi
echo "========================================================"
echo "[✓] Pre-configuration complete. Reboot your machine once."
echo "========================================================"
Step 2: Runtime Initialization (RUN AFTER CONNECTING eGPU)
Filename:egpu-intel-attach.sh
When to run:AFTER CONNECTING THE THUNDERBOLT CABLE.
What it does:
Authorizes Thunderbolt link via boltctl.
Rescans PCIe bus.
Traverses the entire upstream bridge chain up to the Intel Root Port.
Disables ASPM (CAP_EXP+10), clears L1 Substates (ECAP_1E), and locks link speed with Hardware Autonomous Speed Disable (HASD Bit 5 in LnkCtl2).
Performs physical Link Retraining on all parent bridges.