.avrdude: butterfly_recv(): programmer is not responding

Hi,

I was able to upload sketches to my Arduino Leonardo in both Mac and Windows environment, and also I can use visual micro to upload and debug. However, just now I cannot finish the uploading with the error below when using visual micro. When I switch back to arduino IDE, there is no error but only staying at the uploading. When uploading start, the LED flashed, but then got the error message.

Did I break the bootloader or something else? Is there any fix for this? Thanks!

"Compiling 'Blink' for 'Arduino Leonardo'
Binary sketch size: 4,806 bytes (used 17% of a 28,672 byte maximum) (2.03 secs)
Minimum Memory Usage: 153 bytes (6% of a 2560 byte maximum)
Compiling debug version of 'Blink' for 'Arduino Leonardo'
Binary sketch size: 5,796 bytes (used 20% of a 28,672 byte maximum) (4.70 secs)
Minimum Memory Usage: 310 bytes (12% of a 2560 byte maximum)
Uploading to I/O board using 'COM4'
Connecting to programmer: .avrdude: butterfly_recv(): programmer is not responding"

When I upload with verbose output enabled, got the message:

avrdude: usbdev_open(): did not find any USB device "usb"

Maybe some problem with my usb driver? By the way, I cannot install usb driver in new usb port, but only the previous usb ports (installed before the issue) can be used.

There are additional errors when I tried again to upload on Mac.

Arduino: 1.6.3 (Mac OS X), Board: "Arduino Leonardo"

Sketch uses 23,904 bytes (83%) of program storage space. Maximum is 28,672 bytes.
Global variables use 1,793 bytes (70%) of dynamic memory, leaving 767 bytes for local variables. Maximum is 2,560 bytes.
processing.app.debug.RunnerException: Couldn't find a Board on the selected port. Check that you have the correct port selected. If it is correct, try pressing the board's reset button after initiating the upload.
at cc.arduino.packages.uploaders.SerialUploader.waitForUploadPort(SerialUploader.java:234)
at cc.arduino.packages.uploaders.SerialUploader.uploadUsingPreferences(SerialUploader.java:130)
at processing.app.debug.Compiler.upload(Compiler.java:165)
at processing.app.Sketch.upload(Sketch.java:1260)
at processing.app.Sketch.exportApplet(Sketch.java:1202)
at processing.app.Sketch.exportApplet(Sketch.java:1174)
at processing.app.Editor$DefaultExportHandler.run(Editor.java:2471)
at java.lang.Thread.run(Thread.java:745)
Couldn't find a Board on the selected port. Check that you have the correct port selected. If it is correct, try pressing the board's reset button after initiating the upload.

This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences.

Arduino: 1.6.3 (Mac OS X), Board: "Arduino Leonardo"

Sketch uses 23,904 bytes (83%) of program storage space. Maximum is 28,672 bytes.
Global variables use 1,793 bytes (70%) of dynamic memory, leaving 767 bytes for local variables. Maximum is 2,560 bytes.
Forcing reset using 1200bps open/close on port /dev/cu.usbmodem1421
PORTS {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.Bluetooth-Modem, /dev/cu.usbmodem1421, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.Bluetooth-Modem, /dev/tty.usbmodem1421, } / {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.Bluetooth-Modem, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.Bluetooth-Modem, } => {}
PORTS {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.Bluetooth-Modem, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.Bluetooth-Modem, } / {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.Bluetooth-Modem, /dev/cu.usbmodem1421, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.Bluetooth-Modem, /dev/tty.usbmodem1421, } => {/dev/cu.usbmodem1421, /dev/tty.usbmodem1421, }
Found upload port: /dev/cu.usbmodem1421
/Applications/Arduino.app/Contents/Java/hardware/tools/avr/bin/avrdude -C/Applications/Arduino.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf -v -patmega32u4 -cavr109 -P/dev/cu.usbmodem1421 -b57600 -D -Uflash:w:/var/folders/f2/09nyr48n6rb6jp_fcd5wrrx00000gp/T/build8815969028343055967.tmp/HexNanoMWC_QUAD.cpp.hex:i

avrdude: Version 6.0.1, compiled on Mar 30 2015 at 12:15:29
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2009 Joerg Wunsch

System wide configuration file is "/Applications/Arduino.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf"
User configuration file is "/Users/xinpengyu/.avrduderc"
User configuration file does not exist or is not a regular file, skipping

Using Port : /dev/cu.usbmodem1421
Using Programmer : avr109
Overriding Baud Rate : 57600
AVR Part : ATmega32U4
Chip Erase delay : 9000 us
PAGEL : PD7
BS2 : PA0
RESET disposition : dedicated
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :

Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack


eeprom 65 20 4 0 no 1024 4 0 9000 9000 0x00 0x00
flash 65 6 128 0 yes 32768 128 256 4500 4500 0x00 0x00
lfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
hfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
efuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
lock 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00

Programmer Type : butterfly
Description : Atmel AppNote AVR109 Boot Loader

Connecting to programmer: .
Found programmer: Id = "VMDPV_1"; type = E
Software Version = V.M; Hardware Version = D.P
avrdude: error: buffered memory access not supported. Maybe it isn't
a butterfly/AVR109 but a AVR910 device?
Problem uploading to board. See http://www.arduino.cc/en/Guide/Troubleshooting#upload for suggestions.

This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences.

So happy that I have fixed this problem, but I ready don't know how I fixed it. I tried changing different usb cable, tried switch different programer several times, then it works now even for old usb cable and any programer. It is really strange and seems only occurred on Leonardo.