/ Arduino UNO R3 Setup Guide
← All Guides Shop ↗
🌐 Translate:
Docs Home › Arduino UNO R3 Setup
📋 Complete Beginner's Guide

Arduino UNO R3
Getting Started Guide

From unboxing to uploading your first program. Covers DIP & SMD variants, CH340 & FT232R chipsets, all platforms including Android, plus complete troubleshooting.

⏱ ~25 min 🟢 Beginner Friendly 🖥 Win · macOS · Linux · Android 🔧 CH340 & FT232R
ℹ️
Before you startYou'll need: your Tishvi UNO R3 board · USB-A to USB-B cable (included in box) · A computer or Android phone with OTG support.
📺

Prefer to watch instead of read?

These community videos walk through the same setup process.

Arduino UNO R3 — Full Setup & First Sketch
Paul McWhorter · YouTube
▶ Watch on YouTube
CH340 Driver Install — Windows, Mac & Linux
DroneBot Workshop · YouTube
▶ Watch on YouTube

Community videos. Tishvi is not affiliated with creators.

1

Identify Your Board Variant (DIP vs SMD)

Both versions work identically — the only difference is how the main chip is mounted.

The easiest way to tell them apart: check the product title or listing where you purchased — it will say "DIP" or "SMD." You can also look at the board itself as shown below.

💡
Not sure which one you have? Don't worry — the driver installation and Arduino IDE setup steps are identical for both variants. You can skip this step and proceed to Step 2.
Tishvi UNO R3 DIP board — top view showing large rectangular ATmega328P chip with visible metal legs in socket
Chip with metal legs
DIP Version
DIP Version DIP
  • Listed as "UNO R3 DIP" in your order
  • Main chip is a tall, rectangular black block sitting in a socket — it has metal legs on both sides (like a centipede)
  • The chip can physically be pulled out of its socket
Tishvi UNO R3 SMD board — top view showing flat square ATmega328P chip soldered to board with no visible legs
Flat chip, no legs
SMD Version
SMD Version SMD
  • Listed as "UNO R3 SMD" in your order
  • Main chip is a flat square soldered flush to the board — no visible legs sticking out
  • The chip cannot be removed — it is permanently soldered
Both work identically. All Arduino code, libraries, and shields work on both variants without modification.

2

Find Out Which USB Chip Your Board Uses

This tells you which driver to install — takes 30 seconds to check.

Your UNO R3 has a small chip that lets it talk to your computer over USB. There are two types used in Tishvi boards — CH340 and FT232R. They need different drivers, so you need to know which one you have.

The easiest way to find out: check the product title or description on your Amazon order, or any label/sticker on the box. It will usually mention "CH340" or "FT232".

📦 How to identify your chipset — check these places in order:
1️⃣
Check your Amazon order title / product page
The product listing will say something like "Arduino UNO R3 with CH340 chipset" or "UNO R3 SMD FT232R." This is the most reliable method.
2️⃣
Check the box or packaging
Any label, sticker, or printed text on the box may mention the chipset. Look for "CH340", "FT232R", or "FTDI."
3️⃣
Not sure? Start with CH340
If you can't determine it from the product details, install the CH340 driver first — it's used on most Tishvi boards. If the board still isn't recognized after installation, then install the FT232R driver instead. Only one will work.
⚠️
Why this matters: CH340 and FT232R need completely different drivers. Installing the wrong one means your board won't be recognized by your computer. But don't worry — if you install the wrong one, you can simply uninstall it and install the correct one. Nothing will be damaged.

3

Install the USB Driver

Select your chipset first, then your OS for exact steps.

🚫
Install the driver BEFORE plugging in the board. On Windows, plugging in first can cause the wrong generic driver to auto-install — which is hard to remove.

Step A — Choose your chipset:

💡
CH340 — Official driver download: wch-ic.com/downloads/CH341SER_EXE.html →

Step B — Choose your OS:

1

Download CH341SER.EXE

Go to wch-ic.com → and download CH341SER.EXE — the official Windows installer from the chip manufacturer (WCH).

2

Run as Administrator

Right-click CH341SER.EXE"Run as administrator" → click Yes on the Windows security prompt.

3

Click INSTALL in the driver window

In the setup window, click INSTALL. Wait a few seconds for "Driver Install Success!"

CH341SER Driver Installer
CH341 USB to Serial Port Driver INSTALL
4

Plug in board and verify in Device Manager

Now plug in your board. Open Device Manager (right-click Start → Device Manager). Expand Ports (COM & LPT) → you should see "USB-SERIAL CH340 (COMx)". Note this COM number — you'll need it in Step 6.

COM port visible = driver installed successfully. Skip to Step 4.
ℹ️
macOS 12 Monterey and newer blocks drivers automatically — you must manually approve the System Extension after installation.
1

Download CH341SER_MAC.ZIP

Go to wch-ic.com →. Download and extract the ZIP file.

2

Run the .pkg installer

Double-click CH34xVCPDriver.pkg inside the extracted folder. Click Continue → Install, enter your Mac password → Install Software.

3

Allow System Extension in Privacy & Security

Go to System Settings → Privacy & Security → scroll down to find a blocked software message about "wch.cn" or "CH340" → click Allow.

⚠️
If no "Allow" button appears, restart your Mac first, then check Privacy & Security again.
4

Restart Mac, then verify

After restart, plug in your board. Open Terminal and type: ls /dev/cu.*. You should see /dev/cu.wchusbserial or similar — that's your board's port.

🐧
The CH340 driver is built into Linux kernel v3.x+. No download needed — just plug in and verify.
1

Plug in and verify detection

Open a terminal and run: ls /dev/ttyUSB*. You should see /dev/ttyUSB0. Also try: dmesg | grep -i ch34 to see the kernel recognition message.

Raspberry Pi: Same steps apply — CH340 is supported in Raspberry Pi OS (Raspbian) out of the box.

2

Add yourself to the dialout group

Run: sudo usermod -a -G dialout $USER
Then log out and back in (or restart). This gives upload permission without needing sudo each time.

💡
Verify group was added: run groups $USER — "dialout" should appear in the list.
3

Raspberry Pi — install Arduino IDE

Run: sudo apt-get update && sudo apt-get install arduino — or download the Linux ARM 32/64-bit build from arduino.cc/en/software. The AppImage version works well on Pi 4/5.

🤖
Android requires a USB OTG adapter to connect your UNO R3. You can monitor serial output freely. Full sketch upload requires the ArduinoDroid app (paid).
⚠️
No driver installation needed on Android — apps like Serial USB Terminal include built-in USB host drivers for CH340. The OS handles USB host mode transparently.
1

Get a USB OTG adapter

You need a USB OTG (On-The-Go) adapter matching your phone's port: USB-C to USB-A, or Micro-USB to USB-A. Plug the OTG adapter into your phone, then connect the UNO R3's USB-B cable to the OTG adapter. Confirm your phone supports OTG (check specs — most phones from 2016+ do).

2

Option A (Free): Serial Monitor only

Install Serial USB Terminal by Kai Morich from Google Play (free). Open the app → grant USB permissions → tap the connect button (plug icon). Set baud rate to 9600. If you see data scrolling from your board, everything is working. You can use this to debug sketches already uploaded via a computer.

3

Option B (Paid): Full IDE — ArduinoDroid

Install ArduinoDroid from the Play Store (~$4 USD). This bundles its own compiler — on first launch it downloads toolchain (~300MB on Wi-Fi). Then: open or write a sketch → select board "Arduino Uno" → plug in board via OTG → tap Upload. Sketch is compiled and uploaded entirely from your phone. No PC required.

4

If board isn't recognized on Android

In Serial USB Terminal: tap ≡ menu → USB Driver → try different driver options (CH340, CDC, FTDI) until the connection succeeds. Also ensure phone's USB mode is set to "OTG" or "Host" in Settings if it asks.


4

Connect Your Board

Plug in the USB cable and confirm the board powers on correctly.

1

Use the correct cable

Use the USB-A to USB-B cable included with your board. The USB-B end has a square-ish connector that plugs into the board. Some cheap USB cables are charge-only (2 wires inside) — use a data cable. The one in the box is always correct.

2

Check the indicator lights when connected

When plugged in, your board has small LED indicator lights near the USB port. Their exact color may vary between board models (some boards have blue/red, others have green/orange) — what matters is whether they light up:

LED LabelWhat it means
PWR or ONPower LED — lights up immediately when plugged in. Must be ON. If it doesn't light, try a different USB port or cable.
L (Pin 13)Built-in LED — may blink if a test sketch is pre-loaded. This is normal.
TXTransmit LED — blinks rapidly during sketch upload (data going to board)
RXReceive LED — blinks rapidly during sketch upload (data coming from board)
💡
All four LEDs are tiny and located in a row near the USB port. You may need to look closely. TX and RX will only blink during an active upload — they are normally off.
PWR L TX RX RESET CH340/FT232 ATmega 328P Digital Pins (0–13) Power / Analog Pins USB-A USB Cable

5

Install Arduino IDE

The free, official program for writing and uploading code to your board.

1

Download Arduino IDE 2 (free)

Go to arduino.cc/en/software → and download for your platform. Always download Arduino IDE 2.x (latest version).

🪟 Windows 🍎 macOS 🐧 Linux / Pi 🤖 Android — see below
💡
The download page asks if you'd like to donate — click "Just Download" to skip. Arduino IDE is always 100% free.
2

Install on your platform

Windows: Run the .exe installer → accept all defaults.

macOS: Open the .dmg → drag Arduino IDE to Applications. If macOS says "unidentified developer" → right-click the app → Open.

Linux: Download the .AppImage → right-click → Properties → Permissions → check "Allow executing as program." Then double-click to launch. Alternatively use the .zip → run install.sh.

Raspberry Pi: Run sudo apt-get install arduino or download the Linux ARM 32-bit AppImage.

3

Launch Arduino IDE

Open from Start Menu (Windows), Applications (macOS), or terminal (Linux). First launch may take 30–60 seconds indexing libraries. When you see the editor with a blank sketch — you're ready.

🤖

Android — ArduinoDroid app (no PC needed)

If you're uploading sketches directly from an Android phone, you do not need Arduino IDE installed on a computer. Instead use the ArduinoDroid app:

  1. Install ArduinoDroid from the Google Play Store (~₹350 / ~$4 USD one-time). This is a full Arduino IDE port for Android with a built-in compiler.
  2. On first launch, ArduinoDroid will download the compiler toolchain (~300 MB) — do this on Wi-Fi.
  3. Connect your board via a USB OTG adapter (USB-C to USB-A, or Micro-USB to USB-A). ArduinoDroid will request permission to access the USB device — tap Allow.
  4. Open or write your sketch → tap the Board selector → choose Arduino Uno → tap Upload ↑.
💡
For serial monitoring only (no uploading), the free Serial USB Terminal app by Kai Morich is excellent — it supports CH340 and FT232R natively with no setup.
ℹ️
Skip Steps 6–7 if using ArduinoDroid — board selection and port are configured inside the app. Jump directly to the Step 7 code and upload it from ArduinoDroid.

6

Configure Arduino IDE

Tell the IDE which board you have and which port it's on.

1

Select Board Type

Menu: Tools → Board → Arduino AVR Boards → Arduino Uno. It must say "Arduino Uno" — not Mega, Nano, or Leonardo.

Arduino IDE 2
Tools → Board → Arduino AVR Boards →
✓ Arduino Uno
2

Select the Port

Go to Tools → Port and select your board's port:

OSPort looks likeHow to identify
🪟 WindowsCOM3 (Arduino Uno)Unplug → note ports → replug → new port = your board
🍎 macOS/dev/cu.wchusbserial140Run ls /dev/cu.* before & after plugging in
🐧 Linux/dev/ttyUSB0Run ls /dev/ttyUSB* before & after plugging in
🤖 AndroidNo port — app handles connection directlyIn ArduinoDroid or Serial USB Terminal, tap the plug icon — the app opens the USB device automatically
💡
Port not listed? Board not plugged in, wrong/missing driver, or charge-only USB cable. Revisit Steps 3–4.
🤖
Android users: There is no COM/tty port to select. Skip this step — ArduinoDroid selects the device automatically when you tap Upload. If the board isn't detected, check that USB OTG mode is enabled on your phone and that you granted USB access permission when the app prompted.

7

Upload Your First Sketch — Blink!

The "Hello World" of electronics. Confirms everything is working end-to-end.

1

Open Blink example

In Arduino IDE: File → Examples → 01.Basics → Blink. A new editor window opens with the complete code.

2

Read the code — here's what it means

Arduino C++ · Blink.ino
// Blink — the "Hello World" of Arduino
// Turns the built-in LED on for 1 second, then off for 1 second

// ── setup() runs ONCE when the board first powers on ─────────
void setup() {
  // LED_BUILTIN is a shortcut for pin 13 (the on-board LED)
  pinMode(LED_BUILTIN, OUTPUT);    // Set pin 13 as an output
}

// ── loop() repeats FOREVER after setup() finishes ────────────
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);  // Turn LED ON  (5V on pin 13)
  delay(1000);                       // Wait 1000ms = 1 second
  digitalWrite(LED_BUILTIN, LOW);   // Turn LED OFF (0V on pin 13)
  delay(1000);                       // Wait 1 second
}                                    // Back to top of loop()
3

Upload the sketch

Click the Upload → button (right-arrow in toolbar) or press Ctrl+U (Win/Linux) / Cmd+U (Mac). You'll see:

🤖
Android (ArduinoDroid): Tap the Upload ↑ button in the app instead. The app compiles and uploads entirely on-device — no PC needed. TX/RX LEDs on the board will blink during the upload.
  • Status bar: "Compiling sketch…" (takes ~5–15 seconds)
  • TX/RX LEDs on board blink rapidly during upload transfer
  • Status bar: "Done uploading."
4

Watch the L LED blink 🎉

The orange L LED on your board blinks: 1 second ON, 1 second OFF. If you see this — your board is fully working!

🎉
Congratulations! You've just programmed a microcontroller. The sketch is permanently stored on the chip — unplug it from your computer and power it with a battery. It'll still run!
🧪 Try it: Make it blink faster

Change both 1000 values to 100 — re-upload and watch the LED blink 10× faster.

Fast Blink
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);
  delay(100);  // 0.1 second
  digitalWrite(LED_BUILTIN, LOW);
  delay(100);  // 0.1 second
}

!

Common Errors & Their Fixes

Find your exact error message and follow the solution.

🔌All OS No COM port / serial port appears in Tools menu
Root cause: Wrong/missing driver, charge-only USB cable, or board not recognized by OS.
  1. Confirm your chipset (Step 2) and install the correct driver for your OS (Step 3).
  2. Replace USB cable — use a known data-capable cable.
  3. Try a different USB port (prefer USB 2.0 over USB 3.0 — some 3.0 ports have timing issues with CH340).
  4. Windows: Device Manager → look for Unknown Device with ⚠️ → right-click → Update Driver → Browse → point to CH341SER or FTDI folder.
  5. Restart your computer after driver installation, especially on macOS.
📟All OS "avrdude: stk500_recv(): programmer is not responding"
Root cause: IDE reached the board but couldn't sync for programming — usually wrong board type, wrong port, or a timing issue.
  1. Verify Tools → Board = Arduino Uno (not Mega, Nano, etc.).
  2. Verify Tools → Port = your board's COM port.
  3. Close any Serial Monitor windows before uploading — they lock the port.
  4. Try pressing the Reset button on the board about 1–2 seconds before clicking Upload, then release it right as you click Upload.
  5. Windows: If port is COM10 or higher, Device Manager → right-click port → Properties → Port Settings → Advanced → change port number to COM3–COM9.
All OS Upload stuck at "Uploading…" and times out
Root cause: Upload started but board lost sync — often another program is using the port.
  1. Close Serial Monitor if open.
  2. Close PuTTY, Serial USB Terminal, or any other app using the same port.
  3. Unplug board → replug → try Upload again.
  4. Try pressing Reset on the board precisely when the status changes from "Compiling sketch…" to "Uploading…"
  5. Try a slower upload speed: Tools → Processor → ATmega328P (Old Bootloader).
🪟Windows Device Manager shows Unknown Device with ⚠️ yellow icon
Root cause: Windows auto-installed a wrong driver when you first plugged in the board before installing the correct one.
  1. Right-click the Unknown Device → Uninstall device → check "Delete the driver software for this device" → Uninstall.
  2. Unplug board.
  3. Install correct CH340 or FTDI driver from Step 3.
  4. Replug board — now shows as correct COM port.
🍎macOS Port visible but upload fails / "Permission denied"
Root cause: macOS System Extension not approved, or another app holds the port.
  1. System Settings → Privacy & Security → look for blocked software from "wch.cn" or "FTDI" → Allow.
  2. Restart Mac after clicking Allow.
  3. Check no other app (Serial Monitor, other IDE) has the port open.
  4. In rare cases on Ventura/Sonoma: open Terminal → sudo chmod 666 /dev/cu.wchusbserial* as a temporary fix.
🐧Linux / Pi "Permission denied" when uploading
Root cause: User account lacks serial port permissions.
  1. Run: sudo usermod -a -G dialout $USER
  2. Log out and back in (must fully re-login, not just reload terminal).
  3. Verify: groups $USER — "dialout" should appear.
  4. Check ownership: ls -la /dev/ttyUSB0 — should show group "dialout".
  5. Temporary bypass (while fixing): sudo arduino-ide
🤖Android Board not detected / no device in app
Root cause: OTG not supported, wrong adapter, or USB mode not set to Host.
  1. Verify your phone supports USB OTG — search "[phone model] USB OTG support."
  2. Try a different OTG adapter — cheap adapters fail often.
  3. Check phone USB settings: Settings → USB (or Connections → USB) → select "OTG" or "File Transfer" mode.
  4. In Serial USB Terminal: ≡ menu → USB Driver → try all options (CH340, CDC, FTDI) one by one until connection succeeds.
  5. Some phones require a USB power source on the OTG adapter to work — try a powered OTG hub.
🔑FT232R "FT232R EEPROM unreadable!" warning
Root cause: The FT232R's internal EEPROM is blank or corrupted. Often cosmetic.
  1. Try uploading anyway — this warning often doesn't block programming.
  2. If uploads fail: download FT_PROG from ftdichip.com → scan device → Restore Factory Defaults → Program.
  3. If chip is still unresponsive, contact Tishvi support with your order number — this may be a warranty issue.
💡All OS PWR LED is on but nothing happens / board appears frozen
Root cause: Board is powered but running a stuck sketch, or has no sketch loaded.
  1. Press the Reset button — restarts the loaded sketch from the beginning.
  2. If no response after Reset, upload the Blink sketch from Step 7.
  3. If no COM port shows despite PWR LED, the issue is the driver — not the board. Revisit Step 3.
🔥All OS Board gets very hot / USB port stops recognizing it
Root cause: Short circuit from external wiring, or (rarely) hardware defect.
  1. Unplug immediately if the board feels hot.
  2. Disconnect all wires, sensors, and shields.
  3. Plug in with USB only — no connections. If it works now, one of your external components caused a short.
  4. Check that no wires accidentally bridge 5V to GND, or feed voltage into an I/O pin that's set as OUTPUT.
  5. If hot with nothing connected and no COM port → hardware defect. Contact Tishvi support.
⚠️All OS "avrdude: error: could not find programmer ID 'arduino'"
Root cause: The Arduino AVR Boards package may be missing or corrupt in the IDE.
  1. In IDE: Tools → Board → Board Manager → search for "Arduino AVR Boards" → install or reinstall it.
  2. After install, restart the IDE.
  3. Re-select Tools → Board → Arduino Uno and try uploading again.
🔄Windows Board recognized but disconnects/reconnects repeatedly
Root cause: Windows USB power management is suspending the device, or driver conflict.
  1. Device Manager → Ports → right-click CH340/FTDI port → Properties → Power Management tab → uncheck "Allow the computer to turn off this device to save power."
  2. Try a different USB port, or connect via a powered USB hub.
  3. If using a laptop, plug in AC power — some laptops aggressively power-save USB ports on battery.

🛠

Troubleshooting Checklist

Run through every item before contacting support — this resolves 95% of issues.

I identified my chipset correctly — CH340 or FT232R (Step 2)
I installed the correct driver for my chipset AND my OS (Step 3)
I installed the driver BEFORE plugging in the board the first time
My USB cable supports data (not just charging)
The green PWR LED lights up immediately when I plug in the board
The board appears in Device Manager (Win) / ls /dev/ttyUSB* (Linux/Mac)
Arduino IDE → Tools → Board is set to "Arduino Uno"
Arduino IDE → Tools → Port is set to my board's COM port
The Serial Monitor is closed before uploading
No other app is using the serial port (PuTTY, Serial Terminal, etc.)
macOS: I clicked Allow in Privacy & Security and restarted Mac
Linux: I added myself to the dialout group and re-logged in
💬
Still stuck after the checklist? Contact Tishvi support through your Amazon order with: (1) your chipset (CH340 or FT232R), (2) your OS and version, (3) the exact error text from Arduino IDE's bottom console. We'll help!

?

Frequently Asked Questions

Common questions from first-time users.

Is the Tishvi UNO R3 fully compatible with official Arduino?
Yes — 100%. The Tishvi UNO R3 uses the same ATmega328P microcontroller and bootloader as the official Arduino Uno. All Arduino code, libraries, and shields work without modification. The only difference is the USB chipset (CH340 or FT232R instead of ATmega16U2), which just requires a different driver but behaves identically during use.
Can I run the board standalone — without a computer?
Yes! Once a sketch is uploaded, it's permanently stored on the ATmega328P chip. Power the board using: (1) 7–12V DC via the barrel jack connector, (2) a 9V battery with barrel jack adapter, or (3) a USB power bank. The sketch runs automatically every time it powers on — no computer needed.
What's the practical difference between CH340 and FT232R?
For everyday Arduino use — essentially nothing. Both convert USB to UART serial for programming the ATmega328P. The FT232R is traditionally slightly more stable at higher baud rates and has better legacy macOS support. The CH340 is perfectly reliable at all standard Arduino upload speeds (115200 baud) and is used in millions of Arduino-compatible boards worldwide.
How do I see my program's output without a display?
Use the Serial Monitor in Arduino IDE. In your sketch, add Serial.begin(9600); in setup(), then Serial.println("Hello!"); anywhere in your code. Upload, then click the magnifying glass icon (top-right of IDE) to open Serial Monitor. You'll see text from your board in real-time. This is the primary debugging tool for Arduino beginners.
Can I use Python with this board?
Not directly on the board (it runs C++). But you can control the board from Python on your computer using pyserial + Firmata: upload the StandardFirmata sketch (File → Examples → Firmata → StandardFirmata), then on your computer run pip install pyfirmata and write Python code that controls pins in real-time. You can also just use Python + pyserial to send/receive custom serial messages.
How much current can I safely draw from the pins?
Each digital I/O pin: 40mA maximum (20mA recommended). Total across all pins: 200mA maximum. The 5V pin from USB: ~500mA. For motors, relays, and high-current components, always use a driver module or transistor circuit — never drive them directly from Arduino I/O pins.