Debugger issues: Followed tutorial, No DFU capable USB device available

Greeting all,

I’ve been trying to get debugging working for some time now. I followed the lasted tutorial material published under “Workbench”. My environment:

  • Visual Studio Code on Mac OS X
  • Particle debugger
  • Target Argon (DeviceOS, 0.9.0, TinkerBreak code)
  • Workbench Core 1.2.1

I executed Particle “New Project” and “Configure Workspace for Device”, selected the debug pulldown for (argon, boron, xenon) and then finally started debug from the green triangle button with the device in DFU mode (flashing yellow).
The code all compiled with no errors.

It failed (stopped) with the error as shown below:

dfu-util: No DFU capable USB device available
make[1]: *** [program-dfu] Error 74
make[1]: Leaving directory `/Users/glenn/.particle/toolchains/deviceOS/0.9.0/firmware-0.9.0/main’
make: *** [flash-debug] Error 2
The terminal process terminated with exit code: 2

Does anyone have any ideas on how to progress?

My setting.json and launce.json entries are below:

settings.json
{
“extensions.ignoreRecommendations”: true,
“C_Cpp.default.configurationProvider”: “particle.particle-vscode-core”,
“files.associations”: {
"*.ino": “cpp”
},
“particle.targetDevice”: “Argon-MeshGW1”,
“particle.firmwareVersion”: “0.9.0”,
“particle.targetPlatform”: “argon”,
“cortex-debug.openocdPath”: “/Users/glenn/.particle/toolchains/openocd/0.10.0-particle.1/bin/openocd”
}

launch.json
{
“type”: “cortex-debug”,
“request”: “attach”,
“name”: “Particle Debugger (argon, boron, xenon)”,
“servertype”: “openocd”,
“interface”: “swd”,
“device”: “nRF52840_xxAA”,
“cwd”: “${workspaceRoot}”,
“executable”: “${command:particle.getDebuggerExecutable}”,
“preLaunchTask”: “Particle: Flash application for debug (local)”,
“armToolchainPath”: “${command:particle.getDebuggerCompilerDir}”,
“svdFile”: “${command:particle.getDebuggerSVDFile}”,
“searchDir”: [
"${command:particle.getDebuggerSearchDir}"
],
“configFiles”: [
“interface/cmsis-dap.cfg”,
“target/nrf52-particle.cfg”
],
“windows”: {
“configFiles”: [
“interface\cmsis-dap.cfg”,
“target\nrf52-particle.cfg”
]
}
},

Thanks,
Glenn.

Your Windows is probably missing the DFU drivers.
Have a look in DeviceManager to see as what the yellow blinking device is hooked-up by Windows.

Thanks for the quick reply.

I’m on a Mac, not Windows. I have used dfu-util plenty of times in the past stand-alone.

BTW: Just noticed, I do get an error:

Serial device PARTICLE_SERIAL_DEV : not available
Flashing using dfu:
dfu-util -d 0x2B04:0xD00C -a 0 -s 0x30000:leave -D /Users/glenn/Documents/ParticleDev/Projects/TinkerBreak/target/TinkerBreak.dfu
dfu-util 0.9

I’ve set this environment variable to to the appropriate usb port: (/dev/tty/cu.usbmodemxyz). Didn’t seem to matter.

Thanks,

Glenn.

dfu-util: No DFU capable USB device available

is your device in dfu-mode? In order to use the Flash options, the device must be connected by USB and in DFU mode (blinking yellow).

Hold down the MODE (or SETUP) button while tapping RESET. Continue to hold down MODE (or SETUP) while the status LED blinks magenta (red and blue at the same time), until it blinks yellow, then release.

from the tutorial located here

Yes - it’s in DFU mode. Blinking away :slight_smile:

1 Like

Can you confirm that your xenon is found by DFU?

dfu-util -l

while knowing whether or not your global dfu-util instance recognizes your xenon, WB uses it’s own instance (part of the toolchains we manage on your behalf within ~/.particle/toolchains).

within VSCode, try running the Particle: Launch Compiler Shell command and then run the dfu-util -l command in the terminal instance that launches.

From within Compiler Shell: dfu-util -l

bash-3.2$ dfu-util -l
dfu-util 0.9

Deducing device DFU version from functional descriptor length
Found Runtime: [05ac:8286] ver=0154, devnum=6, cfg=1, intf=3, path=“29-1.8.1.3”, alt=0, name=“UNKNOWN”, serial="UNKNOWN"
bash-3.2$

Doesn’t look right. So how to set the unknowns?

Yeah it doesn’t. For a xenon it should be [2b04:d00e], not [05ac:8286].

Maybe try a different USB cable?

1 Like

I have the Particle Debugger plugged directly into my Mac USB port. No cable.
BTW - I’m using the Argon, not a Xenon.

Thanks.

ah, plug in your argon as well :wink:

Well - success. At least partially. Can’t believe my USB cable failed! That was the problem.

I was able to successfully flash the device with the debug code.

Now I just need to work on the “Failed to launch OpenOCD GDB Server: Timeout.” error.

Thanks for all of your help on this.

Glenn.

1 Like

Final follow-up. Debugger is working. It turns out I had some old sw using port 4444 keeping GDB/openocd from talking. All is good.

Glenn.

2 Likes

My Photon is using a power shield, which itself has a USB port. The Web-IDE works fine while I’m plugged into the shield’s USB port, but for flashing locally I’ve found that I have to be plugged directly into the Photon with the USB cable. If I’m plugged into the shield, I get the ‘name=“UNKNOWN”, serial=“UNKNOWN”’ message described earlier.

The Photon Power Shield USB receptacle is only for powering the device. the data lines D+/D- are not connected.
How could they? There are no pins on the Photon to attache to in order to bring them to the shield.

1 Like