Stuck uploading to Arduino UNO

I got similar problem, my arduino UNO was working correctly but during some experiments it suddenly stopped working, it's stuck on uploading, i've tried it with simple codes and the same happen. The LEDs are on, but when i click the reset button nothing happens. What should I do?
I think i may have unplugged the USB cable when i was uploading a program.

Hi @mateusfelima. You described the Arduino board you are uploading to as "Uno". Something that can be confusing is there are multiple boards with "UNO" in their name. We need to be certain of exactly which one you have. The reason is that the problem might be caused by the IDE not being correctly configured for your specific board.

Please tell us which of the following boards you are attempting to upload to:

If you aren't sure which one you have, you can provide a picture of the board or a link to the place you bought it from and we'll see if we can identify it.

Sure, it's the UNO R3

I'm going to ask you to post the full verbose output from an upload.


: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: β˜‘ compilation 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 hang, as indicated either by no new output being printed in the black "Output" panel at the bottom of the Arduino IDE for some time, or by the same messages being printed repeatedly there.
  7. Right click on the black "Output" panel at the bottom of the Arduino IDE window.
    A context menu will open.
  8. From the context menu, click Copy All.
  9. Open a forum reply here by clicking the "Reply" button.
  10. 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.
    Code block icon on toolbar
  11. Press the Ctrl+V keyboard shortcut (Command+V for macOS users).
    This will paste the upload output into the code block.
  12. Move the cursor outside of the code block markup before you add any additional text to your reply.
  13. Click the "Reply" button to post the output.
Sketch uses 924 bytes (2%) of program storage space. Maximum is 32256 bytes.
Global variables use 9 bytes (0%) of dynamic memory, leaving 2039 bytes for local variables. Maximum is 2048 bytes.
"C:\Users\Mateus\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/bin/avrdude" "-CC:\Users\Mateus\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf" -v -V -patmega328p -carduino "-PCOM5" -b115200 -D "-Uflash:w:C:\Users\Mateus\AppData\Local\Temp\arduino\sketches\924A1396C03AE17182CC3A94CB4F1F27/Blink.ino.hex:i"

avrdude: Version 6.3-20190619
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Users\Mateus\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf"

         Using Port                    : COM5
         Using Programmer              : arduino
         Overriding Baud Rate          : 115200
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x93
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x93
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x93
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x93
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x93
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x93
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x93
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x93
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x93
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x93

avrdude done.  Thank you.

Failed uploading: uploading error: exit status 1

In this case i'm using the blink code, i've verified if i'm using the right port and if arduino uno is selected in the IDE. I tried this same code in another arduino and it's working.

Please try this experiment and then report back with the results:


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


  1. Connect the Arduino board to your computer with a USB cable.
  2. Press and release the button on the Arduino board that is marked "RESET".

Now please reply here on the forum thread with the answer to the following question:

  • Did you see the "L" LED blink multiple times quickly immediately after you released the "RESET" button?

Nothing happens when i click RESET, but the LEDs are on

This result tells us that one of the following two things is happening:

  • The microcontroller on the board is not running.
  • The bootloader (a program stored in a special area of memory in the microcontroller that handles sketch uploads) was somehow erased or corrupted.

It is possible for a short or external circuitry connected to the Arduino board to prevent the primary microcontroller from running.

Make sure the board is not sitting on anything conductive that could short the contacts on the bottom of the board. Make sure there isn't any conductive debris (e.g., strands of wire or component leads) on the board or on the surface the board is sitting on.

If you have a shield or any external circuitry or components connected to your Arduino board, try this experiment:

  1. Disconnect the USB cable of the Arduino board from your computer.
  2. Disconnect any shields, modules, external circuitry, etc. from your board.
  3. Connect the Arduino board to your computer with a USB cable.

Now try uploading a sketch to the board again. Does the upload succeed?

This experiment will determine whether the upload error was caused by a problem in the external circuitry. If so, you can then focus your attention on identifying the specific problem with the circuit and resolving it.

This topic already exist and @ptillisch was helping me in this issue, but i'm limited to three answers in the same topic because i'm a new user.
In summary, my arduino UNO R3 was working correctly but suddenly it stopped, when i try to upload any sketch to it, even if nothing is connected to its pins, it gets stuck on "uploading..."
I think this may have started when i unintentionally hit the usb cable while it was uploading and disconnected it, so maybe it got corrupted.

This is the full verbose output from the upload:

Sketch uses 924 bytes (2%) of program storage space. Maximum is 32256 bytes.
Global variables use 9 bytes (0%) of dynamic memory, leaving 2039 bytes for local variables. Maximum is 2048 bytes.
"C:\Users\Mateus\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/bin/avrdude" "-CC:\Users\Mateus\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf" -v -V -patmega328p -carduino "-PCOM5" -b115200 -D "-Uflash:w:C:\Users\Mateus\AppData\Local\Temp\arduino\sketches\924A1396C03AE17182CC3A94CB4F1F27/Blink.ino.hex:i"

avrdude: Version 6.3-20190619
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Users\Mateus\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf"

         Using Port                    : COM5
         Using Programmer              : arduino
         Overriding Baud Rate          : 115200
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x93
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x93
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x93
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x93
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x93
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x93
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x93
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x93
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x93
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x93

avrdude done.  Thank you.

Failed uploading: uploading error: exit status 1

I've tried to press RESET button too, but nothing happens. The arduino's LEDs are on, and they don't blink.
Nothing is connected to the board's pins and it's not sitting on anything conductive.
I verified if i'm using the correct port and if the "Arduino UNO" is selected at the IDE. I tried the same simple code to another Arduino UNO i have and it works normally.

I have merged the topics. @mateusfelima creating multiple topics to circumvent the forum's security features is not allowed.

Instead, you should complete the very trivial requirements to increase the "trust level" of your forum account:

https://blog.discourse.org/2018/06/understanding-discourse-trust-levels/#trust-level-1-basic

Get to trust level 1 by…

  • Entering at least 5 topics
  • Reading at least 30 posts
  • Spend a total of 10 minutes reading posts

The forum software will send you a message once you have earned trust level 1 ("Basic user"). After that you will no longer be subject to the restrictions that are imposed on users with trust level 0 ("New user").

There is a program named a "bootloader" that is stored in a special area of the memory in the primary microcontroller of your Arduino board. This program receives the data sent by the computer when you upload a sketch to the board.

The symptoms you describe indicate that the bootloader is not running when it should be activated. This could have either of the following causes:

  • The memory in the microcontroller where the bootloader was stored has somehow been erased or corrupted.
  • There is physical damage to the microcontroller or its support circuitry.

If the cause is a missing bootloader, the board might be recoverable by a "Burn Bootloader" operation.

Prepare ISP programmer

You will need an ISP programmer. If you don't have a programmer, you can use a spare Arduino board as an "Arduino as ISP" programmer.

Arduino as ISP

The following instructions are for using an Arduino board as an "Arduino as ISP" programmer. If you have a dedicated programmer, you can skip to the next set of instructions.

Although the "Arduino as ISP" only works for programming targets of the AVR architecture, you can also use boards of a variety of architectures (e.g., "AVR", "SAMD", "megaAVR") as an "Arduino as ISP" programmer.


β“˜ In the instructions below, the board used as an "Arduino as ISP" is referred to as the "programmer board". The board the bootloader is being burned on is referred to as the "target board".


  1. Disconnect the USB cable of the Arduino boards from your computer.

  2. Make the following connections between the "programmer board" and the "target board".
    β“˜ Refer to the "Connections" table on the SPI library reference page to determine the pin numbers.

    Programmer Target
    CIPO (AKA "MISO") CIPO
    VCC 5V (VCC on 3.3 V boards)
    SCK SCK
    COPI (AKA "MOSI") COPI
    10 RESET
    GND GND
  3. Connect the "programmer board" to your computer with a USB cable.

  4. Select File > Examples > 11.ArduinoISP > ArduinoISP from the Arduino IDE menus.
    The "ArduinoISP" sketch will open in Arduino IDE.

  5. Select your "programmer board" from Arduino IDE's Tools > Board menu.

  6. Select the port of your "programmer board" from Arduino IDE's Tools > Port menu.

  7. Select Sketch > Upload from the Arduino IDE menus.

  8. Wait for the upload to finish.

You are now ready to burn the bootloader using your "Arduino as ISP" programmer.

Burn Bootloader

Instructions for burning the bootloader:

β“˜ It is not possible to do this via Arduino Cloud Editor. You will need to use Arduino IDE or Arduino CLI.

  1. Connect an ISP programmer to your Arduino board.
    If you are using an "Arduino as ISP", then you have already connected it according to the previous instructions.
  2. Select the target board from the Tools > Board menu and any other custom Tools menus (e.g., Tools > Processor).
  3. Select the appropriate programmer from the Tools > Programmer menu.
  4. Tools > Burn Bootloader
  5. Wait for the process to finish successfully.
  6. Disconnect the USB cable of the programmer from your computer.
  7. Disconnect the programmer from the "target board".

Now connect the "target board" to your computer with a USB cable, select its port from the Tools > Port menu, and try uploading a sketch as usual.

Conclusion

Now connect the "target board" to your computer with a USB cable and try uploading again. Does the upload succeed now?

Thanks for your help! But sadly it didn't work...
This time i got this verbose output:

"C:\Users\Mateus\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/bin/avrdude" "-CC:\Users\Mateus\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf" -v -patmega328p -cstk500v1 -PCOM7 -b19200 -e -Ulock:w:0x3F:m -Uefuse:w:0xFD:m -Uhfuse:w:0xDE:m -Ulfuse:w:0xFF:m

avrdude: Version 6.3-20190619
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Users\Mateus\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf"

         Using Port                    : COM7
         Using Programmer              : stk500v1
         Overriding Baud Rate          : 19200
         AVR Part                      : ATmega328P
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PC2
         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  3600  3600 0xff 0xff
           flash         65     6   128    0 yes     32768  128    256  4500  4500 0xff 0xff
           lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           lock           0     0     0    0 no          1    0      0  4500  4500 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 : STK500
         Description     : Atmel STK500 Version 1.x firmware
         Hardware Version: 2
         Firmware Version: 1.18
         Topcard         : Unknown
         Vtarget         : 0.0 V
         Varef           : 0.0 V
         Oscillator      : Off
         SCK period      : 0.1 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x000000 (retrying)

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x000000 (retrying)

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x000000
avrdude: Yikes!  Invalid device signature.
         Double check connections and try again, or use -F to override
         this check.


avrdude done.  Thank you.

Failed chip erase: uploading error: exit status 1

@ptillisch Should I try to use this "-F" suggested? if yes, how do I do it?

No, the -F flag is only used in certain rare cases where the AVRDUDE tool is able to successfully read the chip signature, but that signature is incorrect due to the memory on the chip where it is stored somehow having become corrupted.

In this case where the read signature was 0x000000, this actually means that AVRDUDE was not able to establish any communication at all with the chip, meaning that even if you configured the command to ignore the signature chip failure, it would only fail immediately after that step in the operation due to the lack of communication.

Double check all your electrical connections between the programmer board and the target board. Jumper wires can sometimes be damaged or defective in a way that causes there to be no electrical continuity across the wire. You can check your wires with the continuity tester on a multimeter, or swap out the current jumper wires with other wires from your collection to make sure this isn't the cause of the error.

I checked the wires' connection and their continuity with a multimeter. I made the connections just like shown here: https://docs.arduino.cc/built-in-examples/arduino-isp/ArduinoISP/
I tried to burn uploader again, but i got the same output.

The problem is probably caused by the Arduino board having suffered permanent physical damage. I recommend you carefully review what you were doing with the board the last time it was in a working state. You may be able to identify the cause of the damage and in this way profit from the mishap by gaining knowledge that will allow you to avoid subjecting boards to the same conditions in the future.

Unless you have the right tools on hand and the skills to use those tools, repair of the board will not be feasible. I suggest you attach a note to the damaged board describing what is wrong with it and put it in your electronics salvage bin. Then purchase a replacement board.

You can support the work Arduino does to provide free open source software, documentation, and hardware designs to the community by purchasing official hardware. It is available from these sources:

Okay, i think it may have been damaged when i accidentally unpluged while a sketch was being uploaded. Or maybe my sketch was sending data "too fast" to MATLAB while i had two "attachInterrupt()" routines.
Thank you for all your assistence!