DMA 报错大全:每条错误信息是什么意思
汇总 DMA 环境会输出的各类报错,逐条给出原因和解决方法。按层分组:板卡与 USB 链路、初始化、输入设备、显示链路。
简短回答
把 DMA 报错原文对应到它所在的层,就能找到真正的原因和代价最小的解决办法。大多数报错逃不出四种原因:USB 口插错、驱动没装、没有内存映射(MMAP),或者游戏主机 BIOS 里开着虚拟化。
本页内容10
如何找到你的报错
直接从控制台窗口复制报错文本,不要对着截图手抄,然后在下面的表格里搜索。表格按层分组,层比措辞更重要,因为同样是一根坏线,不同产品打印出来的句子可能完全不同。如果列表里找不到和你一字不差的报错,就找症状停在流程同一步的那一行。那一步就是软件停下来的地方,从那里开始查。
DMA 环境的四个层级(按先后顺序)
报错只可能来自软件已经走到的那一层。只要初始化阶段输出了任何内容,就说明板卡和 USB 层已经正常工作,第一张表里的内容就都与你无关。
- 1. 板卡与 USB
- 有没有卡、是否通电、是否被枚举、绑定的驱动是否正确
- 2. 初始化
- 读取程序能否连接、能否找到内存布局、能否定位 DTB、能否找到游戏进程
- 3. 输入设备
- 盒子在对应端口上是否有响应,游戏主机是否把它识别为鼠标
- 4. 显示链路
- 融合器或采集链路有没有画面传过来,叠加层有没有落到画面上
第 1 层:板卡与 USB 链路报错
这些报错出现时,软件对游戏主机上的 Windows 还一无所知。在这一层,原因几乎从来不是卡本身,而是端口、线材、驱动,或者游戏主机根本没开机。
| 现象 | 可能原因 | 解决方法 |
|---|---|---|
| DEVICE: FPGA: ERROR: Unable to connect to USB/FT601 device [0,v0.0,0000] | 与数据桥接芯片之间没有可用的 USB 连接,那串零就是证据:没有从卡上读回任何数据。常见原因是线插在了刷写口、用的是只能充电的线、游戏主机没开机,或者没装 FTDI 驱动。 | 把线换到卡的 DATA 口,用支持数据传输的 USB 3 线插到机箱后置的 USB 3 口。先开游戏主机,再安装 FTDI D3XX 驱动,并确认设备管理器里出现了该设备。 |
| DEVICE: FPGA: ERROR: Unable to load 'FTD3XX.dll' or 'leechcore_driver.dll' [0,v0.0,0000] | FTDI 库文件不在可执行文件所在的文件夹里,这是缺文件,不是硬件故障。 | 把 FTD3XX.dll 放到软件所在的文件夹里,用订单附带的那个版本。如果你的订单里没有这个文件,就重新安装 D3XX 驱动包。 |
| DEVICE: FPGA: ERROR: Unable to connect to FPGA device | 这是同一个故障,只是某些版本输出的是简短写法:要么与卡之间没有 USB 连接,要么这张卡从来没有刷写成功过。 | 先检查端口、线材和驱动。如果这张卡刷完固件后就从来没正常工作过,那就回到刷写那一步,重新读取 DNA ID,别急着怪读取程序。 |
| DEVICE: FPGA: ERROR: Unable to retrieve required Device PCIe ID [4,v4.12,0000] | USB 这一侧没问题,因为读回了版本号,但 PCIe 这一侧始终没起来。可能是卡没插到位、游戏主机关机或处于睡眠状态、插槽坏了,或者固件没有向主机呈现出 PCIe 设备。 | 关闭游戏主机电源,重新插卡直到卡扣扣紧,拧紧挡板螺丝,并换一个插槽试试。然后先冷启动游戏主机,再启动副机(第二台电脑)。 |
| Device not found | 这是外层程序对同一问题给出的笼统提示:软件没有枚举到任何卡,副机上也没有任何驱动绑定到 FT601 桥接芯片。 | 打开设备管理器,在“通用串行总线控制器”(Universal Serial Bus controllers)下面找 FT601 桥接设备。如果找不到,问题出在端口或线材;如果带黄色感叹号,问题出在驱动。 |
| Failed to connect to memory acquisition device | 这是启动器在替 leechcore 报告第 1 层故障。原因相同,只是措辞离真正的报错又隔了一层。 | 把两台机器彻底关机,重新插卡,USB 线两头都拔下重插。先开游戏主机,然后依次检查端口、线材和驱动。 |
| Unknown USB Device (Device Descriptor Request Failed) | 副机上的 Windows 读不到桥接芯片的描述符,说明链路信号余量不足、线材有问题,或者中间接了集线器。 | 拆掉所有集线器、扩展坞和延长线,用一根短数据线直接插到后置 USB 3 口。如果换了两个口、两根线还是报这个,就要怀疑卡上的 USB 接口了。 |
| 卡能正常工作几分钟,然后设备就消失了 | 常见原因是 USB 选择性暂停、控制器被共用、线材质量勉强,或者卡在封闭机箱里发热。 | 什么都不要重刷。去看掉线诊断指南,因为掉线发生的时机正是区分这四种原因的关键。 |
第 2 层:DTB、基址、MMAP 与进程报错
能走到这一层,说明卡是活的,USB 链路也正常。这张表里的每一条报错,都意味着读取程序已经能读到内存,却无法解析它。解决办法几乎总是内存映射(MMAP),或者游戏主机上的某项 BIOS 设置。
| 现象 | 可能原因 | 解决方法 |
|---|---|---|
| vmmWinInit_TryInitialize: Initialization Failed. Unable to locate valid DTB. #2 | 读取程序读到了内存,但没在里面找到 Windows 内核的 Directory Table Base(页目录基址)。通常是没有内存映射,或者游戏主机上还开着 VT-d/VT-x 或 SVM/IOMMU,导致读取程序拿到的是经过地址转换的内存视图。 | 生成内存映射并加载,在游戏主机 BIOS 里关闭虚拟化,然后两台机器都冷启动。完整的排查顺序见 DTB 报错指南。 |
| VmmProc: Unable to auto-identify operating system for PROC file system mount. Specify PageDirectoryBase (DTB/CR3) in -dtb option if value is known. | 这是同一个故障,只是在下一行又打印了一次:工具在这里表示不再自动猜测,并给出手动指定的办法。 | 先解决根本原因:检查内存映射、虚拟化和冷启动。手动传入 -dtb 只是诊断手段,不是修复,因为这个值每次开机都会变。 |
| MOUNT: INFO: PROC file system not mounted. | 这是结果,不是原因:这一行之前初始化就已经失败了,所以没有东西可以挂载。 | 往上翻,真正的报错是这一行之前打印的 DTB 或设备相关的那一行。 |
| Failed to initialize DMA | 启动器根本没能启动读取程序。要么第 1 层始终没通过,要么它要加载的内存映射文件不存在或格式有误。 | 先确认卡能被识别,再检查映射文件是否在软件预期的路径下。这个映射必须是在最近一次硬件变动之后,在这台机器上、用当前固件生成的。 |
| Failed to find base address | 读取程序已连接并找到了内核,但无法解析目标进程的模块基址。典型原因是内存映射缺失或过期、切屏(alt-tab)或游戏更新后进程句柄失效,或者读取链路不稳定。 | 把两台机器彻底关机后重新开机,并重新生成内存映射。如果只在游戏更新后才出现这个报错,就等软件适配该版本后再用。 |
| Process not running / Failed to find process | 软件查找游戏进程时,进程并不存在。可能是游戏没运行、还停在启动器的启动画面、运行在另一个会话下,或者读取程序读到的是过期的快照。 | 启动游戏并进入主菜单,然后按产品文档规定的顺序启动软件。如果游戏明明在运行,就把它当作读取链路故障处理,重新生成映射。 |
| invalid memory map | 软件拒绝了这个映射文件,原因可能是被手动改过、内容被截断、是为别的硬件生成的,或者生成时读取链路就已经不稳定。 | 删掉它,在当前硬件上重新生成。永远不要从别人的机器上拷贝内存映射,因为它描述的是对方的内存布局,不是你的。 |
| Initialization Failed. Unable to walk EPROCESS | 已经找到了内核结构,但无法遍历,这说明内存只能部分读取,而不是地址错了。 | 生成内存映射,让读取程序永远不去碰不可读的区域,并且两台机器都冷启动。再次尝试之前,先确认读取速度是稳定的。 |
第 3 层:输入设备报错
控制光标移动的盒子是一个独立的 USB 设备,有它自己的故障类型。这一层的报错涉及的是串口或网络地址,和卡没有任何关系。
| 现象 | 可能原因 | 解决方法 |
|---|---|---|
| 软件查找输入盒时报 Device not found | 盒子不在副机的端口列表里:没插、只插在了游戏主机上,或者没有绑定驱动。 | 确认盒子出现在副机(注意是副机)的设备管理器里,显示为 COM 端口或串行设备。数据线接副机,HID 线接游戏主机。 |
| Access to the port 'COM3' is denied | 端口已经被其他程序占用,比如重复打开的另一个软件实例、串口终端,或者没关掉的刷写工具。 | 关掉所有可能占用该端口的程序,再重新打开软件。如果还报错,就把盒子拔下重插,让端口重新枚举。 |
| The port 'COM3' does not exist | 配置里填的端口号不是 Windows 分配的那个,而且换一个 USB 口,端口号就会变。 | 在设备管理器里查看当前端口号,填到软件里。每次都插同一个物理接口,端口号就不会变。 |
| 盒子在设备管理器里显示成一个陌生的串口设备名 | 这类板子用的是通用 USB 转串口桥接芯片,所以 Windows 是按桥接芯片而不是按产品来命名的。 | 靠端口号而不是显示名称来识别盒子。拔掉盒子,记下哪一项消失了,再插回去,用那个端口。 |
| 网络版盒子的 IP 始终无响应,或者连接超时 | 网络连接的盒子没有获取到地址,或者它的地址、端口、UUID 填错了。如果交换机或路由器没有 DHCP,盒子启动后就无法访问。 | 确认 DHCP 已开启,且盒子的地址和副机在同一网段。然后按你那台设备上标注的地址、端口和 UUID 原样重新输入。 |
| 在副机上测试时光标会动,但游戏里毫无反应 | 游戏主机没有收到盒子发来的 HID 输入,可能是 HID 线插错了口,或者盒子的 HID 端没有在游戏主机上完成枚举。 | 打开游戏主机的设备管理器,插拔盒子的 HID 线,看有没有一个鼠标设备随之出现和消失。先在桌面上测试,再进游戏测试。 |
| 移动量翻倍、抖动,或者来回拉扯 | 物理鼠标和盒子同时在向游戏主机发送移动数据,或者有两个软件功能在控制同一个轴。 | 按产品文档的说明,让物理鼠标经过盒子接入,并且同一时间只启用一个移动来源。 |
| 输入盒报 Unknown USB Device (Device Descriptor Request Failed) | 盒子的 USB 链路信号余量不足,原因是只能充电的线、集线器或接口损坏。 | 换一根线,直接插到后置接口。然后把盒子接到另一台机器上测试,就能判断是盒子的问题还是端口的问题。 |
第 4 层:融合器、采集与叠加层问题
只有上面各层都正常之后,才值得去查显示层。到了这一步,软件通常没问题,问题出在视频信号、EDID 或分辨率不匹配上。
| 现象 | 可能原因 | 解决方法 |
|---|---|---|
| 接入融合器后主显示器无信号 | 视频链路某处断了、融合器上没有选中对应的输入,或者某根线带不动你之前用的分辨率和刷新率。 | 一根线一根线地重建链路,先从游戏主机直连显示器开始。直连正常后再接入融合器,并使用规格支持你所用分辨率和刷新率的线材。 |
| 接入融合器后,游戏主机掉到低分辨率或 60 Hz | 显示器的 EDID 没有传到游戏主机,所以它回退到了安全模式。 | 使用融合器的 EDID 直通功能,或者按厂商文档把显示器的 EDID 复制到融合器里。之后在信号源一端重新插拔线缆,让游戏主机重新读取 EDID。 |
| 黑屏,或者每隔几秒闪一下 | HDMI 握手失败、线材质量勉强或过长,或者链路上的内容保护在重新协商。 | 缩短线长,使用认证线材,去掉所有转接头和分配器。降低刷新率测试一下,看是不是链路已经没有余量了。 |
| 采集软件画面全黑,但显示器上能看到游戏 | 该输入上的信号源受内容保护、选错了输入,或者采集设备始终没收到它支持的信号格式。 | 选择正确的输入,并关掉其他正在占用采集设备的程序。检查信号源的分辨率和刷新率是否在设备的支持列表里。 |
| 叠加层在副机上能画出来,但经过融合器就看不到 | 叠加层渲染到了错误的显示器上,或者融合器接收的输出和叠加层所在的输出不是同一个。 | 用叠加层所在的那个显示输出去接融合器,并确认副机确实在该端口上输出了信号。 |
| 叠加层出来了,但位置偏移、缩放不对或被裁切 | 叠加层分辨率和游戏分辨率不一致,或者融合器在对两路信号中的一路做缩放。 | 把两台机器设为相同的分辨率和刷新率,并在融合器和显卡控制面板里关闭缩放。 |
| 游戏一切换分辨率,叠加层位置就跑偏 | 叠加层是按之前的显示模式对齐的,而没有任何东西通知它模式已经变了。 | 把游戏锁定在一个分辨率,重新对齐一次叠加层,游戏过程中不要在无边框和全屏之间来回切换。 |
说明
报错里的数字能告诉你什么
这些报错末尾的数值是有信息量的。在 FPGA 那几行里,设备 ID 和版本号全是零,说明通过 USB 什么也没读回来。版本号正常而 PCIe ID 为零则正好相反:USB 通了,PCIe 没通,这是另一个问题,解决办法也不同。DTB 失败后面的数字标明是哪一次尝试失败了。如果你把报错简化成“它说 DTB 错误”,就丢掉了最能缩小排查范围的那部分信息。
在认定卡坏了之前
卡确实会坏,但远没有下面这些原因常见。下面每一项,都曾是某张以“我的卡坏了”开头的工单的真正答案。
- 线插在卡的数据口,而不是刷写口
- 用的是数据线,直接插在后置 USB 3 口上,中间没有集线器、扩展坞或延长线
- 先开的游戏主机,并且等它进入桌面后才启动副机
- 副机上已安装 FTDI D3XX 驱动,桥接设备没有黄色感叹号
- 游戏主机 BIOS 里已关闭虚拟化:Intel 平台关 VT-d 和 VT-x,AMD 平台关 SVM 和 IOMMU
- 内存映射文件存在,是在这套硬件上生成的,并且放在软件预期的路径下
- 两台机器都做过彻底断电的冷启动,而不只是重启
DMA 报错常见问题
同时出现两个报错,先解决哪个?
先解决层级最低的那个。设备报错之后打印出来的 DTB 失败是由它引起的,设备那一行修好后通常就会自己消失。
改了某个地方之后报错变了,这算有进展吗?
如果新报错来自更高的层,那就算。从 USB 报错变成 DTB 报错,说明卡和 USB 链路已经正常,你往前推进了一层。
要清掉这类报错,需要重装 Windows 吗?
几乎不需要。重装是整个清单里代价最高的一步,而索引里的每一条报错都有更省事的解决办法。不解决真正的原因就重装系统,新系统上还是会出现同样的报错。
我的报错原文不在列表里,怎么办?
按层来对应:先弄清楚最后一个成功的环节是什么。然后提交工单,附上完整的报错原文,以及它的前一行和后一行,方便把它补进索引。
出现这些报错,是不是说明我被检测到了?
不是。这些都是初始化或硬件链路故障,在一台从没启动过游戏的机器上也会出现一模一样的报错。
资料来源
每条报错旁边的原因和解决方法都来自实测:是客户发来这些报错时,团队实际排查得出的结论。
- 01
- 02
- 03
继续阅读
仍然没有解决?在 Discord 提交工单
全部指南