No DFU capable USB device available

Hi!

Anyone experienced this problem: "No DFU capable USB device available" uploading a simple sketch to a Portenta machine control board?

I tried everything... cables, PC, OS, with or without power supply... also other boards...
with the green LED is fading and not fading...

The COM port is visible on Device Manager. I've also tried to change port number.

Andrea

Below the tail of the log of Arduino IDE 1.8.19:

Compiling core...
"C:\\Users\\shc-user\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\arm-none-eabi-gcc\\7-2017q4/bin/arm-none-eabi-g++" -c -w -g3 -nostdlib "@C:\\Users\\shc-user\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\mbed_portenta\\3.4.1\\variants\\PORTENTA_H7_M7/defines.txt" "@C:\\Users\\shc-user\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\mbed_portenta\\3.4.1\\variants\\PORTENTA_H7_M7/cxxflags.txt" -MMD -mcpu=cortex-m7 -mfloat-abi=softfp -mfpu=fpv5-d16 -DARDUINO=10819 -DARDUINO_PORTENTA_H7_M7 -DARDUINO_ARCH_MBED_PORTENTA -DARDUINO_ARCH_MBED -DARDUINO_LIBRARY_DISCOVERY_PHASE=0 "-IC:\\Users\\shc-user\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\mbed_portenta\\3.4.1\\cores\\arduino" "-IC:\\Users\\shc-user\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\mbed_portenta\\3.4.1\\variants\\PORTENTA_H7_M7" -DCM4_BINARY_START=0x08100000 "-IC:\\Users\\shc-user\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\mbed_portenta\\3.4.1\\cores\\arduino/api/deprecated" "-IC:\\Users\\shc-user\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\mbed_portenta\\3.4.1\\cores\\arduino/api/deprecated-avr-comp" "-iprefixC:\\Users\\shc-user\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\mbed_portenta\\3.4.1\\cores\\arduino" "@C:\\Users\\shc-user\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\mbed_portenta\\3.4.1\\variants\\PORTENTA_H7_M7/includes.txt" "C:\\Users\\shc-user\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\mbed_portenta\\3.4.1\\variants\\PORTENTA_H7_M7\\variant.cpp" -o "C:\\Users\\shc-user\\AppData\\Local\\Temp\\arduino_build_548691\\core\\variant.cpp.o"
Using precompiled core: C:\Users\shc-user\AppData\Local\Temp\arduino_cache_149801\core\core_arduino_mbed_portenta_envie_m7_split_50_50,security_none_ce7568b526942b72047cc33ac9c00ae2.a
Linking everything together...
"C:\\Users\\shc-user\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\arm-none-eabi-gcc\\7-2017q4/bin/arm-none-eabi-g++" -E -P -x c -DCM4_BINARY_START=0x08100000 "C:\\Users\\shc-user\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\mbed_portenta\\3.4.1\\variants\\PORTENTA_H7_M7/linker_script.ld" -o "C:\\Users\\shc-user\\AppData\\Local\\Temp\\arduino_build_548691/linker_script.ld"
"C:\\Users\\shc-user\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\arm-none-eabi-gcc\\7-2017q4/bin/arm-none-eabi-g++" "-LC:\\Users\\shc-user\\AppData\\Local\\Temp\\arduino_build_548691" -Wl,--gc-sections -w -Wl,--as-needed -DCM4_BINARY_START=0x08100000 "@C:\\Users\\shc-user\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\mbed_portenta\\3.4.1\\variants\\PORTENTA_H7_M7/ldflags.txt" "-TC:\\Users\\shc-user\\AppData\\Local\\Temp\\arduino_build_548691/linker_script.ld" "-Wl,-Map,C:\\Users\\shc-user\\AppData\\Local\\Temp\\arduino_build_548691/TechIO_v3.ino.map" --specs=nosys.specs -o "C:\\Users\\shc-user\\AppData\\Local\\Temp\\arduino_build_548691/TechIO_v3.ino.elf" "C:\\Users\\shc-user\\AppData\\Local\\Temp\\arduino_build_548691\\sketch\\TechIO_v3.ino.cpp.o" "C:\\Users\\shc-user\\AppData\\Local\\Temp\\arduino_build_548691\\libraries\\Arduino_MachineControl\\Objects.cpp.o" "C:\\Users\\shc-user\\AppData\\Local\\Temp\\arduino_build_548691\\libraries\\Arduino_MachineControl\\utility\\MAX31865\\MAX31865.cpp.o" "C:\\Users\\shc-user\\AppData\\Local\\Temp\\arduino_build_548691\\libraries\\Arduino_MachineControl\\utility\\QEI\\QEI.cpp.o" "C:\\Users\\shc-user\\AppData\\Local\\Temp\\arduino_build_548691\\libraries\\Arduino_MachineControl\\utility\\RTC\\PCF8563T.cpp.o" "C:\\Users\\shc-user\\AppData\\Local\\Temp\\arduino_build_548691\\libraries\\Arduino_MachineControl\\utility\\THERMOCOUPLE\\MAX31855.cpp.o" "C:\\Users\\shc-user\\AppData\\Local\\Temp\\arduino_build_548691\\libraries\\Arduino_MachineControl\\utility\\ioexpander\\ArduinoIOExpander.cpp.o" "C:\\Users\\shc-user\\AppData\\Local\\Temp\\arduino_build_548691\\libraries\\Arduino_MachineControl\\utility\\ioexpander\\I2Cdev.cpp.o" "C:\\Users\\shc-user\\AppData\\Local\\Temp\\arduino_build_548691\\libraries\\Arduino_MachineControl\\utility\\ioexpander\\TCA6424A.cpp.o" "C:\\Users\\shc-user\\AppData\\Local\\Temp\\arduino_build_548691\\libraries\\SPI\\SPI.cpp.o" "C:\\Users\\shc-user\\AppData\\Local\\Temp\\arduino_build_548691\\libraries\\ArduinoRS485\\RS485.cpp.o" "C:\\Users\\shc-user\\AppData\\Local\\Temp\\arduino_build_548691\\libraries\\Wire\\Wire.cpp.o" "C:\\Users\\shc-user\\AppData\\Local\\Temp\\arduino_build_548691\\libraries\\WiFi\\WiFi.cpp.o" "C:\\Users\\shc-user\\AppData\\Local\\Temp\\arduino_build_548691\\libraries\\WiFi\\WiFiServer.cpp.o" "C:\\Users\\shc-user\\AppData\\Local\\Temp\\arduino_build_548691\\libraries\\SocketWrapper\\MbedClient.cpp.o" "C:\\Users\\shc-user\\AppData\\Local\\Temp\\arduino_build_548691\\libraries\\SocketWrapper\\MbedSSLClient.cpp.o" "C:\\Users\\shc-user\\AppData\\Local\\Temp\\arduino_build_548691\\libraries\\SocketWrapper\\MbedServer.cpp.o" "C:\\Users\\shc-user\\AppData\\Local\\Temp\\arduino_build_548691\\libraries\\SocketWrapper\\MbedUdp.cpp.o" "C:\\Users\\shc-user\\AppData\\Local\\Temp\\arduino_build_548691\\libraries\\SocketWrapper\\SocketHelpers.cpp.o" "C:\\Users\\shc-user\\AppData\\Local\\Temp\\arduino_build_548691\\libraries\\SocketWrapper\\utility\\http_parser\\http_parser.c.o" "C:\\Users\\shc-user\\AppData\\Local\\Temp\\arduino_build_548691\\core\\variant.cpp.o" -Wl,--whole-archive "C:\\Users\\shc-user\\AppData\\Local\\Temp\\arduino_build_548691/..\\arduino_cache_149801\\core\\core_arduino_mbed_portenta_envie_m7_split_50_50,security_none_ce7568b526942b72047cc33ac9c00ae2.a" "C:\\Users\\shc-user\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\mbed_portenta\\3.4.1\\variants\\PORTENTA_H7_M7/libs/libmbed.a" -Wl,--no-whole-archive -Wl,--start-group -lstdc++ -lsupc++ -lm -lc -lgcc -lnosys -Wl,--end-group
"C:\\Users\\shc-user\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\arm-none-eabi-gcc\\7-2017q4/bin/arm-none-eabi-objcopy" -O binary "C:\\Users\\shc-user\\AppData\\Local\\Temp\\arduino_build_548691/TechIO_v3.ino.elf" "C:\\Users\\shc-user\\AppData\\Local\\Temp\\arduino_build_548691/TechIO_v3.ino.bin"
"C:\\Users\\shc-user\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\arm-none-eabi-gcc\\7-2017q4/bin/arm-none-eabi-objcopy" -O ihex -R .eeprom "C:\\Users\\shc-user\\AppData\\Local\\Temp\\arduino_build_548691/TechIO_v3.ino.elf" "C:\\Users\\shc-user\\AppData\\Local\\Temp\\arduino_build_548691/TechIO_v3.ino.hex"
Più di una libreria trovata per "WiFi.h"
Usata: C:\Users\shc-user\AppData\Local\Arduino15\packages\arduino\hardware\mbed_portenta\3.4.1\libraries\WiFi
Non usata: C:\Program Files (x86)\Arduino\libraries\WiFi
Uso la libreria arduino-timer alla versione 2.3.1 nella cartella: C:\Users\shc-user\Documents\Arduino\libraries\arduino-timer 
Uso la libreria Arduino_MachineControl alla versione 1.1.0 nella cartella: C:\Users\shc-user\Documents\Arduino\libraries\Arduino_MachineControl 
Uso la libreria SPI nella cartella: C:\Users\shc-user\AppData\Local\Arduino15\packages\arduino\hardware\mbed_portenta\3.4.1\libraries\SPI (legacy)
Uso la libreria ArduinoRS485 alla versione 1.0.2 nella cartella: C:\Users\shc-user\Documents\Arduino\libraries\ArduinoRS485 
Uso la libreria Wire nella cartella: C:\Users\shc-user\AppData\Local\Arduino15\packages\arduino\hardware\mbed_portenta\3.4.1\libraries\Wire (legacy)
Uso la libreria WiFi alla versione 1.0 nella cartella: C:\Users\shc-user\AppData\Local\Arduino15\packages\arduino\hardware\mbed_portenta\3.4.1\libraries\WiFi 
Uso la libreria SocketWrapper alla versione 1.0 nella cartella: C:\Users\shc-user\AppData\Local\Arduino15\packages\arduino\hardware\mbed_portenta\3.4.1\libraries\SocketWrapper 
"C:\\Users\\shc-user\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\arm-none-eabi-gcc\\7-2017q4/bin/arm-none-eabi-size" -A "C:\\Users\\shc-user\\AppData\\Local\\Temp\\arduino_build_548691/TechIO_v3.ino.elf"
Lo sketch usa 326724 byte (41%) dello spazio disponibile per i programmi. Il massimo è 786432 byte.
Le variabili globali usano 78520 byte (14%) di memoria dinamica, lasciando altri 445104 byte liberi per le variabili locali. Il massimo è 523624 byte.
Forzo il reset aprendo e chiudendo a 1200bps la porta COM2
PORTS {COM2, } / {COM2, } => {}
PORTS {COM2, } / {COM2, } => {}
PORTS {COM2, } / {COM2, } => {}
PORTS {COM2, } / {COM2, } => {}
PORTS {COM2, } / {COM2, } => {}
PORTS {COM2, } / {COM2, } => {}
PORTS {COM2, } / {COM2, } => {}
PORTS {COM2, } / {COM2, } => {}
PORTS {COM2, } / {COM2, } => {}
PORTS {COM2, } / {COM2, } => {}
PORTS {COM2, } / {COM2, } => {}
PORTS {COM2, } / {COM2, } => {}
PORTS {COM2, } / {COM2, } => {}
PORTS {COM2, } / {COM2, } => {}
PORTS {COM2, } / {COM2, } => {}
PORTS {COM2, } / {COM2, } => {}
PORTS {COM2, } / {COM2, } => {}
PORTS {COM2, } / {COM2, } => {}
PORTS {COM2, } / {COM2, } => {}
PORTS {COM2, } / {COM2, } => {}
Uploading using selected port: COM2
C:\Users\shc-user\AppData\Local\Arduino15\packages\arduino\tools\dfu-util\0.10.0-arduino1/dfu-util --device 0x2341:0x035b -D C:\Users\shc-user\AppData\Local\Temp\arduino_build_548691/TechIO_v3.ino.bin -a0 --dfuse-address=0x08040000:leave 
dfu-util 0.10-dev

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2021 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/

Warning: Invalid DFU suffix signature
A valid DFU suffix will be required in a future dfu-util release
No DFU capable USB device available
Errore durante il caricamento dello sketch

Not sure, but I guess I have seen: when USB-C is used as UART and the terminal program, e.g. TeraTerm is still running and connected - even double press RESET and fading green LED - the DFU bootloader does not find.
Close your UART terminal first.

Also seen: with my FW flashed, a double RESET press does not result in a fading flashing LED.
Instead I get a solid green LED.
I have to power cycle the board - but very quickly: unplug the USB-C and plug in again, pretty fast as you can. Now I have fading green flashing LED and bootloader works.

Hi tjaekel,

Thanks for the feedback, I can't figure out what is the problem...

Andrea

Hi @e500. One possible cause of this error is not having the drivers installed. They should be installed automatically by Arduino IDE when you install the "Arduino Mbed OS Portenta Boards" platform, so it might be somewhat of a long shot, but I think it is worth a try to manually install the drivers anyway. I'll provide instructions:

Even though it is somewhat of a roundabout approach, I think the simplest way is to uninstall and then reinstall the platform. The previously downloaded files are cached, so it should be relatively quick:

  1. Select Tools > Board > Boards Manager from the Arduino IDE menus.
  2. Wait for the updates to finish.
  3. Scroll down through the list of boards platforms until you see "Arduino Mbed OS Portenta Boards". Click on it.
  4. Click the Remove button.
  5. Wait for the removal to finish.
  6. Click the Install button on the "Arduino Mbed OS Portenta Boards" entry.
  7. Wait for the installation to finish.
  8. (possibly depending on your Windows security settings), you will see a "User Account Control" dialog about dpinst-amd64.exe asking whether you "want to allow this app from an unknown publisher to make changes to your device". Click the Yes button.
    This is the tool that installs the driver.
  9. Click the Close button.

Now try uploading to your board again. Hopefully the error will no longer occur.

Hi @ptillisch thanks for your feedback.

I've tried with a old Intel Centrino Duo, with Windows 7 and with a different cable but with the same identical issue. I've tried compiling an empty sketch on Portenta H7 processor.

This sound me very strange... I've bought 30 bricked boards? (I've tried 2 boards with 3 PCs) on Monday I'll try with an other board.

Thanks,
Andrea

You are welcome. Did you try what I suggested?

Did all three PCs use Windows 7?

Hi to everybody, finally I've done it! I've tried with a third cable (a very short and low budget one)

The other two cables (apparently high quality and 50cm long) won't work. The third (robbed to my son's low quality bluetooth speaker charger) worked like a charme.

Anyone can tell me why? I'm interested to understand in depth.
There is a kind of cable suitable for the connection to the Portenta boards?

Thanks,
Andrea

Oh, yes: you have to install the bootloader USB drivers:
They are located in: C:\Users<yourUserName>\AppData\Local\Arduino15\packages\arduino\hardware\mbed_portenta\3.0.1\drivers

I have seen this as well: on a fresh computer, Arduino IDE not installed - the flash loader does not work due to missing drivers (you see USB device with no drivers available - check via Device Manager).

I tried to separate the drivers, for "stand-alone" install (w/o Arduino IDE install needed):
bootloader_drivers.zip (692.6 KB)

I know this topic was months ago but in regard to the cable(s)... Often 'charge cables' don't work as they need to be 'data cables'. The charge only cables do not have the extra wires in the cable to carry the data - they only have two wires for charging.

3 Likes

One more SOLUTION to this:

-> Make sure you have ESP32 board with ESP32 package
-> If you are using ESP8266 board DONT use ESP32 package (Use the esp8266 package)

This sounds like a stupid mistake but this mistake took me 2 hours of my life and the output of this mistake is the same annoying:
"dfu-util: No DFU capable USB device available
Failed uploading: uploading error: exit status 74"

1 Like

And what if I still get this message?
I just bought a Nano ESP32 and I have the right package installed.
Any ideas?

Did you tryied to press reset button twice before start downloading?

Yes, I did that.

Hi @kalidoka. I'm going to ask you to provide the full verbose output from an upload attempt.


:exclamation: This procedure is not intended to solve the problem. The purpose is to gather more information.


Please do this:

  1. Select File > Preferences... (or Arduino IDE > Settings... for macOS users) from the Arduino IDE menus.
    The "Preferences" dialog will open.
  2. Uncheck the box next to Show verbose output during: compile in the "Preferences" dialog.
  3. Check the box next to Show verbose output during: ☐ upload.
  4. Click the "OK" button.
    The "Preferences" dialog will close.
  5. Attempt an upload, as you did before.
  6. Wait for the upload to fail.
  7. You will see an "Upload error: ..." notification at the bottom right corner of the Arduino IDE window. Click the "COPY ERROR MESSAGES" button on that notification.
  8. Open a forum reply here by clicking the "Reply" button.
  9. Click the <CODE/> icon on the post composer toolbar.
    This will add the forum's code block markup (```) to your reply to make sure the error messages are correctly formatted.
  10. Press the Ctrl+V keyboard shortcut (Command+V for macOS users).
    This will paste the error output from the upload into the code block.
  11. Move the cursor outside of the code block markup before you add any additional text to your reply.
  12. Click the "Reply" button to post the output.

there is no error code.
This is all I see: dfu-util: No DFU capable USB device available

Please follow the instructions I provided in my previous reply. Once you have done that, I'll provide further assistance.

I did just that. Nothing happens after the compiling. Only that message.

Ah, I forgot there is a bug in Arduino IDE 2.3.3 that causes it to behave as if the upload was successful even when it failed. That bug makes it so you can't follow my instructions.

Please follow these instructions:

  1. Attempt an upload, as you did before.
  2. Wait for the upload to fail/finish.
  3. Right click on the black "Output" panel at the bottom of the Arduino IDE window.
    A context menu will open.
  4. Select Copy All from the menu.
  5. Open a forum reply here by clicking the "Reply" button.
  6. Click the <CODE/> icon on the post composer toolbar.
    This will add the forum's code block markup (```) to your reply to make sure the error messages are correctly formatted.
  7. Press the Ctrl+V keyboard shortcut (Command+V for macOS users).
    This will paste the upload output into the code block.
  8. Move the cursor outside of the code block markup before you add any additional text to your reply.
  9. Click the "Reply" button to post the output.
Sketch uses 286189 bytes (9%) of program storage space. Maximum is 3145728 bytes.
Global variables use 30552 bytes (9%) of dynamic memory, leaving 297128 bytes for local variables. Maximum is 327680 bytes.
"/Users/petervanderfeen/Library/Arduino15/packages/arduino/tools/dfu-util/0.11.0-arduino5/dfu-util" --device 0x2341:0x0070 -D "/private/var/folders/p1/yym14l2n2kb3w95fmxcrhc780000gn/T/arduino/sketches/08A7F18470E18519E93782C40B234B69/Blink.ino.bin" -Q
dfu-util 0.11-arduino4

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2021 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/

dfu-util: No DFU capable USB device available

OK, great. I'm going to ask you to provide some additional information that might help us to identify the problem:

  1. Connect the Nano ESP32 board to your computer with the USB cable.
  2. Open Arduino IDE's Tools > Port menu.

Please add a reply here on this forum thread to tell us what label (if any) you see after the item for the board's port in the menu.

It might be labeled as one of the following things:

  • "(Arduino Nano ESP32)"
  • "(ESP32 Family Device)"
  • A random ESP32-based board (e.g., "(DFRobot Beetle ESP32-C3)", "(ESP32-S3-Box)", "(ESP32C3 Dev Module)", "(LOLIN S3)", "(WiFiduino32S3)", etc.)

Or you might see only the port name (e.g., "COM42", "/dev/cu.usbmodem211410", "/dev/ttyACM0") in the menu, without any label.