ZDMA Setup Guide

Tutorials › ZDMA Setup Guide

ZDMA Setup Guide

From unboxing to a passing speed test — everything you need to get your ZDMA up and running. Section 4 covers getting your existing software to talk to the ZDMA; if you are wiring it into a project of your own, the integration methods, version rules and code samples live in the LeechCore Integration Guide.

Read before you start

  • Do not touch the circuitry directly with your hands — static electricity can damage the ZDMA.
  • Before installing, shut down both the main and console computers and disconnect them from power.
  • Do not dismantle the ZDMA without authorization — doing so voids the warranty.
  • Do not destroy the label/tag. It holds the only identifying information for your ZDMA and is required for upgrades. It’s best to photograph it and save it to your phone.
ZDMA identification tag
Keep this tag safe — photograph it for your records.

1. Overview

What’s in the box

  • 1 × ZDMA
  • 1 × Thunderbolt cable (1.5 m)
  • 1 × Screw — these are tiny and can be lost during customs/logistics inspection; you can also use a spare case or graphics-card screw to secure the ZDMA.
ZDMA package contents

Interfaces

  • Thunderbolt interface 1 — data transfer only (no power). Best compatibility. Recommended.
  • Thunderbolt interface 2 — fully functional with 60 W power supply, made of better material. Use this if your control computer must supply power through its only Thunderbolt port.
  • JTAG — firmware flashing.
ZDMA interfaces

2. Installation

  1. Power down. Turn off and disconnect both the main and console computers to prevent damage.
  2. Install the ZDMA. Align it with the notch on the left side of a PCIe X4 or PCIe X16 slot, insert it vertically, then secure it with a screw.
    Secure it firmly. The ZDMA is heavy — if it’s not fixed in place it may vibrate loose during use and be damaged.
    Installing the ZDMA into a PCIe slot
    ZDMA secured in the case
  3. Connect the data cable. Use the supplied Thunderbolt cable: one end to the ZDMA’s Thunderbolt interface 2, the other to your console computer’s Thunderbolt port.
    Connecting the Thunderbolt data cable
    Notes Once the ZDMA is secured, you can connect/disconnect the cable with the computer on — but never unplug it while the ZDMA is being used by software, or your console computer may crash. The ZDMA transfers data only over Thunderbolt: a normal USB-C port or ordinary USB cable will not work — use a Thunderbolt III or IV cable.
  4. Install the driver (on the console computer). Unzip the driver, then: right-click StartDevice Manager → right-click the Other device / Management CardUpdate driverBrowse my computer for drivers → select the driver folder → NextInstall this driver software anyway.

    Download the ZDMA Driver

3. Test

This step only confirms that the hardware is installed and running. It has nothing to do with whichever software you plan to use later.

  1. Turn off security software first. Uninstall the antivirus on the console computer and turn off Windows Defender. Antivirus software blocks DMA reads and writes, so the test will never pass while it is running.

    Defender Control Tool

  2. Run the test program. Download and unzip our test file, then double-click DMAtest.exe. A continuously changing number in the window means the test passed — the bigger the better. You don’t need to note the value down; it just has to keep refreshing. Our test program already bundles everything it needs (including the latest leechcore.dll), so unzip it and run it — no DLL version juggling on your side.

    Download Test File

    DMA test result showing refreshing numbers
    Using our test program? You can skip this box. If you use a test tool someone else gave you, or one you compiled yourself, first replace the leechcore.dll in the tool’s folder with the latest one we provide (button below). An outdated DLL will not recognise the ZDMA, so no numbers ever appear — which looks exactly like a hardware fault.

    Download latest leechcore.dll

    Technical detailThe archive’s leechcore.dll and leechcore_driver.dll must be used as a pair from the same release — never mix versions. Before running your own code, verify version alignment and connectivity with pcileech.exe -device fpga probe.

    If no numbers ever appear, send us a full screenshot of the test window (Discord or email) and we’ll work out which step went wrong.

4. How to Use

Once the test passes, everything left is on the software side. In user mode the ZDMA is the LeechCore DLL pair: as long as a process loads our leechcore.dll and leechcore_driver.dll through the Windows DLL search order, it gets the device. Most programs still ship their own older LeechCore build, so start by checking whether those DLLs can be swapped.

Case 1: The DLLs can be swapped (most off-the-shelf programs)

  1. Close the target program and confirm the process is gone — background instances included, or the DLLs stay locked and cannot be overwritten.
  2. Unzip our package to get leechcore.dll and leechcore_driver.dll.
  3. Copy both files into the directory holding the program’s exe, keeping a .bak of the originals so you can roll back. Windows searches the exe’s own directory first, so that is where your copies win.
    Swap both files togetherReplacing only one leaves the versions mismatched: LcCreate fails outright, which surfaces as “no device found”. If the directory also holds vmm.dll (MemProcFS), it has to come from the same release.
  4. Start the program again.

Download leechcore.dll (driver included)

Case 2: The DLLs can’t be swapped, or the swap changes nothing

Any of the following means the problem sits above the file-swapping layer:

  • There is no leechcore.dll in the program’s directory — it is packed into the exe and extracted at runtime, or loaded straight from memory.
  • After the swap the program won’t start, reports a failed file check, or crashes immediately (it verifies its own integrity).
  • After the swap it still reports no DMA device, while our test program reads numbers fine — the hardware is good, so the caller is the problem.

From there it comes down to whether the program is yours to change:

  • Yours to change — you wrote it, or it is open source and you can rebuild it: one pass through the integration guide is all it takes. Both routes (DLLs next to the exe, or both DLLs embedded as resources in a single-file exe) come with full code samples and a troubleshooting table.
  • Not yours to change — a closed-source third-party program: send the author the integration guide and mention you are on a ZDMA. The adaptation is small, and one round usually settles it.

ZDMA / LeechCore Integration Guide

Technical detail (feel free to forward this to the author)The ZDMA runs over Thunderbolt with its own driver, so user mode needs only the LeechCore DLL pair — FTD3XX.dll is not required (that one is for FT601 / USB3 boards). Pick one of two integration methods: DLLs next to the exe (recommended during development — easy to debug, DLLs upgrade individually), or embed both DLLs as exe resources, extract them to one temporary directory at startup, then SetDllDirectory + LoadLibrary (recommended for external delivery; pure in-memory loading fails on the second-level driver dependency). Also note that ZDMA firmware v4.17 / FPGA1 v4+ requires the latest leechcore.dll. Full rules, code samples and a troubleshooting table are in the integration guide above.
If you can’t tell which layer you are stuck on, or you would rather we walk the author through the technical details, reach us on Discord.

5. Firmware Build & Flash

See the dedicated guide for flashing firmware:

ZDMA Firmware Flashing Guide

All firmware information for the ZDMA is published in Ulf Frisk’s pcileech-fpga / ZDMA project, including full build and flashing tutorials.

Flashing reminders

  • After flashing completes, shut down the main computer and turn it on again so the ZDMA loads correctly — do not simply restart.
  • Make sure the chip you flash is FPGA_0.
  • The JTAG port is not compatible with the Thunderbolt cable — use an ordinary USB cable to flash.

Scroll to Top