外接4060掉链:原始排查记录(2026-10-04 上午版·历史存档)

【历史存档】本笔记为 2026-10-04 上午版本的原文,逐字保留,供复盘对照;当前结论请看父笔记。

外接 ASUS RTX 4060(OCuLink 显卡坞)在运行中会突然从 PCIe 总线消失,导致全屏黑;拔掉显卡坞的 DP 线把显示器改接核显后画面恢复,但外接卡要重启才会重新枚举。本文只记录外接卡自身这个问题(核显被连带打崩成 Code 43 是另一个独立问题,见文末关联)。

🔴 现象

  • 外接卡可能开机后几分钟到十几分钟内任意时刻无前兆掉链,规律性不定
  • 掉链后屏幕全黑(当时显示输出全在该卡上),显卡风扇仍在转
  • 驱动自己给出的判词:GPU is lost. Reboot the system to recover this GPU
  • 卡先变 CM_PROB_FAILED_POST_START(Code 43),随后从总线移除(CM_PROB_PHANTOM);硬件重扫扫不回来,必须重启
  • 核显会被连带打崩成 Code 43,需要用 pnputil /restart-device 单独救(见另一个笔记)

📅 死亡现场(精确到秒,2026-10-04 14:33 那次)

时刻事件
14:22:45开机后卡枚举成功(DEVPKEY_Device_LastArrivalDate)
14:33:43.437最后一条完全正常的遥测(50°C / 占用 11% / PCIe gen1 x4)
14:33:44.485死亡瞬间 —— 第一条 GPU is lost
14:33:47.552死亡后 3 秒,Win32k Id=263 开始刷屏
14:34:00.405驱动正式报 GPU is lost. Reboot the system to recover this GPU
14:34:27.364最后一次能采到(之后彻底失联)
14:34:31卡从 PCIe 总线移除(DEVPKEY_Device_LastRemovalDate)
—转储文件 WATCHDOG-20261004-1433.dmp(1,236,451 字节)

存活时长不定:同一天三次死亡,卡分别活了约 2 分钟、12 分 46 秒、更短 —— 不是固定倒计时,是随机间歇。

📊 临死前遥测(决定性负结果)

用 nvidia-smi 每秒轮询采到的临死前 2 分钟数据,全部正常,无任何前兆:

指标临死前实测值判读
温度49 → 50°C 缓升,无尖峰排除过热
核心 / 显存频率210 MHz / 405 MHz(空闲档)无异常拉升
GPU 占用8 ~ 21%与负载无关
显存占用865 ~ 877 MiB 平稳无泄漏无暴涨
风扇转速0%温度确实低
PCIe 代数/宽度gen1 / x4 全程不变无降级
PCIe 重传计数0链路未报错

⇒ 卡是在「各项指标全部正常」的状态下,下一秒突然失去响应。这种无前兆的瞬间失联不是渐进劣化的形态。

✅ 已确认的硬件/软件环境事实

项值
设备实例PCI\VEN_10DE&DEV_2882&SUBSYS_89361043&REV_A1\4&25C6DA53&0&0009
父节点PCIe 根端口 PCI\VEN_1022&DEV_14ED\3&11583659&0&09(根端口状态一直 OK)
链路能力gen.max=4 / width.max=8;实测空闲降为 gen1 / x4(NVIDIA 正常省电行为,不是异常)
连接方式原生 PCIe 外接(OCuLink 类),不是 USB4 / 雷电隧道
驱动595.79 / nv_dispsi.inf / oem17.inf,安装日期 2026-04-13 15:37
驱动包签名nv_dispsi.inf 与 NV_DISP.CAT 均为 Valid,签发者 CN=Microsoft Windows Hardware Compatibility Publisher
VBIOS95.07.31.80.02
功耗墙default 115 W / max 138 W(与公版 4060 TGP 一致,未见刷改痕迹)

❌ 已排除的可能性(逐项实测,每行独立)

假设实测证据结论
过热临死前 50°C、无坡度、风扇 0%❌
GPU 负载压力死亡时占用仅 8~21%,当时只开聊天软件与浏览器❌
整机掉电 / 电源切换死亡那一秒 Kernel-Power 无任何事件;今天的 105(电源切换)只出现在 11:07 / 11:08❌
PCIe 链路信号劣化重传计数 0,gen/width 全程不变❌
热降频 / 功耗墙HW/SW Slowdown 全部 Not Active,累计降频仅 0.65 秒❌
驱动/补丁失效INF 与 CAT 签名 Valid,驱动版本未变;且故障形态是「卡从总线消失」,不是补丁能管的「驱动拒绝认卡」❌
关闭 ReBAR 能解决关掉后照样复发(关 ReBAR 只治好了另一症状:开机时微端口启动失败 0xC000009A)❌
某个应用/软件触发死亡前后无 WER 报告、无 XID 错误、无应用错误(Application 日志)❌
Win32k 263 是原因它在死亡之后 3 秒才出现❌(是后果)
硬件重扫能找回卡pnputil /scan-devices 后仍为 CM_PROB_PHANTOM❌

✅ 死亡后的连锁反应(实测顺序)

步骤证据
卡引擎瞬间失联nvidia-smi 报 GPU is lost;WATCHDOG 转储头解出 bugcheck 0x141 VIDEO_ENGINE_TIMEOUT_DETECTED(部分次为 0x117 TDR)
桌面合成器死掉Dwminit:The Desktop Window Manager process has exited. (Process exit code: 0xe0464645, Restart count: 8, Primary display device ID: NVIDIA GeForce RTX 4060)
dwm.exe 连续崩溃Application Error Id=1000:40 秒内连崩 8 次(每 5.5 秒一次)
屏幕全黑DWM 的主显示设备就是那块死掉的卡,反复重启均失败
卡进入故障态CM_PROB_FAILED_POST_START(Code 43)→ CM_PROB_PHANTOM
指针设备失去关联Win32k Id=263 刷屏;开机基线只有 Id=267,出现 263 即代表显示器关联断了

🔬 证据从哪里来(可复用的取证方法)

解 WATCHDOG 转储的 bugcheck(不需要 WinDbg)

LiveKernelReports 的 .dmp 是标准 DUMP_HEADER64,头部明文,用 Python struct 直接读:

import struct, glob, os
for f in sorted(glob.glob('C:/Windows/LiveKernelReports/WATCHDOG/*.dmp')):
    d = open(f, 'rb').read()
    bc = struct.unpack_from('<I', d, 0x38)[0] # BugCheckCode
    p1,p2,p3,p4 = struct.unpack_from('<QQQQ', d, 0x40)
    print(os.path.basename(f), hex(bc), [hex(x) for x in (p1,p2,p3,p4)])

对照表:0x116 VIDEO_TDR_FAILURE、0x117 VIDEO_TDR_TIMEOUT_DETECTED、0x141 VIDEO_ENGINE_TIMEOUT_DETECTED。

查设备何时到位/何时消失(精确到秒)

Get-PnpDeviceProperty -InstanceId '<设备实例ID>' -KeyName DEVPKEY_Device_LastArrivalDate
Get-PnpDeviceProperty -InstanceId '<设备实例ID>' -KeyName DEVPKEY_Device_LastRemovalDate
Get-PnpDeviceProperty -InstanceId '<设备实例ID>' -KeyName DEVPKEY_Device_ProblemCode

轮询遥测等它死(脚本已就绪)

egpu-trace.ps1(位于 Hermes profile 的 scratch 目录)每秒采一次 nvidia-smi 遥测,设备失联即停并保留最后一条好数据。要点:

  • 用 nvidia-smi --query-gpu=... --format=csv,noheader,nounits 轮询,不要用 Get-PnpDeviceProperty 轮询(CIM/WMI 极慢,实测单次 5~6 秒)
  • 字段名要从富到简降级验证:nvidia-smi 只要有一个字段名非法就整条查询失败,会被误判成「设备掉了」
  • 失联判定不能只看退出码:设备丢失时 nvidia-smi 可能仍返回 0 并给出文本 Unable to determine the device handle ... GPU is lost,必须同时匹配该文本

🎯 剩余可能性与判决实验

「无前兆、与负载/温度/电源/链路全部无关、存活时长不定」—— 只剩三个候选:

编号可能性说明
A卡本身间歇故障GPU 核心 / 显存 / 板载供电模块(VRM)间歇失效
B显卡坞供电瞬时中断坞子电源(PSU)老化、瞬态压降、接触不良
COCuLink 链路瞬时失效连接器接触面、坞子侧插座、M.2 转接板

实验一(判决性):把卡插到普通台式机 PCIe 槽

结果结论
台式机上照样掉A:卡本身在坏 → 送修或换卡
台式机上稳如泰山B 或 C:问题在显卡坞侧

因为现在故障已高度可复现(十几分钟内必发),这个实验成本很低。

实验二(不用拆机):限制功耗/频率看存活时长变化

nvidia-smi -pl <降低的功耗上限>
nvidia-smi -lgc <核心频率上限>

逻辑:若限制后存活时间显著变长甚至不再死 → 强烈指向供电侧问题(B 或 A 的 VRM);若照旧随机死 → 更像瞬时接触/电气事件(C)。可逆(重启即还原)。

实验三(优先级最低):隔离显示负载

不接显示器、只让卡挂着看是否照死。从今天数据看(占用仅 8~21%、温度 50°C)几乎可确定与显示负载无关。

📌 复发史

日期记录到的事件
2025-04-20DxgKrnl-Admin 457(微端口启动设备失败)
2026-03-26DxgKrnl-Admin 456 ×2
2026-03-30DxgKrnl-Admin 457
2026-04-13DxgKrnl-Admin 457
2026-10-04共 7 个 WATCHDOG 转储:09:36 / 09:49 / 10:58 / 10:59 / 12:57 / 13:31 / 14:33(其中 14:33 那次采到了完整临死遥测)

⚠️ 注意事项

  • 不要把 /restart-device 用在这块卡上。实测:对已经 Code 43 的外接卡执行 pnputil /restart-device,结果是 Code 43 → Code 31 (CM_PROB_FAILED_ADD) → 硬件重扫后 CM_PROB_PHANTOM(直接掉出总线)。该命令只适合用在被连带打崩的核显上。
  • 掉链后卡已经不在总线上,任何软件手段都救不回来(重扫不行),必须重启。
  • OCuLink 不支持热插拔,插拔必须关机进行。

🔗 关联

本文只针对外接卡自身。核显被连带打崩成 Code 43 是另一个独立问题,见同目录下的《显卡:外接显卡掉链后核显报Code43的诊断与恢复》。