If your [Arduino](https://www.ampheo.com/c/development-board-arduino) isn't uploading code, it's likely due to one of the following hardware, software, or connection issues. Here's a step-by-step checklist to diagnose and fix it:

**1. Check COM Port and Board Settings**
**In the Arduino IDE:**
* Go to Tools > Port and ensure the correct COM port is selected.
* Go to Tools > Board and select the right board (e.g., [Arduino Uno](https://www.ampheo.com/product/a000046-25542493)).
If no port is listed, see step 4 (driver or USB issue).
**2. USB Cable or Port Issue**
* Use a different USB cable — some are power-only (no data).
* Try a different USB port on your PC.
* Test with a known working Arduino.
Use a USB 2.0 port instead of USB 3.0 if available — some older Arduinos have issues with USB 3.0.
**3. Check Arduino Drivers (Windows)**
Open Device Manager.
Look under Ports (COM & LPT):
* If you see something like "Arduino Uno (COMx)" → Good.
* If yellow exclamation mark (!) appears → driver issue.
Solution:
* Install driver from Arduino IDE:
Go to Tools > Board > Boards Manager and reinstall.
* Or manually install: Navigate to Arduino/drivers and run dpinst-amd64.exe.
**4. Bootloader or Chip Issue**
**a) Check Power and LED**
* Plug in Arduino → do Power (ON) and L (pin 13) LEDs light up?
* LED should blink if sketch is running.
**b) Double-press reset:**
On Nano / Leonardo / Micro, press the reset button twice quickly before uploading.
**c) Reburn Bootloader:**
If you see this error:
```
vbnet
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync
```
→ The bootloader may be corrupted. You’ll need another Arduino or ISP to reprogram it.
**5. Conflicts With Other Programs or Devices**
* Close Serial Monitor or Plotter — they block the upload port.
* Make sure no other programs (e.g., PuTTY, Bluetooth tools) are using the same COM port.
* Disconnect any external modules (e.g., GPS, HC-05, ESP8266) connected to pins 0 and 1 (RX/TX).
**6. Common Error Messages and Fixes**

**Quick Fix Summary**
Do this in order:
1. Unplug everything (shields, [sensors](https://www.onzuu.com/category/sensors-transducers)).
2. Plug [Arduino](https://www.ampheoelec.de/c/development-board-arduino) into USB with known good cable.
3. Check Device Manager for COM port.
4. Set correct board and port in Arduino IDE.
5. Press Reset and try uploading Blink.ino.
6. Try another PC or USB port if all else fails.