adamgreig/ecpdap

'ecpdap probes' doesn't detect some CMSIS-DAP probes

Closed this issue · 5 comments

Context:

  • Windows 7/64
  • onboard DAP probe (based on STM32F103) on the following board: https://github.com/wuxx/Colorlight-FPGA-Projects
    (OpenOCD recognizes it and identifies it like so:
    Info : CMSIS-DAP: SWD Supported
    Info : CMSIS-DAP: JTAG Supported
    Info : CMSIS-DAP: FW Version = 0254
    Info : CMSIS-DAP: Serial# = 07000001066dff343832434257102940a5a5a5a597969908
    Info : CMSIS-DAP: Interface Initialised (JTAG)
    )

Note that the ecpdap works with this probe anyway (just doesn't auto-detect it) if I provide the USB VID/PID with '-p 0D28:0204' along with other commands.

Thanks for the report! Glad to hear it works with the Colorlight board probe. The scanning for probes only uses libusb, so my guess is on Windows without a libusb-compatible driver set up for the probe it doesn't find it, but when you specify the VID/PID directly it's able to open it using the HID interface instead. Could you try RUST_LOG=ecpdap::probe=trace scan (edit: or otherwise set the environment variable RUST_LOG to ecpdap::probe=trace, not sure how you do this on Windows) and paste the result here just to confirm?

The fix will be to also scan for devices using HID and combine the results, so it should be fixable.

ecpdap_windows_x86_64.exe -p 0D28:0204 scan

 2021-01-20T17:05:59.351Z TRACE ecpdap::probe > Opening probe: 0d28:0204: Unknown
 2021-01-20T17:06:01.061Z TRACE ecpdap::probe > Attempting to open in CMSIS-DAPv1 mode: 0d28:0204: Unknown
 2021-01-20T17:06:01.081Z DEBUG ecpdap::probe > Successfully opened v1 probe: ProbeInfo { name: None, vid: 3368, pid: 516, sn
: None, v1_only: false }
 2021-01-20T17:06:01.081Z TRACE ecpdap::probe > Draining pending data from probe
 2021-01-20T17:06:01.091Z TRACE ecpdap::probe > TX: [00, FF]
 2021-01-20T17:06:01.091Z TRACE ecpdap::probe > RX: [00, 02, 40, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 0
0, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
 2021-01-20T17:06:01.091Z TRACE ecpdap::probe > TX: [00, F0]
 2021-01-20T17:06:01.091Z TRACE ecpdap::probe > RX: [00, 01, 13, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 0
0, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
 2021-01-20T17:06:01.091Z TRACE ecpdap::probe > TX: [02, 02]
 2021-01-20T17:06:01.091Z TRACE ecpdap::probe > RX: [02, 02, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 0
0, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
 2021-01-20T17:06:01.091Z TRACE ecpdap::probe > TX: [01, 00, 01]
 2021-01-20T17:06:01.101Z TRACE ecpdap::probe > RX: [01, 00, 01, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 0
0, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
 2021-01-20T17:06:01.101Z TRACE ecpdap::probe > TX: [11, 40, 42, 0F, 00]
 2021-01-20T17:06:01.101Z TRACE ecpdap::probe > RX: [11, 00, 42, 0F, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 0
0, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
 2021-01-20T17:06:01.101Z TRACE ecpdap::probe > TX: [14, 01, 45, FF]
 2021-01-20T17:06:01.101Z TRACE ecpdap::probe > RX: [14, 00, 45, FF, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 0
0, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
 2021-01-20T17:06:01.101Z TRACE ecpdap::probe > TX: [14, 03, 01, FF, 41, FF, 02, FF]
 2021-01-20T17:06:01.111Z TRACE ecpdap::probe > RX: [14, 00, 01, FF, 41, FF, 02, FF, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 0
0, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
 2021-01-20T17:06:01.111Z TRACE ecpdap::probe > TX: [14, 04, 80, 00, 00, 00, 00, 00, 00, 00, 00, 80, 00, 00, 00, 00, 00, 00,
00, 00, 80, 00, 00, 00, 00, 00, 00, 00, 00, 81, 00]
 2021-01-20T17:06:01.111Z TRACE ecpdap::probe > RX: [14, 00, 43, 10, 11, 41, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 81, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 0
0, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
 2021-01-20T17:06:01.111Z TRACE ecpdap::probe > TX: [14, 04, 80, FF, FF, FF, FF, FF, FF, FF, FF, 80, FF, FF, FF, FF, FF, FF,
FF, FF, 80, FF, FF, FF, FF, FF, FF, FF, FF, C1, 01]
 2021-01-20T17:06:01.111Z TRACE ecpdap::probe > RX: [14, 00, 00, 00, 00, 00, FF, FF, FF, FF, FF, FF, FF, FF, FF, FF, FF, FF,
FF, FF, FF, FF, FF, FF, FF, FF, 01, FF, FF, C1, 01, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 0
0, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
 2021-01-20T17:06:01.111Z TRACE ecpdap::probe > TX: [14, 02, 41, FF, 01, FF]
 2021-01-20T17:06:01.111Z TRACE ecpdap::probe > RX: [14, 00, 41, FF, 01, FF, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 0
0, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
 2021-01-20T17:06:01.111Z TRACE ecpdap::probe > TX: [14, 02, 42, FF, 02, FF]
 2021-01-20T17:06:01.121Z TRACE ecpdap::probe > RX: [14, 00, 42, FF, 02, FF, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 0
0, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
 2021-01-20T17:06:01.121Z TRACE ecpdap::probe > TX: [14, 04, 80, 00, 00, 00, 00, 00, 00, 00, 00, 80, 00, 00, 00, 00, 00, 00,
00, 00, 80, 00, 00, 00, 00, 00, 00, 00, 00, 81, 00]
 2021-01-20T17:06:01.121Z TRACE ecpdap::probe > RX: [14, 00, 01, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 81, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 0
0, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
 2021-01-20T17:06:01.121Z TRACE ecpdap::probe > TX: [14, 04, 80, FF, FF, FF, FF, FF, FF, FF, FF, 80, FF, FF, FF, FF, FF, FF,
FF, FF, 80, FF, FF, FF, FF, FF, FF, FF, FF, C1, 01]
 2021-01-20T17:06:01.121Z TRACE ecpdap::probe > RX: [14, 00, 00, FF, FF, FF, FF, FF, FF, FF, FF, FF, FF, FF, FF, FF, FF, FF,
FF, FF, FF, FF, FF, FF, FF, FF, 01, FF, FF, C1, 01, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 0
0, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
 2021-01-20T17:06:01.121Z TRACE ecpdap::probe > TX: [14, 02, 41, FF, 01, FF]
 2021-01-20T17:06:01.131Z TRACE ecpdap::probe > RX: [14, 00, 41, FF, 01, FF, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 0
0, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
Detected JTAG chain, closest to TDO first:
 - 0: 0x41111043 ECP5 LFE5U-25 [IR length: 8]
 2021-01-20T17:06:01.131Z TRACE ecpdap::probe > TX: [03]
 2021-01-20T17:06:01.131Z TRACE ecpdap::probe > RX: [03, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 0
0, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
 2021-01-20T17:06:01.131Z TRACE ecpdap::probe > TX: [01, 00, 00]
 2021-01-20T17:06:01.131Z TRACE ecpdap::probe > RX: [01, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 0
0, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]

With your explanation, that's probably just it! The onboard probe apparently has support for both the HID driver and libusb driver (and there are indeed two devices installed for it with separate drivers), but OpenOCD can only detect it in HID mode, so I guess the probe's firmware doesn't completely support direct bulk access.

I've just pushed a commit to master that now autodetects HID-only probes, if you get some time please let me know if that fixes your issue.

Thanks, it appears to work.

Found 1 CMSIS-DAP probe:
  0d28:0204:07000001066dff343832434257102940a5a5a5a597969908 DAPLink CMSIS-DAP

Great, thanks! I'll do a new release with these changes.