Все ошибки DMA и что они означают
Справочник ошибок, которые выдаёт DMA-сборка, с причиной и решением для каждой. Строки сгруппированы по уровням: карта и USB, инициализация, устройство ввода, видеотракт.
Коротко
Сопоставьте точный текст ошибки DMA с её уровнем — так вы найдёте настоящую причину и самое дешёвое решение. У большинства ошибок одна из четырёх причин: не тот USB-порт, не установлен драйвер, нет карты памяти (MMAP) или в BIOS игрового ПК включена виртуализация.
На странице10
- Как найти свою ошибку
- Четыре уровня DMA-сборки по порядку
- Уровень 1: ошибки карты и USB-подключения
- Уровень 2: ошибки DTB, base address, MMAP и процесса
- Уровень 3: ошибки устройства ввода
- Уровень 4: проблемы фьюзера, захвата и оверлея
- О чём говорят числа в ошибке
- Прежде чем решить, что карта неисправна
- Частые вопросы об ошибках DMA
- Источники
Как найти свою ошибку
Скопируйте текст ошибки из окна консоли, а не перепечатывайте со скриншота, и поищите его в строках ниже. Строки сгруппированы по уровням, и уровень важнее формулировки: два разных продукта могут написать разные фразы про один и тот же битый кабель. Если вашей точной строки нет, найдите строку, симптом которой описывает тот же момент в последовательности запуска. Именно там программа остановилась — оттуда и начинайте.
Четыре уровня 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 ничего не привязано. | Откройте Диспетчер устройств и найдите мост FT601 в разделе «Контроллеры USB» (Universal Serial Bus controllers). Если его там нет, дело в порте или кабеле, а если на нём предупреждающий треугольник — в драйвере. |
| Failed to connect to memory acquisition device | Здесь об ошибке уровня 1 сообщает лаунчер, а не leechcore. Причины те же, но формулировка ещё на шаг дальше от настоящей ошибки. | Полностью выключите обе машины, заново вставьте карту и переподключите USB-кабель с обоих концов. Сначала загрузите игровой ПК, затем проверьте порт, кабель и драйвер — именно в таком порядке. |
| Unknown USB Device (Device Descriptor Request Failed) | Windows на втором ПК не смогла прочитать дескрипторы моста. Это указывает на нестабильную связь, плохой кабель или хаб в цепочке. | Уберите все хабы, доки и удлинители и подключитесь напрямую к заднему порту USB 3 коротким кабелем с передачей данных. Если сообщение остаётся на двух портах и с двумя кабелями, подозревайте USB-разъём на самой карте. |
| Карта работает несколько минут, потом устройство пропадает | Обычно виноваты выборочная приостановка USB (USB selective suspend), общий контроллер, нестабильный кабель или нагрев карты в закрытом корпусе. | Ничего не перепрошивайте. Вместо этого прочитайте гайд по диагностике отвалов: эти четыре причины различаются именно по тому, когда происходит отвал. |
Уровень 2: ошибки DTB, base address, MMAP и процесса
Если вы дошли до этого уровня, карта жива и USB-тракт работает. Любая ошибка из этой таблицы значит, что ридер не может разобраться в памяти, которую уже читает. Решение почти всегда — карта памяти (MMAP) или настройка BIOS на игровом ПК.
| Симптом | Вероятная причина | Решение |
|---|---|---|
| vmmWinInit_TryInitialize: Initialization Failed. Unable to locate valid DTB. #2 | Ридер прочитал память, но не нашёл в ней Directory Table Base ядра Windows. Обычно нет карты памяти или на игровом ПК всё ещё включены 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 так и не отработал, либо карта памяти, которую ему велели загрузить, отсутствует или битая. | Сначала убедитесь, что DMA-карта видна, затем проверьте, что файл карты памяти лежит по пути, где его ждёт программа. Карта памяти должна быть сгенерирована на этой машине, с этой прошивкой и после последнего изменения железа. |
| 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-устройство со своими характерными сбоями. Ошибки этого уровня касаются последовательного порта или сетевого адреса и к DMA-карте отношения не имеют.
| Симптом | Вероятная причина | Решение |
|---|---|---|
| Device not found, когда программа ищет устройство ввода | Устройства нет в списке портов второго ПК: оно отключено, подключено только к игровому ПК или к нему не привязан драйвер. | Убедитесь, что устройство видно в Диспетчере устройств на ВТОРОМ ПК как COM-порт или последовательное устройство. Кабель данных идёт во второй ПК, а HID-кабель — в игровой. |
| Access to the port 'COM3' is denied | Порт уже занят другой программой: второй копией софта, терминалом последовательного порта или оставленной открытой утилитой для прошивки. | Закройте все программы, которые могут держать порт, и откройте софт заново. Если ошибка не уходит, отключите и снова подключите устройство, чтобы порт определился заново. |
| The port 'COM3' does not exist | Номер порта в настройках не совпадает с тем, что назначила Windows, а номера портов меняются, когда вы переставляете устройство в другой USB-разъём. | Посмотрите текущий номер порта в Диспетчере устройств и укажите его в программе. Подключайте устройство всегда в один и тот же физический разъём, чтобы номер не менялся. |
| Устройство отображается под неожиданным именем последовательного устройства | На этих платах стоят типовые мосты USB-to-serial, поэтому Windows называет их по чипу моста, а не по названию продукта. | Определяйте устройство по номеру порта, а не по отображаемому имени. Отключите устройство, посмотрите, какая строка пропала, затем подключите его обратно и используйте этот порт. |
| Сетевое устройство не отвечает по своему IP или соединение отваливается по таймауту | Сетевое устройство не получило адрес, либо его адрес, порт или UUID введены с ошибкой. Если на свитче или роутере нет DHCP, устройство после включения остаётся недоступным. | Убедитесь, что DHCP включён и адрес устройства находится в той же подсети, что и второй ПК. Затем заново введите адрес, порт и UUID точно так, как они указаны для вашего экземпляра. |
| В тесте на втором ПК курсор двигается, а в игре ничего не происходит | Игровой ПК не получает HID-ввод от устройства: HID-кабель воткнут не в тот разъём или HID-сторона устройства там не определилась. | Откройте Диспетчер устройств на игровом ПК и найдите мышь, которая появляется и пропадает, когда вы подключаете и отключаете HID-кабель устройства. Проверьте её на рабочем столе, прежде чем проверять в игре. |
| Движение двоится, дёргается или конфликтует само с собой | Физическая мышь и устройство одновременно отправляют движение на игровой ПК, или две функции софта управляют одной и той же осью. | Подключите физическую мышь через устройство, как описано в документации вашего продукта, и включайте только один источник движения за раз. |
| Unknown USB Device (Device Descriptor Request Failed) у устройства ввода | У устройства нестабильная USB-связь из-за кабеля только для зарядки, хаба или повреждённого разъёма. | Замените кабель и подключитесь напрямую к заднему порту. Затем проверьте устройство на другой машине — так станет ясно, виновато устройство или порт. |
Уровень 4: проблемы фьюзера, захвата и оверлея
Видеотракт важен только тогда, когда всё выше него уже работает. На этом этапе с софтом обычно всё в порядке, а проблема в видеосигнале, EDID или несовпадении разрешений.
| Симптом | Вероятная причина | Решение |
|---|---|---|
| Нет сигнала на основном мониторе после установки фьюзера | В видеоцепочке разрыв, на фьюзере не выбран вход или кабель не тянет разрешение и частоту обновления, на которых вы играли. | Собирайте цепочку заново по одному кабелю, начиная с прямого подключения игрового ПК к монитору. Добавляйте фьюзер только тогда, когда прямое подключение работает, и используйте кабели, рассчитанные на ваше разрешение и частоту обновления. |
| После установки фьюзера игровой ПК падает на низкое разрешение или 60 Гц | EDID монитора не доходит до игрового ПК, и тот откатывается в безопасный режим. | Включите сквозную передачу EDID (EDID pass-through) на фьюзере или скопируйте EDID монитора во фьюзер так, как описывает производитель. После этого переподключите кабель со стороны источника, чтобы игровой ПК заново считал EDID. |
| Чёрный экран или мерцание каждые несколько секунд | Сбоит HDMI-рукопожатие, кабель на пределе или слишком длинный либо на линии заново согласовывается защита контента (HDCP). | Сократите длину линии, возьмите сертифицированный кабель и уберите все переходники и сплиттеры. Проверьте на меньшей частоте обновления, чтобы понять, не работает ли линия просто впритык, без запаса. |
| Программа захвата показывает чёрную картинку, а монитор показывает игру | Источник на этом входе защищён, выбран не тот вход или устройство захвата так и не получило формат сигнала, который оно принимает. | Выберите правильный вход и закройте всё остальное, что использует устройство захвата. Проверьте, что разрешение и частота обновления источника есть в списке поддерживаемых устройством. |
| Оверлей рисуется на втором ПК, но не проходит через фьюзер | Оверлей рендерится не на том дисплее, или фьюзер получает не тот выход, на котором находится оверлей. | Подайте на фьюзер тот видеовыход, на который выводится оверлей, и убедитесь, что второй ПК действительно отдаёт сигнал на этот порт. |
| Оверлей виден, но смещён, отмасштабирован или обрезан | Разрешение оверлея не совпадает с разрешением игры, или фьюзер масштабирует один из двух сигналов. | Выставьте на обеих машинах одинаковые разрешение и частоту обновления и отключите масштабирование во фьюзере и в панели управления видеокарты. |
| Оверлей съезжает, как только игра меняет разрешение | Оверлей выровняли под предыдущий режим экрана, и ничто не сообщило ему, что режим сменился. | Зафиксируйте в игре одно разрешение, один раз заново выровняйте оверлей и не переключайтесь во время сессии между оконным режимом без рамки (borderless) и полноэкранным. |
Справка
О чём говорят числа в ошибке
Значения в конце этих сообщений несут информацию. В строках FPGA нулевые ID устройства и версия означают, что по USB вообще ничего не вернулось. Настоящий номер версии при нулевом PCIe ID означает обратное: USB работает, а PCIe нет, и это другая проблема с другим решением. Число после ошибки DTB показывает, какая именно попытка провалилась. Если сократить строку до «пишет ошибку DTB», вы теряете как раз ту часть, которая сужает круг причин.
Прежде чем решить, что карта неисправна
Карты действительно ломаются, но гораздо реже, чем случаются причины из этого списка. Каждый пункт ниже уже оказывался настоящим ответом в тикете, который начинался со слов «у меня карта сдохла».
- Кабель в порту данных карты, а не в порту для прошивки
- Кабель с передачей данных, подключён напрямую к заднему порту USB 3 — без хаба, дока и удлинителя
- Игровой ПК загрузился первым и дошёл до рабочего стола до того, как запустили второй ПК
- На втором ПК установлен драйвер FTDI D3XX, и на мосте нет предупреждающего треугольника
- В BIOS игрового ПК отключена виртуализация: VT-d и VT-x на Intel, SVM и IOMMU на AMD
- Карта памяти есть, сгенерирована на этом железе и лежит по пути, где её ждёт программа
- Обе машины прошли холодный старт с полным отключением питания, а не просто перезагрузку
Частые вопросы об ошибках DMA
У меня сразу две ошибки. Какую исправлять первой?
Начните с той, что на самом нижнем уровне. Ошибка DTB, выведенная после ошибки устройства, — её следствие, и обычно она исчезает, как только вы исправите ошибку устройства.
Я что-то поменял, и ошибка стала другой. Это прогресс?
Да, если новая ошибка приходит с более высокого уровня. Переход от ошибки USB к ошибке DTB значит, что карта и USB-тракт теперь работают и вы продвинулись на уровень дальше.
Нужно ли переустанавливать Windows, чтобы избавиться от одной из этих ошибок?
Почти никогда. Это самый затратный шаг в списке, и у каждой ошибки в справочнике есть решение дешевле. Чистая установка, которая не устраняет настоящую причину, воспроизведёт ту же ошибку на свежей системе.
Моей ошибки в списке нет. Что делать?
Сопоставьте её по уровню: определите, что последним отработало успешно. Затем пришлите полную строку в тикете вместе со строкой до и строкой после неё, чтобы её можно было добавить в справочник.
Значит ли какая-нибудь из этих ошибок, что меня обнаружили?
Нет. Все они — сбои инициализации или аппаратного тракта, и точно такие же ошибки вы увидели бы на машине, где игра ни разу не запускалась.
Источники
Причины и решения рядом с каждой строкой — результат работы на стенде: это то, что команда выяснила, когда клиенты присылали эти ошибки.
- 01LeechCore (Ulf Frisk)
слой, который выводит ошибки устройств FPGA и FT601; из него же библиотека leechcore_driver.dll, упомянутая в этих ошибках
github.com
- 02MemProcFS (Ulf Frisk)
инструмент, который выводит приведённые здесь строки vmmWinInit, VmmProc и MOUNT
github.com
- 03
Читать дальше
Не получилось? Откройте тикет в Discord
Все гайды