user37: I made an awesome program the other day, and I wanted to upload it to my Arduino. After clicking the upload button, some mean dude named avr came along and stopped me, saying:

avrdude: stk500_getsync(): not in sync: resp=0x00

All I want to do is just upload my program, but avr won't let me. He's even unintelligible, so can someone tell me what the heck he's trying to say and how to get rid of him?

i.e.:
Whenever I try to upload a program to my Arduino, I get this error message:

avrdude: stk500_getsync(): not in sync: resp=0x00

What does this mean, and how can I fix it?

user42384: After lots of unplugging, checking ports, restarting IDE, etc. The ting which seemed to make a difference fixing this fault with Arduino Mega 2560 was to uninstall the windows USB arduino driver then reinstall it usig the driver here & select manually from the list>com ports>arduino
http://drivers.softpedia.com/get/Other-DRIVERS-TOOLS/Others/Arduino-Mega-2560-USB-Driver-1110-for-Windows-7-64-bit.shtml
I may have tested it on my uno then back to the mega so there's a small chance talking to the uno made AVRDUDE happy but unlikely. 

user39212: When I get a problem uploading to my boards I upload a different program like the blink example.  This seems to reset something and I am then able to upload my own program (which is quite large).  
It might be worth trying this to see if it works in your case, although I have no idea why it works.

user39804: I faced the same problem for some code today and I solved it as follows: 
1- First I ran  a basic LED blinking code. It gave the same error. It confirms that  the error is in uploading  and has nothing to do with compiling. I also checked my code was compiling fine. 
2- I took another board, but it was working fine on this PC. That  means computer and the USB wire is OK.           
3- I connected the faulty board to another PC, and surprisingly, there was no such error in uploading. That gave me hint about issues in driver in the first PC. 
4- So I uninstalled the driver and re-installed it on the first PC by downloading from here 
( make sure that while installing the driver from this link, you keep your board  connected to the PC)
It worked fine now :-)       

user49757: I had this error in my Linux Mint 17.3 laptop with Arduino Nano
avrdude: stk500_getsync(): not in sync: resp=0x00
Solved:

removed all that had 'arduino' or 'avr' in its name
removed directories .arduino and .arduino15 (Note the dot in the name)
removed ver 1.8.7 with uninstall of the packet
apt-get install arduino (ver 1.1.0)
tested with a simple sketch (everything OK)
installed ver 1.8.7 with the install of the packet
compiled.
selected ATmega328p(Old bootloader) for processor, Arduino Nano for card and /dev/ttyUSB0 for port
=> IT WORKS !

It seems that the 'Old bootloader' was the trick in this case.
I have now both ver 1.1.0 an 1.8.7, who cares. 

user61967: What I tried was to not connect one Ground of one board to the other ground on the other board. This stopped the problem for me.

user68788: If you use arduino-cli and a Arduino Nano clone, you can change the bootloader to the old one, as said in other answers, by using the following command to upload to the Arduino:
arduino-cli upload -v -p /dev/ttyUSB0 --fqbn arduino:avr:nano:cpu=atmega328old program_name

Explanation:




command
explanation




arduino-cli
call arduino-cli


-v
Use verbose output


-p /dev/ttyUSB0
The port, use arduino-cli board list to find the right port


--fqbn arduino:avr:nano:cpu=atmega328old
Use avr board library, nano board and the Atmega328 CPU with the old bootloader


program_name
Replace this with the name of the program you want to upload




user26649: There is also the possibility of the the controller itself being placed the wrong way in the socket on the Arduino. This can be dangerous for the controller (which may get zapped) but, in my case, it only gave the out of sync error, preventing me from uploading code.
So just check if the notch on the IC is in the right direction (you can cross check with images of board online). The notch on the Uno's controller should point towards edge of board.

user38151: Just had this same error with a brand new Mini Pro.  Since the default blink program that came preloaded with most Arduino is running, I know that the unit is probably OK.
So I inspected the headers I just soldered one more time, and found that there was not enough solder on the TX0 pins.  After re-soldering every works.

user47158: I solved it by updating the boards (under "board manager")

user23939: An unusual one but I've been swapping out the microcontrollers a lot and i got this error when one wasn't seated correctly.. i was able to burn a few times but i guess it slipped back out - a little push on the back of the ATMega328 fixed it!  

user31287: I had this error come up too. It was the first time using a new Arduino Nano board after I had soldered on headers. Just tyring the Blink Sketch, nothing was connected to the board.
I found a tiny short of solder between the GROUND and RESET pins. I picked it off and then I could upload ok.
I suppose this might happen if you had the same short on a circuit somewhere.

user49096: I had a similar issue with my Uno board
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x90

Tried many methods 

Press reset before sending packets
different IDE versions
Change cable  
Change controller itself 
Loopback test

but all of the above failed.
I use Ubuntu 16.04.4 LTS 4.15.0-33-generic (while writing this comment). The CDC ACM module was not loaded, therefore no /dev/ttyACM0 device was created to select in Arduino IDE -> Tools -> Port
Therefore,
Get the module name and load it
$ lsusb 
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 2341:0043 Arduino SA Uno R3 (CDC ACM)
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub


$ sudo modprobe cdc-acm

The above command will insert the required module.
Now i'm able to select the right port and upload the code
Out of various solutions this worked for me, hope this helps someone too.

user17348: For people using Linux Mint I found that by selecting the "TTY SO" port instead of the one labeled "Arduino" it would work (I can't tell you exactly because I don't have that computer in front of me right now). 
Then the next time I used the Arduino I again got the same message so I switched back to the "Arduino" port and it has worked that way ever since.  
I am not as technically knowledgeable as the rest of you guys so I have no idea why this works or what the problem was, but it worked which is all I care about.  Maybe this will be useful to someone.

user23386: I uninstalled the IDE and drivers etc, installed it all again, then I ran the Arduino IDE as an administrator and set to run compatibility as windows 7 (I'm currently using 10).
I also changed the programmer to AVR ISP (I don't think this matters, but I changed it anyway).
All is working again... hopefully, this can help someone else out too. 

user7069: I had the exact same problem. I tried installing the IDE in another laptop and uploaded the program from that laptop. Problem solved. Then I came back to my laptop, uninstalled the IDE and re-install it.. it started working. 
However, I wasn't satisfied because I couldn't find the source of the problem... so I tried running everything again the same exact way... I found the problem but not sure if that can be the actual cause of it. 
In my project, I needed to carry out serial communication between arduino and MATLAB (GUI). In order to see/verify the output(type) of MATLAB (GUI) serial data, I used HYPERTERMINAL and also VIRTUAL SERIAL PORT EMULATOR. I noticed that every time when when hyperterminal is running or VSPE is running while my serial monitor is on it screws up the uploading feature of the program. I'm not sure if it's because of the VSPE or HYPERTERMINAL, but reinstalling the IDE worked for me.

user7061: I've had the same message. Every time it has been solved by selecting the right port ie USB under the menu Tools then Ports. Its a simple step but I always forget. I'll unplug the Arduino to stop the current program, plug it in again to my computer to upload the new program and get the error, panic, curse, and only then, remember.

user8: If none of the above steps work, try reinstalling Avrdude and the avr-gcc compiler. I had to do this after my Mega started suffering from this.
If you installed Avrdude and avr-gcc separately, simply uninstall them. if not, you may have to reinstall the Arduino IDE. These steps will depend on your operating system.

user19679: In my case I hadn't wired the RTS pin of the FTDI chip to a capacitor which went to the RST pin of the Arduino Pro Mini.  Once I installed this connection, I no longer got the error and I was able to upload code.
Nick Gammon explains this in his forum.
I've added a picture of where/how the capacitor should be placed.


user46: Unfortunately, it can also mean that you burned your microcontroller. Were you doing anything dangerous right before you tried to upload a new sketch? Is the microcontroller still working, with its previously loaded sketch?

user43106: Another fix:
Change Tools->Processor->Atmega 328P to Atmega 328P (Old Bootloader). Remind that the Processor option is only available when you select some specific Boards at Tools>Board. 
This worked for my Arduino Nano with CH340, using Arduino IDE 1.8.5 under Linux Ubuntu 17.10. Besides, this will probably happen if you use IDE 1.8.9 or newer and you get an old or cloned Nano.

user37: This is caused by a generic connection error between your computer and the Arduino, and can result from many different specific problems.
Here are some easy things that can often fix this error:

Disconnect and reconnect the USB cable.
Press the reset button on the board.
Restart the Arduino IDE.
Make sure you select the right board in Tools ► Board ►, e.g. If you are using the Duemilanove 328, select that instead of Duemilanove 128. The board should say what version it is on the microchip.
Make sure you selected the right port in Tools ► Serial Port ►. One way to figure out which port it is on is by following these steps:


Disconnect the USB cable.
Go to Tools ► Serial Port ► and see which ports are listed (e.g. COM4 COM5 COM14).
Reconnect the USB cable.
Go back to Tools ► Serial Port ►, and see which port appeared that wasn't there before.

Make sure digital pins 0 and 1 do not have any parts connected, including any shields.

If none of those work, you will want to try to isolate the issue by replacing things: try a different computer on the same arduino, try a different arduino on the same computer, and try using a different USB cable.
If the issue is with the computer:

Double-check all computer-related issues in the "easy fixes" list above.
Reinstall the IDE.
Reinstall the drivers.

If the issue is with the Arduino:

Double-check all board-related issues in the "easy fixes" list above.
Make sure the microcontroller is seated correctly.
You may need to burn the bootloader.
Replace the microcontroller if you have another one handy nearby.
You may have bricked your Arduino. Sorry :(


37: <p>I made an awesome program the other day, and I wanted to upload it to my Arduino. After clicking the upload button, some mean dude named avr came along and stopped me, saying:</p>

<blockquote>
  <p>avrdude: stk500_getsync(): not in sync: resp=0x00</p>
</blockquote>

<p><em>All</em> I want to do is just upload my program, but avr won't let me. He's even unintelligible, so can someone tell me what the heck he's trying to say and how to get rid of him?</p>

<hr>

<p>i.e.:</p>

<p>Whenever I try to upload a program to my Arduino, I get this error message:</p>

<blockquote>
  <p>avrdude: stk500_getsync(): not in sync: resp=0x00</p>
</blockquote>

<p>What does this mean, and how can I fix it?</p>
 42384: <p>After lots of unplugging, checking ports, restarting IDE, etc. The ting which seemed to make a difference fixing this fault with Arduino Mega 2560 was to uninstall the windows USB arduino driver then reinstall it usig the driver here &amp; select manually from the list>com ports>arduino
<a href="http://drivers.softpedia.com/get/Other-DRIVERS-TOOLS/Others/Arduino-Mega-2560-USB-Driver-1110-for-Windows-7-64-bit.shtml" rel="nofollow noreferrer">http://drivers.softpedia.com/get/Other-DRIVERS-TOOLS/Others/Arduino-Mega-2560-USB-Driver-1110-for-Windows-7-64-bit.shtml</a>
I may have tested it on my uno then back to the mega so there's a small chance talking to the uno made AVRDUDE happy but unlikely. </p>
 39212: <p>When I get a problem uploading to my boards I upload a different program like the blink example.  This seems to reset something and I am then able to upload my own program (which is quite large).  </p>

<p>It might be worth trying this to see if it works in your case, although I have no idea why it works.</p>
 39804: <p>I faced the same problem for some code today and I solved it as follows: </p>

<p>1- First I ran  a basic LED blinking code. It gave the same error. It confirms that  the error is in uploading  and has nothing to do with compiling. I also checked my code was compiling fine. </p>

<p>2- I took another board, but it was working fine on this PC. That  means computer and the USB wire is OK.           </p>

<p>3- I connected the faulty board to another PC, and surprisingly, there was no such error in uploading. That gave me hint about issues in driver in the first PC. </p>

<p>4- So I uninstalled the driver and re-installed it on the first PC by downloading from <a href="https://drp.su/en/devices/chipset/arduino/arduino-mega-2560?os=windows-7-x64" rel="nofollow noreferrer">here</a> </p>

<p>( make sure that while installing the driver from this link, you keep your board  connected to the PC)</p>

<p>It worked fine now :-)       </p>
 49757: <p>I had this error in my Linux Mint 17.3 laptop with Arduino Nano
avrdude: stk500_getsync(): not in sync: resp=0x00</p>

<p>Solved:</p>

<ul>
<li>removed all that had 'arduino' or 'avr' in its name</li>
<li>removed directories .arduino and .arduino15 (Note the dot in the name)</li>
<li>removed ver 1.8.7 with uninstall of the packet</li>
<li>apt-get install arduino (ver 1.1.0)</li>
<li>tested with a simple sketch (everything OK)</li>
<li>installed ver 1.8.7 with the install of the packet</li>
<li>compiled.</li>
<li>selected ATmega328p(Old bootloader) for processor, Arduino Nano for card and /dev/ttyUSB0 for port
=> IT WORKS !</li>
</ul>

<p>It seems that the 'Old bootloader' was the trick in this case.
I have now both ver 1.1.0 an 1.8.7, who cares. </p>
 61967: <p>What I tried was to not connect one Ground of one board to the other ground on the other board. This stopped the problem for me.</p>
 68788: <p>If you use <code>arduino-cli</code> and a Arduino Nano clone, you can change the bootloader to the old one, as said in other answers, by using the following command to upload to the Arduino:</p>
<pre><code>arduino-cli upload -v -p /dev/ttyUSB0 --fqbn arduino:avr:nano:cpu=atmega328old program_name
</code></pre>
<p>Explanation:</p>
<div class="s-table-container">
<table class="s-table">
<thead>
<tr>
<th style="text-align: left;">command</th>
<th style="text-align: right;">explanation</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><code>arduino-cli</code></td>
<td style="text-align: right;">call <code>arduino-cli</code></td>
</tr>
<tr>
<td style="text-align: left;"><code>-v</code></td>
<td style="text-align: right;">Use verbose output</td>
</tr>
<tr>
<td style="text-align: left;"><code>-p /dev/ttyUSB0</code></td>
<td style="text-align: right;">The port, use <code>arduino-cli board list</code> to find the right port</td>
</tr>
<tr>
<td style="text-align: left;"><code>--fqbn arduino:avr:nano:cpu=atmega328old</code></td>
<td style="text-align: right;">Use avr board library, nano board and the Atmega328 CPU with the old bootloader</td>
</tr>
<tr>
<td style="text-align: left;"><code>program_name</code></td>
<td style="text-align: right;">Replace this with the name of the program you want to upload</td>
</tr>
</tbody>
</table>
</div> 26649: <p>There is also the possibility of the the controller itself being placed the wrong way in the socket on the Arduino. This can be dangerous for the controller (which may get zapped) but, in my case, it only gave the out of sync error, preventing me from uploading code.</p>

<p>So just check if the notch on the IC is in the right direction (you can cross check with images of board online). The notch on the Uno's controller should point towards edge of board.</p>
 38151: <p>Just had this same error with a brand new Mini Pro.  Since the default blink program that came preloaded with most Arduino is running, I know that the unit is probably OK.</p>

<p>So I inspected the headers I just soldered one more time, and found that there was not enough solder on the TX0 pins.  After re-soldering every works.</p>
 47158: <p>I solved it by updating the boards (under "board manager")</p>
 23939: <p>An unusual one but I've been swapping out the microcontrollers a lot and i got this error when one wasn't seated correctly.. i was able to burn a few times but i guess it slipped back out - a little push on the back of the ATMega328 fixed it!  </p>
 31287: <p>I had this error come up too. It was the first time using a new Arduino Nano board after I had soldered on headers. Just tyring the Blink Sketch, nothing was connected to the board.</p>

<p>I found a tiny short of solder between the GROUND and RESET pins. I picked it off and then I could upload ok.</p>

<p>I suppose this might happen if you had the same short on a circuit somewhere.</p>
 49096: <p>I had a similar issue with my Uno board</p>

<pre><code>avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x90
</code></pre>

<p>Tried many methods </p>

<ul>
<li>Press reset before sending packets</li>
<li>different IDE versions</li>
<li>Change cable  </li>
<li>Change controller itself </li>
<li>Loopback test</li>
</ul>

<p>but all of the above failed.</p>

<p>I use Ubuntu 16.04.4 LTS <code>4.15.0-33-generic</code> (while writing this comment). The CDC ACM module was not loaded, therefore no <code>/dev/ttyACM0</code> device was created to select in <code>Arduino IDE -&gt; Tools -&gt; Port</code></p>

<p>Therefore,
Get the module name and load it</p>

<pre><code>$ lsusb 
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 2341:0043 Arduino SA Uno R3 (CDC ACM)
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub


$ sudo modprobe cdc-acm
</code></pre>

<p>The above command will insert the required module.
Now i'm able to select the right port and upload the code</p>

<p>Out of various solutions this worked for me, hope this helps someone too.</p>
 17348: <p>For people using Linux Mint I found that by selecting the "TTY SO" port instead of the one labeled "Arduino" it would work (I can't tell you exactly because I don't have that computer in front of me right now). </p>

<p>Then the next time I used the Arduino I again got the same message so I switched back to the "Arduino" port and it has worked that way ever since.  </p>

<p>I am not as technically knowledgeable as the rest of you guys so I have no idea why this works or what the problem was, but it worked which is all I care about.  Maybe this will be useful to someone.</p>
 23386: <p>I uninstalled the IDE and drivers etc, installed it all again, then I ran the Arduino IDE as an administrator and set to run compatibility as windows 7 (I'm currently using 10).</p>

<p>I also changed the programmer to AVR ISP (I don't think this matters, but I changed it anyway).</p>

<p>All is working again... hopefully, this can help someone else out too. </p>
 7069: <p>I had the exact same problem. I tried installing the IDE in another laptop and uploaded the program from that laptop. Problem solved. Then I came back to my laptop, uninstalled the IDE and re-install it.. it started working. </p>

<p>However, I wasn't satisfied because I couldn't find the source of the problem... so I tried running everything again the same exact way... I found the problem but not sure if that can be the actual cause of it. </p>

<p>In my project, I needed to carry out serial communication between arduino and MATLAB (GUI). In order to see/verify the output(type) of MATLAB (GUI) serial data, I used HYPERTERMINAL and also VIRTUAL SERIAL PORT EMULATOR. I noticed that every time when when hyperterminal is running or VSPE is running while my serial monitor is on it screws up the uploading feature of the program. I'm not sure if it's because of the VSPE or HYPERTERMINAL, but reinstalling the IDE worked for me.</p>
 7061: <p>I've had the same message. Every time it has been solved by selecting the right port ie USB under the menu Tools then Ports. Its a simple step but I always forget. I'll unplug the Arduino to stop the current program, plug it in again to my computer to upload the new program and get the error, panic, curse, and only then, remember.</p>
 8: <p>If none of the above steps work, try reinstalling Avrdude and the avr-gcc compiler. I had to do this after my Mega started suffering from this.</p>

<p>If you installed Avrdude and avr-gcc separately, simply uninstall them. if not, you may have to reinstall the Arduino IDE. These steps will depend on your operating system.</p>
 19679: <p>In my case I hadn't wired the RTS pin of the FTDI chip to a capacitor which went to the RST pin of the Arduino Pro Mini.  Once I installed this connection, I no longer got the error and I was able to upload code.</p>

<p>Nick Gammon explains this <a href="http://www.gammon.com.au/breadboard">in his forum</a>.
I've added a picture of where/how the capacitor should be placed.
<a href="https://i.stack.imgur.com/hDu1t.jpg"><img src="https://i.stack.imgur.com/hDu1t.jpg" alt="enter image description here"></a></p>
 46: <p>Unfortunately, it can also mean that you burned your microcontroller. Were you doing anything dangerous right before you tried to upload a new sketch? Is the microcontroller still working, with its previously loaded sketch?</p>
 43106: <p>Another fix:</p>

<p>Change <code>Tools-&gt;Processor-&gt;Atmega 328P</code> to <code>Atmega 328P (Old Bootloader)</code>. Remind that the <code>Processor</code> option is only available when you select some specific Boards at <code>Tools&gt;Board</code>. </p>

<p>This worked for my Arduino Nano with CH340, using Arduino IDE 1.8.5 under Linux Ubuntu 17.10. Besides, this will probably happen if you use IDE 1.8.9 or newer and you get an old or cloned Nano.</p>
 37: <p>This is caused by a generic connection error between your computer and the Arduino, and can result from many different specific problems.</p>

<p>Here are some easy things that can often fix this error:</p>

<ul>
<li>Disconnect and reconnect the USB cable.</li>
<li>Press the reset button on the board.</li>
<li>Restart the Arduino IDE.</li>
<li>Make sure you select the right board in <code>Tools ► Board ►</code>, e.g. If you are using the Duemilanove 328, select that instead of Duemilanove 128. The board should say what version it is on the microchip.</li>
<li>Make sure you selected the right port in <code>Tools ► Serial Port ►</code>. One way to figure out which port it is on is by following these steps:

<ol>
<li>Disconnect the USB cable.</li>
<li>Go to <code>Tools ► Serial Port ►</code> and see which ports are listed (e.g. COM4 COM5 COM14).</li>
<li>Reconnect the USB cable.</li>
<li>Go back to <code>Tools ► Serial Port ►</code>, and see which port appeared that wasn't there before.</li>
</ol></li>
<li>Make sure digital pins 0 and 1 do not have any parts connected, including any shields.</li>
</ul>

<p>If none of those work, you will want to try to isolate the issue by replacing things: try a different computer on the same arduino, try a different arduino on the same computer, and try using a different USB cable.</p>

<p>If the issue is with the computer:</p>

<ul>
<li>Double-check all computer-related issues in the "easy fixes" list above.</li>
<li>Reinstall the IDE.</li>
<li>Reinstall the drivers.</li>
</ul>

<p>If the issue is with the Arduino:</p>

<ul>
<li>Double-check all board-related issues in the "easy fixes" list above.</li>
<li>Make sure the microcontroller is seated correctly.</li>
<li>You may need to <a href="https://arduino.stackexchange.com/a/474/37">burn the bootloader</a>.</li>
<li>Replace the microcontroller if you have another one handy nearby.</li>
<li>You may have bricked your Arduino. Sorry :(</li>
</ul>
