Skip to content

Error: device data collection failed #31

@WeiXiaoBlueRabbit

Description

@WeiXiaoBlueRabbit

Description

This error has occurred again.

sudo ./bin/pcileechgen check --bdf 0000:08:00.0
Checking device 0000:08:00.0...

[OK] Device found: 10ec:8168 Ethernet controller
[OK] Config space readable: 4096 bytes
[OK] IOMMU is enabled
[OK] VFIO modules loaded
[OK] IOMMU group: 16
[OK] Device is alone in its IOMMU group
[OK] Power state: D0 (active)
[OK] Already bound to vfio-pci

Capabilities (4):
  [01] Power Management at offset 0x40
  [05] MSI at offset 0x50
  [10] PCI Express at offset 0x70
  [11] MSI-X at offset 0xb0

Extended Capabilities (5):
  [0001] Advanced Error Reporting at offset 0x100
  [0002] Virtual Channel (No MFVC) at offset 0x140
  [0003] Device Serial Number at offset 0x160
  [0018] Latency Tolerance Reporting at offset 0x170
  [001e] L1 PM Substates at offset 0x178

BARs:
  BAR0: io at 0x3000, size 256 B
  BAR2: mem64 at 0xb2204000, size 4 KB
  BAR4: mem64 at 0xb2200000, size 16 KB

--- Board Compatibility ---
Donor Link: Gen1 (2.5 GT/s) x1
Donor DSN:  0x01000000684CE000

Compatible boards:
  [OK] PCIeSquirrel           xc7a35tfgg484-2 x1 (exact match)
  [OK] ScreamerM2             xc7a35tcsg325-2 x1 (exact match)
  [OK] pciescreamer           xc7a35tfgg484-2 x1 (exact match)
  [OK] EnigmaX1               xc7a75tfgg484-2 x1 (exact match)
  [OK] CaptainDMA_M2_x1       xc7a35tcsg325-2 x1 (exact match)
  [OK] CaptainDMA_M2_x4       xc7a35tcsg325-2 x4
  [OK] CaptainDMA_35T         xc7a35tfgg484-2 x1 (exact match)
  [OK] CaptainDMA_75T         xc7a75tfgg484-2 x1 (exact match)
  [OK] CaptainDMA_100T        xc7a100tfgg484-2 x1 (exact match)
  [OK] ZDMA                   xc7a100tfgg484-2 x4
  [OK] GBOX                   xc7a35tfgg484-2 x1 (exact match)
  [OK] NeTV2_35T              xc7a35tfgg484-2 x1 (exact match)
  [OK] NeTV2_100T             xc7a100tfgg484-2 x1 (exact match)
  [OK] ac701_ft601            xc7a200tfbg676-2 x4
  [OK] acorn                  xc7a200tfbg484-3 x4
  [OK] litefury               xc7a100tfgg484-2 x4
  [OK] sp605_ft601            xc6slx45tfgg484-2 x1 (exact match)

Total: 17 boards

--- Summary ---
[OK] Device is ready for firmware generation
sudo ./bin/pcileechgen build --bdf 0000:08:00.0 --board CaptainDMA_75t --skip-vivado
2026/03/12 12:50:23 INFO target device bdf=0000:08:00.0
2026/03/12 12:50:23 INFO collecting donor device data
2026/03/12 12:50:23 INFO PCI memory space enabled bdf=0000:08:00.0
2026/03/12 12:50:23 WARN sysfs BAR read returned all 0xFF, will retry via VFIO bar=2
2026/03/12 12:50:23 INFO BAR read complete bar=2 bytes=4096
2026/03/12 12:50:23 WARN sysfs BAR read returned all 0xFF, will retry via VFIO bar=4
2026/03/12 12:50:23 INFO BAR read complete bar=4 bytes=4096
2026/03/12 12:50:23 INFO retrying BAR reads via VFIO
2026/03/12 12:50:24 INFO all memory BAR contents are 0xFF, attempting native driver rebind cycle
2026/03/12 12:50:24 INFO waiting for native driver to initialize device... delay=3s
2026/03/12 12:50:27 WARN native driver rebind cycle did not recover any BAR data
2026/03/12 12:50:27 INFO BAR profiled bar=2 active_registers=1024
2026/03/12 12:50:27 INFO BAR profiled bar=4 active_registers=1024
2026/03/12 12:50:27 INFO MSI-X detected vectors=4 table_bar=4 table_offset=0x0 pba_bar=4 pba_offset=0x800
2026/03/12 12:50:27 WARN BAR content is all 0xFF - device may be inaccessible or in D3 power state bar=2 bytes=4096 class=0x020000
2026/03/12 12:50:27 WARN BAR content is all 0xFF - device may be inaccessible or in D3 power state bar=4 bytes=4096 class=0x020000
Error: device data collection failed: BAR content for class 0x020000 is all 0xFF (driver "vfio-pci"). The device is not responding - possible causes:
  • device is in D3 (sleep) power state
  • IOMMU/VT-d not enabled or misconfigured
  • PCI Command Register memory space not enabled
  • device requires native driver initialization (e.g. CNVi WiFi, firmware-dependent devices)
Without valid BAR data, Windows will produce Code 10 and DMA will not work

Workarounds:
  1. Try: sudo setpci -s 0000:08:00.0 COMMAND=0x06
  2. For CNVi/WiFi: boot with native driver, dump BAR with a tool, then use --from-json
Usage:
  pcileechgen build [flags]

Flags:
      --bdf string           donor device BDF address (e.g. 0000:03:00.0)
      --board string         target FPGA board name (required, e.g. PCIeSquirrel)
      --from-json string     load donor device data from JSON file (offline build)
  -h, --help                 help for build
      --jobs int             number of parallel Vivado jobs (default 4)
      --lib-dir string       path to pcileech-fpga library (default "lib/pcileech-fpga")
      --output string        output directory (default "pcileech_datastore")
      --skip-vivado          skip Vivado synthesis (only generate artifacts)
      --timeout int          Vivado synthesis timeout in seconds (default 3600)
      --vivado-path string   path to Vivado installation

device data collection failed: BAR content for class 0x020000 is all 0xFF (driver "vfio-pci"). The device is not responding - possible causes:
  • device is in D3 (sleep) power state
  • IOMMU/VT-d not enabled or misconfigured
  • PCI Command Register memory space not enabled
  • device requires native driver initialization (e.g. CNVi WiFi, firmware-dependent devices)
Without valid BAR data, Windows will produce Code 10 and DMA will not work

Workarounds:
  1. Try: sudo setpci -s 0000:08:00.0 COMMAND=0x06
  2. For CNVi/WiFi: boot with native driver, dump BAR with a tool, then use --from-json

I tried to use the method in the 16SalomonArs/Pcileech-DMA-FirmwareCustomizationGuide to dump the memory. The results showed that regardless of whether I bound the driver to r8169 or vfio-pci, I could obtain memory values (not all 0xFF).

This is the code for dumping memory usage. Perhaps it can provide new ideas?:

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/mman.h>

int main(int argc, char **argv) {
    if (argc < 2) {
        printf("Usage: %s /sys/bus/pci/devices/XXXX:XX:XX.X/resource0\n", argv[0]);
        return 1;
    }

    int fd = open(argv[1], O_RDONLY);
    if (fd < 0) {
        perror("open");
        return 1;
    }

    void *mem = mmap(NULL, 4096, PROT_READ, MAP_SHARED, fd, 0);
    if (mem == MAP_FAILED) {
        perror("mmap");
        close(fd);
        return 1;
    }

    // Output in Verilog case format
    printf("// BAR0 memory dump for Verilog\n");
    for (int offset = 0; offset < 4096; offset += 4) {
        uint32_t val = *(uint32_t *)(mem + offset);
        printf("16'h%04X: rd_rsp_data <= 32'h%08X;\n", offset, val);
    }

    munmap(mem, 4096);
    close(fd);
    return 0;
}

Error Type

Collection failure

Device Context File

NA

Windows Event Log

Device Manager Error Details

No response

Terminal Output

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions