Upload Timeout Error on Mega 2560 - Not Sure What Changed

I recently started prototyping a new system with a Mega 2560. This is my 4th arduino system, and my 1st one using a Mega.

I have a simple program that I have successfully loaded on the Mega (it toggles some digital pins and sends some serial messages). Something's changed, and now I can't upload new images to the board. When I try to upload, I get the following error messages:


Binary sketch size: 4560 bytes (of a 258048 byte maximum)
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer
avrdude: stk500v2_command(): failed miserably to execute command 0x10
avrdude: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.

avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer
avrdude: stk500v2_command(): failed miserably to execute command 0x11
avrdude: stk500v2_disable(): failed to leave programming mode

I'm trying to track down the source of the problem. Here's what I know:

  1. The Green "on" light is on when the board is powered up.
  2. The "L" light flashes when I power up the board (indicating that the bootloader is present).
  3. The code that I loaded on the board still runs (I can see the digital pins toggling).
  4. I have the arduino IDE pointing to the correct COM port and setup for the Mega board
  5. I have tried two different PCs
  6. I have disconnected all of the external circuits that were attached to the Mega

Does anyone have any debug ideas? I have a scope, so I can capture an image of the serial lines during upload if that would help.

When you try to upload a sketch do the Receive and/or Transmit lights on the Arduino blink? If not you may not be getting serial communication. Try a loopback test (connect D0 to D1 and see if stuff you type in Serial Monitor comes back as it should).

The RX light flashes once when I try to upload or send a message for loop-back testing. When I have a jumper between TX0 and RX0 and send a message through the serial monitor, I don't see any loop-back results and I don't see the TX light flash.

I figured out what's causing the problem. The TX signal isn't making it to the ATMEGA8U2-MU that translates serial to USB. The TX pin on the ATMEGA2560-16AU is working, and signals from that pin make it all the way to the ATMEGA2560-16AU side of the RN4A resistor next to the ATMEGA8U2-MU, but the signal doesn't make it to the ATMEGA8U2-MU side of the resistor. It looks like the ATMEGA8U2-MU is messing up the signal.

Anyone else had problems with the ATMEGA8U2-MU?

Either the resistor is bad (unlikely), the 8U2 is bad (very bad) or the firmware is corrupt.

I'm having the exact same problem. I wrote and updated code for a day, then moved the arduino to another computer, and I get the same errors. The original code still executes, I just can't upload new code to the board. Is there a way to reinstall the firmware?

Google "Arduino DFU":

I fixed the problem I was having by getting the newest build of the Arduino software and reinstalling the driver from the Arduino folder.

I have the same issue with the Mega2560R3 board.

I have WinXP SP3 on a ThinkPad T-40. I have tried on a different machine with the same errors.

I tried the 'press the reset button' just after hitting the upload. Four tries and Blink finally uploaded.

Blink is running, but I wanted t play and changed the timing pause statements, but have not been able to upload.

I have tried the other ISP with no result.

My Com port shows Arduino Mega 2560 R3 (COM6) and the driver is usbser.sys Microsoft Corp 5.1.2600.5512(xpsp.080413-2108)

USB\VID_2341&PID_0042\64934333135351418100

I have selected the correct board and compost, and have used the AVRISP mkII

The RX light blinks once in a while.

Thoughts to help me get this running?

Ideas

Also, the loop-back test worked fine.

I have continued to troubleshoot, using any information from the forums.

It appears that I can upload more reliably if I press the reset just as soon as I can after the Binary Sketch Size message appears.

This seems kludgey, but at least I can upload.

I see posts about auto reset, etc. should (in a perfect world) this be working with an auto reset?

Thanks

HMM, it gets weirder and weirder.

I down loaded arduino-0023, made no changes to the port or hardware or preferences file and it works perfectly.

So, I renamed the avr directory in ...\arduino-1.0\hardware\tools and then copied the avr directory from ...\arduino-0023\hardware\tools directory into the ...\arduino-1.0\hardware\tools directory, and it works fine.

Conclusion, the issue is with the new version of avrdude.

The timeout error is a known issue.

Google it.

Anyone have a verified and working fix? I've had my Arduino for about 4 hours and just got hit with this (and I'm not using any !!! in my code, which was allegedly the cause of the issue). This has been going on for months now and I gotta be honest - I'm pretty frustrated that the (presumably bootloader) issue still seems to be unfixed.

Thanks for the help. I have been struggling with this same problem and it seems many have as well. I downloaded the arduino 0023 software and I got the same results as you, so I copied and renamed as you suggested and the problem is fixed. So far so good.

I was having this problem too. Luckily I hadn't erased my old 0022 program. Going back to that fixed the problem. I really ought to remember: "Never update a program that works!"

A lot of people seem to be having problems with the new version, including me. sigh Hopefully they figure it out..

Guys. I used the avrdude.exe and avrdude.conf file from 022 and it worked fine for me. There seems to be a bug in avrdude 5.11 that is causing some of these issues.

I believe I have found a fix. But I had to compile an new avrdude.exe. Here is a patch for avrdude-5.11.1/stk500v2.c

73c73
< #define SERIAL_TIMEOUT 2

#define SERIAL_TIMEOUT 5
76c76
< #define RETRIES 5


#define RETRIES 33
1317a1318,1325

printf("trying this reset stuff now..\n");
usleep(50*1000);

serial_set_dtr_rts(&pgm->fd, 1);
usleep(501000);
serial_set_dtr_rts(&pgm->fd, 0);
usleep(50
1000);

where did you find this file ?? do i just add these?

AVRDUDE 5.11.1 can be found at Index of /releases/avrdude/

I provided a patch that can be applied to the file I mentioned. But you need to apply the patch and recompile avrdude for it to work. But my upload success rate went from 40% to 100%. The code now matches more closely the way the old version worked. It's a pain. The arduino people should recognize there is a problem, and fix it.

JesseJay