Asus ROG Flow Z13 幻X(Strix Halo)透過 USB4 外接 Gigabyte 5090 Ai Box eGPU,Linux 下 CUDA 運算崩潰— 完整除錯紀錄與技術總結
-
Asus ROG Flow Z13(Strix Halo)透過 USB4 外接 RTX 5090 eGPU,Linux 下 CUDA 運算必崩
️ TL;DR(先看這裡)- Blackwell(RTX 5090)+ TB4/USB4 eGPU + Linux = 任何 CUDA 運算都會讓整機瞬間斷電。
- 這是 NVIDIA GSP 韌體 RPC 心跳在隧道延遲下逾時,NVIDIA 尚未修復。
- 換驅動版本無效。同一組硬體在 Windows 下完全正常。
確認方式只要 30 秒: 接上 → 載入驅動 → 跑任何 CUDA kernel。活著 = 修好了,斷電 = 還沒。
在那之前,雙開機用 Windows 是完全合理的答案,不是妥協。
環境
項目 規格 主機 Asus ROG Flow Z13 (GZ302EA) SoC AMD Ryzen AI MAX+ 395 (Strix Halo) USB4 埠 USB4 40Gbps(PCIe 隧道封裝) eGPU GIGABYTE AORUS RTX 5090 AI BOX (TB5) OS Ubuntu 26.04 LTS, kernel 7.0.0-14
症狀
GPU 正常初始化、
nvidia-smi閒置時完全正常、模型能載入 VRAM。
但任何 CUDA 運算都會讓整機瞬間斷電 —— 無 kernel panic、無 Xid、無 AER、SysRq 無反應,journald 連一行都來不及寫。
決定性的二分測試
我寫了一支 CUDA 程式把「PCIe 傳輸」與「GPU 運算」分開:
測試 結果 PCIe 傳輸 150 GB 來回(64 MiB → 4 GiB 五級)
全數存活,實測 0.78 GB/sGPU 運算核心
立即整機斷電,無一次例外
傳輸沒問題,運算必死。 這一刀切下去,後面所有的猜測都可以停止。
已排除的假設(每項都有實測數據)
假設 排除依據 記憶體不足 / OOM 崩潰時 available 120 GiB 與 iGPU 模型共存衝突 主模型未執行仍崩潰 amdgpu SVM 分頁風暴 相關 kernel worker 計數全程 0 eGPU 盒經 USB4 反向供電 主機使用自己的充電器 顯卡功耗尖峰 崩潰時僅 85W(上限 575W) PCIe 錯誤 / 掉線 無 AER、無 Xid、無 Link Down 過熱 GPU 43°C DRAM-less SSD (HMB) 零 NVMe 錯誤
真正的原因
這是 NVIDIA 的已知且未修復問題:
核心錯誤:
GPU1 _kgspRpcRecvPoll: LibOS heartbeat timed out kgspInitRm_IMPL: SET_GUEST_SYSTEM_INFO failedBlackwell 把大量工作交給 GPU 上的 GSP 韌體,主機與 GSP 之間靠 RPC 溝通並有心跳逾時。
透過 TB4/USB4 隧道時延遲過高 → 心跳逾時 → 硬鎖。上游歸納的模式:TB5 主機正常,TB4/USB4 主機必崩。
Z13 的埠是 USB4 40Gbps,AORUS 盒是 TB5 —— 協商後降為 USB4,正中此模式。
這也解釋了為什麼同一組硬體在 Windows 下可以正常推論:驅動架構不同,沒有這條 RPC 路徑。
試過但無效的所有方法
嘗試 結果 nvidia-driver-595-open崩潰 nvidia-driver-595(專有版)
無法使用 —— GB202 強制要求 open kernel modulesnvidia-driver-610-open(論壇唯一有成功先例)崩潰 ×2 pcie_ports=native pcie_aspm=off pcie_port_pm=off無效 pci=assign-busses,realloc,hpmmiosize=...
弄壞了 iGPU換 USB4 埠 PCIe 鏈路改善,仍崩潰
️ 坑:pci=assign-busses會重新編號整台機器的 PCI 匯流排從 eGPU 論壇抄了一組核心參數一次全加,結果:
iGPU 位址 c4:00.0 → 06:00.0 amdgpu 載入了但綁不上去 rocminfo 找不到 gfx1151 GTT 消失
在一台整個 LLM 部署都靠 iGPU 的機器上,我把 iGPU 弄壞了。
教訓:PCIe 參數要一次只加一個,每次都驗證既有裝置仍正常。
附帶發現
USB4 埠的選擇會影響 PCIe 鏈路
Z13 有兩個 USB4 埠,對應不同橋接器,鏈路品質差很多:
埠 下游鏈路 00:01.22.5 GT/s (Gen1) 00:01.116.0 GT/s x4 (Gen4)
同一台機器、同一條線、同一個盒子,換個孔差 6 倍。
如果你的 eGPU 慢得莫名其妙,先試另一個埠。每次硬鎖後,eGPU 盒必須實體斷電
單純重開機救不回來。未斷電就重開時:
nvidia-smi → 讀得到基本資訊 cudaSetDevice() → CUDA-capable device(s) is/are busy or unavailable → 而且一試就再次弄掛驅動
️ 驅動卡死後不要重複執行 nvidia-smi—— 每次都會多一個 D state 且kill -9無效的進程,nvidia_uvm引用計數只增不減。
給後來者的建議如果你想用 Strix Halo + USB4 + RTX 5090:
- Windows 側:
正常可用,沒問題。 - Linux 側:
目前(2026-08)任何 CUDA 運算必崩,NVIDIA 尚未修復。 - 確認方式只要 30 秒: 接上 → 載入驅動 → 跑任何 CUDA kernel。活著 = 修好了,斷電 = 還沒。
- 在那之前,雙開機用 Windows 是完全合理的答案,不是妥協。
如果你要在 Z13 上玩 eGPU(不管用不用 AI):
- 兩個 USB4 埠鏈路品質差 6 倍,務必接
00:01.1那側(16 GT/s x4)。 - PCIe 核心參數要一次只加一個,不要一次全加。
- 每次硬鎖後,實體斷電 eGPU 盒再重開。
- 驅動卡死後不要重複執行
nvidia-smi。
-
T terry 于 将此主题固定
-
系统 于 取消固定此主题
