[Solved] Framework 13 (AMD 7640U) + Razer Core X (RTX 4070) – eGPU not initializing / Code 45

Hi everyone,

first of all, thanks in advance for taking the time to read this and possibly share your experience. I’ve been troubleshooting my eGPU setup for quite a while now and would really appreciate any insights from those who have successfully run a Thunderbolt 3 eGPU on a Framework 13 AMD via USB4.

My setup:

  • Framework Laptop 13 (AMD Ryzen 7 7640U)

  • BIOS updated to latest version

  • USB4 ports (rear upper) used for eGPU connection

  • Razer Core X with ZOTAC RTX 4070 AMP AIRO

  • High‑spec USB4/TB4 cable (40 Gbps, 240 W PD)

  • Samsung G9 monitor via DisplayPort to GPU

What I’ve tried so far:

  • Physically reseated the GPU in the Core X (firm fit)

  • Removed all NVIDIA drivers using DDU in Safe Mode

  • Installed latest Framework drivers + BIOS update

  • Disabled the internal AMD iGPU in Device Manager for testing

  • Verified Core X has power and is switched on before connecting

  • Tested boot sequence: Core X on → cable to Framework → power on laptop

  • Checked Windows USB4 diagnostics → host routers detected, DP-IN active, but no PCIe link

  • Installed Thunderbolt Control Center → Core X not detected at all

  • GPU appears in Device Manager only when “Show hidden devices” is enabled → shows as RTX 4070 with Code 45 (“device not connected”)

  • Tried different USB4 ports (rear upper left/right)

  • RGB on GPU blinks (indicating power but no PCIe handshake)

  • Considered using Kensington SD5700T TB4 dock as a bridge, but not yet confirmed if PCIe passes through

Current issue:

  • RTX 4070 is not initializing — no PCIe tunneling over USB4, so Windows treats it as disconnected (Code 45)

  • No video output from the eGPU to the G9

  • Core X not recognized in Thunderbolt Control Center

Looking for:

  • Advice from anyone who has successfully run a Thunderbolt 3 eGPU (Core X) on a Framework 13 AMD via USB4

  • Tips on enabling PCIe tunneling or resolving TB3/TB4 handshake issues with AMD USB4 ports

I don’t want to sell the whole setup I just bought :frowning:
Thanks a lot for any help or ideas!

Hi everyone,
quick update after about 10 hours of trial & error.

It seems like it was the Expansion Card that was the lowpoint in the connection route.
When I plugged the TB in without the card, I got a picture on my Samsung G9.

However: It was not stable, it lasted 2 min and was gone. So I tried other things for several hours. But at the end I came back to this stage.

What made the huge difference: For a one-cable-setup on the Framework I bought a Kensington SD5700T docking station. So the Core X went with the same TB4 cable as before! into the Kensington, and from the Kensington another TB4 cable went to the FW 13. And now it works like a charm!

Sometimes the Core X is running and there is no error from the graphics card, but the driver is disabled in the device manager (under graphic cards).
Usually you would need to right click onto the card and search for hardware changes.

I wrote a PowerShell script for that with AI (thanks Copilot!!!). A click and it does the job mention above for me. I plug in the cable, start the script and it searches for the connection.

Here is the PowerShell script for those interested:
egpu-fix.ps1

Einfache Ein-Klick-Reparatur: NVIDIA/RTX-GPU finden und gezielt neu starten
$SuchbegriffGPU = “RTX|NVIDIA”$MaxVersuche    = 5$WarteSek       = 6
— Admin-Check mit automatischem Neustart —
$principal = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())if (-not $principal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {Write-Host “Starte Skript neu mit Administratorrechten…”Start-Process powershell -ArgumentList “-ExecutionPolicy Bypass -File "$PSCommandPath”" -Verb RunAsexit}
— Hilfsfunktion: GPU suchen —
function Find-Gpu {try {return Get-PnpDevice -Class Display -PresentOnly | Where-Object {$.FriendlyName -match $SuchbegriffGPU -and $.Status -eq “OK”}} catch {return $null}}
Write-Host “Starte eGPU-Fix. Bitte Dock + Core X vorher anstecken.”$gpu = Find-Gpu
for ($i = 1; (-not $gpu) -and ($i -le $MaxVersuche); $i++) {Write-Host (“Versuch {0}: pnputil /scan-devices ausfuehren…” -f $i)Start-Process -FilePath “pnputil.exe” -ArgumentList “/scan-devices” -NoNewWindow -WaitStart-Sleep -Seconds $WarteSek$gpu = Find-Gpu}
if (-not $gpu) {Write-Host “GPU wurde nicht gefunden. Bitte Verbindung pruefen und erneut versuchen.” -ForegroundColor Redexit 2}
Falls mehrere Einträge, den ersten “OK”-Status nehmen
$target = $gpu | Select-Object -First 1$id = $target.InstanceId
Write-Host “GPU gefunden: $($target.FriendlyName)”Write-Host “Geraet wird neu gestartet: $id”
Gerät gezielt neu starten (wie Deaktivieren/Aktivieren)
Start-Process -FilePath “pnputil.exe” -ArgumentList “/restart-device”,“$id” -NoNewWindow -Wait
Nachprüfen
Start-Sleep -Seconds $WarteSek$check = Find-Gpuif ($check) {Write-Host “GPU ist aktiv: $($check[0].FriendlyName)” -ForegroundColor GreenWrite-Host “Falls noch kein Bild: Anzeigeeinstellungen pruefen (Erweitern/ Nur auf 2 anzeigen).”exit 0} else {Write-Host “GPU nach Neustart nicht aktiv. Bitte erneut versuchen oder System neu starten.” -ForegroundColor Yellowexit 3}
2 Likes