Most “my Arduino is dead” messages are a setup problem, not a hardware problem. The board is fine; the port is wrong, the clone needs a driver, or the upload is fighting another program that has the serial port open.
This is the setup sequence that works for the Uno, Nano and the common clones sold in India, in the order that avoids the usual dead ends. It assumes Windows or macOS and a board connected by USB. Linux needs one extra permission step, noted at the end.
1. Install the IDE, not a random copy
Download the Arduino IDE from arduino.cc. The current version is IDE 2.x, which installs like a normal application and bundles the compiler, the board definitions for official boards and the serial monitor. Avoid installers from third-party download sites: they often bundle older versions, adware, or a modified board list.
On Windows, the installer may ask to install USB drivers. Allow it. On macOS, drag the app into Applications and open it once so the system can approve it. If macOS blocks the app, use System Settings → Privacy & Security to allow it rather than disabling security globally.
2. Plug in and find the port
Connect the board with a USB cable that carries data. This is not a formality: a large share of charging cables have only power wires inside, and the board will light up while the computer sees nothing. If no port appears, try a different cable before trying a different driver.
Open Tools → Port. On Windows you should see something like COM3 or COM7. On macOS it looks like /dev/cu.usbmodem14101 or /dev/cu.wchusbserial1420. Unplug the board and confirm the entry disappears, then plug it back in and confirm it returns. That is the port you want.
3. Select the right board
Tools → Board → Arduino AVR Boards → Arduino Uno for an Uno, or Arduino Nano for a Nano. A mismatch usually produces an upload error rather than damage, but a Nano with the wrong processor selected will fail every time. Clones with the old bootloader need Processor → ATmega328P (Old Bootloader); if uploads fail at a low baud rate, try that option.
For an ESP32 or ESP32-CAM, the board list does not include them by default. Add the Espressif board manager URL in Preferences, install the ESP32 package from Boards Manager, then select the exact DevKit model. The ESP32 pinout guide covers which pins to avoid once it uploads.
4. Upload the blink sketch
File → Examples → 01.Basics → Blink, then press Upload. The TX and RX LEDs should flicker for a few seconds and the message “Done uploading” should appear. The on-board LED on pin 13 will blink once per second. That single test proves the cable, driver, port, board selection and toolchain — five things at once — so do it before writing any robot code.
5. Fix the clone driver problem
Many Indian Uno and Nano clones use a CH340 or CH341 USB-serial chip instead of the official ATmega16U2. Windows 10 and 11 often install it automatically; older machines do not, and the board shows up as an unknown device with no COM port. Install the CH340 driver from the chip maker’s site, reboot, and check Device Manager under Ports. A Nano clone may need the driver before any port appears at all.
| Symptom | Likely cause | Fix |
|---|---|---|
| No port in the menu | Charge-only cable, missing driver, dead USB port | Swap cable, install CH340 driver, try another port |
| Port appears but upload fails | Wrong board or processor selected | Select the exact board; try the old bootloader option on a Nano |
| “Access is denied” or port busy | Serial Monitor or another app is open | Close Serial Monitor, IDE instances and PuTTY |
| Upload works once, then never | Sketch uses pins 0 and 1 for something else | Move the device off the hardware serial pins |
| Board resets when motors start | Power, not USB | Separate motor supply and common ground |
| Garbage in Serial Monitor | Baud rate mismatch | Match the number in Serial.begin() |
6. Use the Serial Monitor properly
The Serial Monitor is the cheapest debugging tool you own. Start it at the same baud rate as Serial.begin(), usually 9600 or 115200. If you see nothing, check the baud rate before rewiring. If you see one garbled line at reset, that is normal on many boards. If you see garbage continuously, the rates do not match or the board is resetting.
void setup() {
Serial.begin(115200);
while (!Serial) { } // native-USB boards only
Serial.println("boot");
}
void loop() {
Serial.print("millis=");
Serial.println(millis());
delay(500);
}Do not put Serial.print() inside a tight control loop on a robot. At 9600 baud a short line can take several milliseconds, which is enough to ruin motor timing. Print a value every 100–200 ms, or print only when a state changes.
Linux: one permission step
On Ubuntu or another Linux distribution, the board appears as /dev/ttyACM0 or /dev/ttyUSB0 but uploads fail with a permission error until your user is in the dialout group:
sudo usermod -aG dialout $USER
# log out and back in, then check
groupsSome Ubuntu versions also need the brltty service disabled if it grabs the CH340 device. That is a known conflict, not a broken board.
What to do next
With blink working, move to a button and an LED, then a potentiometer and a servo. Those three exercises cover digital input, analog input, PWM and the habit of powering a load separately. The beginner projects list sequences ten builds, and the pinout guide explains which pins each one needs.
Keep one known-good board, one known-good cable and the blink sketch as your test kit. When something stops working months later, you can prove within two minutes whether the problem is the board, the cable or the new code.
Header pins and motor leads still need to be soldered; the soldering guide covers the joints a robot build actually needs.
Sources and further reading
- Arduino IDE download page for the current IDE 2.x installers.
- Arduino IDE 2 documentation for board manager, ports and upload behaviour.
- Arduino getting started guide for the official first-upload walkthrough.
Last reviewed: October 2026. Menu paths match Arduino IDE 2.x. Clone boards vary in USB-serial chip and bootloader, so a working setup on one board is not proof that the next one will behave the same way.


