All guides

How to upload Arduino code from an Android phone

Updated 20 October 2026

You need an Android phone with USB OTG support, a data cable that fits your board, and an app that can compile and upload. With Pinstrike, plug the board in, allow USB access, choose your board, open a sketch and tap Upload. A Blink sketch takes about 5 seconds to upload.

What you need

BoardBoard's USB portCable from a USB-C phone
Arduino Uno R3 and clonesUSB-B (the square printer type)USB-C to USB-B
Arduino Nano and most clonesMini-BUSB-C to Mini-B

You can also use a small USB-C OTG adapter (USB-C plug to USB-A socket) together with the board's normal cable. Older phones with a Micro-USB port need a Micro-USB OTG adapter instead.

The cable must carry data. Many cheap cables are charge-only and the phone will never see the board through them. If in doubt, test the cable with a USB stick first.

Check that your phone supports OTG

Most Android phones from the last several years support USB OTG. The quickest check is to plug in a USB stick or mouse with your adapter. If the phone reacts, OTG works. Some phones, including several OnePlus, OPPO and realme models, have an OTG switch in Settings that turns itself off after a few minutes without a device, so switch it on before plugging in the board.

Upload a sketch, step by step

  1. Install Pinstrike and open it once.
  2. Plug the board into the phone. Android asks whether to open Pinstrike for the device; choose Pinstrike and allow access. The board's power LED lights up because the phone powers it.
  3. Open Board & connection and pick your board. Pinstrike shows the USB chip it found, such as CH340 or ATmega16U2, and suggests a setting.
  4. Open the Blink example, or your own sketch, and tap Compile to check it. Compiling needs an internet connection.
  5. Tap Upload. Pinstrike resets the board, connects to its bootloader, checks the chip, writes the sketch and reads it back to verify it.
  6. When you see "Your sketch is running", the L LED on the board should blink once a second.

If it doesn't work

  • Nothing happens when you plug in. The cable is probably charge-only, or OTG is switched off. Try another cable and check the OTG setting.
  • "The bootloader didn't respond". On a Nano clone, choose the old bootloader option; see Arduino Nano clone won't upload. Also unplug anything connected to pins 0 and 1, because they share the serial line used for uploading.
  • "Chip signature doesn't match". The board option is wrong, for example ATmega168 chosen for an ATmega328P board. Pinstrike names the board that matches.
  • The upload stops halfway. A loose connector or a cable that is too long. Use a short cable and keep the phone still during the upload.
  • The board resets or behaves oddly with motors or servos attached. A phone can only supply a little power over USB. Upload with nothing heavy attached, and power big loads separately.

Which boards work

Pinstrike supports the Arduino Uno R3, the Arduino Nano with ATmega328P (new and old bootloader) and the Arduino Nano with ATmega168, including clones with CH340, FTDI, CP210x and ATmega16U2 USB chips. Mega 2560, Leonardo, ESP32 and ESP8266 are planned.