Arduino IDE

Cross-platform License: AGPLv3

What It Does

Arduino IDE is an integrated development environment for writing, compiling, and uploading code to Arduino-compatible microcontrollers. It handles board detection, library management, and serial monitoring in a single window. You write C/C++ sketches, hit upload, and the IDE compiles and flashes the board over USB.

Why You Need It

Signal guides use Arduino IDE extensively for hardware builds — from basic sensor projects to complex security tools. If a guide involves a microcontroller (ESP32, Arduino Nano, Raspberry Pi Pico), this is the tool that gets code onto the board.

Used in: SG-01 SG-02 SG-03 SG-04 SG-05 SG-11 SG-13 SG-14 SG-15 SG-29

How to Install It

Download from: https://www.arduino.cc/en/software

Windows
  1. Download the Windows installer (MSI or ZIP) from the link above.
  2. Run the installer. Accept the driver installation prompts — these are the USB-to-serial drivers Arduino boards need.
  3. Launch Arduino IDE from the Start menu.
Linux
  1. Install from your package manager or download the AppImage:
    sudo apt install arduino
    Note: the apt version is often Arduino IDE 1.8.x. For Arduino IDE 2.x, download the AppImage from the official site.
  2. Add your user to the dialout group so the IDE can access serial ports:
    sudo usermod -aG dialout $USER
    Log out and back in for this to take effect.
macOS
  1. Download the macOS DMG from the official site.
  2. Drag Arduino IDE to Applications.
  3. On first launch, allow it through Gatekeeper (System Settings > Privacy & Security).
Board Manager Setup (all platforms)

For ESP32 boards (used in most Signal guides):

  1. Go to File > Preferences (or Arduino IDE > Settings on macOS).
  2. In Additional Board Manager URLs, paste:
    https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
  3. Go to Tools > Board > Board Manager.
  4. Search esp32 and install esp32 by Espressif Systems.
  5. Select your board under Tools > Board > ESP32 Arduino (e.g., "ESP32 Dev Module").

How to Use It

  1. Open or create a sketch. A sketch is a .ino file with setup() and loop() functions. Every Signal guide provides the sketch code — paste it into the editor.
  2. Select your board. Go to Tools > Board and pick the exact board you are using (e.g., "ESP32 Dev Module", "Arduino Nano").
  3. Select the port. Go to Tools > Port and choose the COM port (Windows) or /dev/ttyUSB0 (Linux) or /dev/cu.usbserial-* (macOS) that appeared when you plugged in the board.
  4. Install libraries. Go to Sketch > Include Library > Manage Libraries. Search for the library name listed in the guide (e.g., WiFi, Adafruit NeoPixel) and install it.
  5. Upload. Click the right-arrow button (or Sketch > Upload). The IDE compiles, then flashes the board. Watch the console at the bottom for errors.

Use Tools > Serial Monitor (or the magnifying glass icon) to see output from Serial.println() statements in your code. Set the baud rate to match your sketch (usually 115200).

Common Gotchas

Arduino IDE 2.x has a different UI than 1.8.x. Most online tutorials and screenshots show the old 1.8.x layout. The menus are the same, but the editor, board selector, and library manager look different in 2.x. Do not be confused if your screen does not match a tutorial — the menu paths still work.

"Port" menu is empty or grayed out. This means the OS does not see your board. On Linux, check group membership (groups $USER should show dialout). On Windows, you may need to install CP2102 or CH340 USB drivers manually — search for the chip printed on your board.

ESP32 upload fails with "A fatal error occurred: Failed to connect." Hold the BOOT button on the ESP32 board while the IDE says "Connecting..." and release it after upload starts. Some boards require this on every upload; others have auto-reset circuits.

Board Manager download is slow or times out. The ESP32 board package is large (several hundred MB). If the download stalls, close the IDE, delete the partial download from ~/.arduino15/staging/packages/ (Linux/macOS) or %LOCALAPPDATA%\Arduino15\staging\packages\ (Windows), and try again on a stable connection.

Serial Monitor shows garbage characters. The baud rate in your Serial Monitor does not match the Serial.begin() value in the sketch. Set both to the same number (typically 115200).

Last reviewed: March 2026