You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Steve Cross 3de803b4c7
Merge pull request #2 from hairlesshobo/baudRate
2 years ago
.github/workflows Update and rename main.yml to stale-issues.yml 3 years ago
.vscode update: bump tasks.json to v2.0.0; update pacakage.json 2 years ago
images upload using a status bar button (#737) 3 years ago
misc Added code to save baud rate to arduino.json file for the serial monitor 3 years ago
snippets scaffold under current workspace folder (#272) 5 years ago
src Merge branch 'master' into baudRate 2 years ago
syntaxes Refine the output message. (#402) 5 years ago
test Merge branch 'master' into baudRate 2 years ago
typings Add Arduino language and example explorer. (#46) 5 years ago
.editorconfig Merge debugger features into master branch (#306) 5 years ago
.gitignore trim additional urls (#510) 4 years ago
.travis.yml move usb-native to node-usb-native 2 years ago
.vscodeignore Reduce time (#874) 3 years ago v0.3.0 2 years ago added contribution guidelines (#665) 4 years ago
LICENSE.txt Final legal compliance fixes (#342) 5 years ago Update (#917) 3 years ago
ThirdPartyNotices.txt Final legal compliance fixes (#342) 5 years ago
gulpfile.js Move usb-native to a npm package 2 years ago
package-lock.json v0.3.0 2 years ago
package.json v0.3.0 2 years ago
tsconfig.json Refactor html folders to src (#300) 5 years ago
tslint.json update dependencies 2 years ago
webpack.config.js move usb-native to node-usb-native 2 years ago

Visual Studio Code extension for Arduino

Gitter Travis CI

Welcome to the Visual Studio Code extension for Arduino preview ! The Arduino extension makes it easy to develop, build, deploy and debug your Arduino sketches in Visual Studio Code, with a rich set of functionalities. These include:

  • IntelliSense and syntax highlighting for Arduino sketches
  • Verify and upload your sketches in Visual Studio Code
  • Built-in board and library manager
  • Built-in example list
  • Built-in serial monitor
  • Snippets for sketches
  • Automatic Arduino project scaffolding
  • Command Palette (F1) integration of frequently used commands (e.g. Verify, Upload...)
  • Integrated Arduino Debugging New


The Arduino IDE is required. Please install it from the download page.

  • Note: Arduino IDE 1.8.7 has some breaking changes, causing board package and library installation failures. It is recommended to that you install version 1.8.6 or 1.8.8
  • The supported Arduino IDE versions are 1.6.x and later.
  • The Windows Store's version of the Arduino IDE is not supported because of the sandbox environment that the application runs in.


Open VS Code and press F1 or Ctrl + Shift + P to open command palette, select Install Extension and type vscode-arduino.

Or launch VS Code Quick Open (Ctrl + P), paste the following command, and press enter.

ext install vscode-arduino

You can also install directly from the Marketplace within Visual Studio Code, searching for Arduino.

Get Started

You can find code samples and tutorials each time that you connect a supported device. Alternatively you can visit our IoT Developer Blog Space or Get Started Tutorials.


This extension provides several commands in the Command Palette (F1 or Ctrl + Shift + P) for working with *.ino files:

  • Arduino: Board Manager: Manage packages for boards. You can add 3rd party Arduino board by configuring Additional Board Manager URLs in the board manager.
  • Arduino: Change Baud Rate: Change the baud rate of the selected serial port.
  • Arduino: Change Board Type: Change board type or platform.
  • Arduino: Close Serial Monitor: Stop the serial monitor and release the serial port.
  • Arduino: Examples: Show list of examples.
  • Arduino: Initialize: Scaffold a VS Code project with an Arduino sketch.
  • Arduino: Library Manager: Explore and manage libraries.
  • Arduino: Open Serial Monitor: Open the serial monitor in the integrated output window.
  • Arduino: Select Serial Port: Change the current serial port.
  • Arduino: Send Text to Serial Port: Send a line of text via the current serial port.
  • Arduino: Upload: Build sketch and upload to Arduino board.
  • Arduino: Upload Using Programmer: Upload using an external programmer.
  • Arduino: Verify: Build sketch.


  • Arduino: Upload Alt + Cmd + U or Alt + Ctrl + U
  • Arduino: Verify Alt + Cmd + R or Alt + Ctrl + R


Option Description
arduino.path Path to Arduino, you can use a custom version of Arduino by modifying this setting to include the full path. Example: C:\\Program Files\\Arduino for Windows, /Applications for Mac, /home/<username>/Downloads/arduino-1.8.1 for Linux. (Requires a restart after change). The default value is automatically detected from your Arduino IDE installation path.
arduino.commandPath Path to an executable (or script) relative to arduino.path. The default value is arduino_debug.exe for windows,Contents/MacOS/Arduino for Mac and arduino for Linux, You also can use a custom launch script to run Arduino by modifying this setting. (Requires a restart after change) Example: run-arduino.bat for Windows, Contents/MacOS/ for Mac and bin/ for Linux.
arduino.additionalUrls Additional Boards Manager URLs for 3rd party packages. You can have multiple URLs in one string with a comma(,) as separator, or have a string array. The default value is empty.
arduino.logLevel CLI output log level. Could be info or verbose. The default value is "info".
arduino.allowPDEFiletype Allow the VSCode Arduino extension to open .pde files from pre-1.0.0 versions of Ardiuno. Note that this will break Processing code. Default value is false.
arduino.enableUSBDetection Enable/disable USB detection from the VSCode Arduino extension. The default value is true. When your device is plugged in to your computer, it will pop up a message "Detected board ****, Would you like to switch to this board type". After clicking the Yes button, it will automatically detect which serial port (COM) is connected a USB device. If your device does not support this feature, please provide us with the PID/VID of your device; the code format is defined in misc/usbmapping.json.To learn more about how to list the vid/pid, use the following tools: npm install -g serialport serialport-list -f jsonline
arduino.disableTestingOpen Enable/disable automatic sending of a test message to the serial port for checking the open status. The default value is false (a test message will be sent).
arduino.skipHeaderProvider Enable/disable the extension providing completion items for headers. This functionality is included in newer versions of the C++ extension. The default value is false.
arduino.defaultBaudRate Default baud rate for the serial port monitor. The default value is 115200. Supported values are 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 74880, 115200, 230400 and 250000

The following Visual Studio Code settings are available for the Arduino extension. These can be set in global user preferences Ctrl + , or workspace settings (.vscode/settings.json). The latter overrides the former.

    "arduino.path": "C:/Program Files (x86)/Arduino",
    "arduino.commandPath": "arduino_debug.exe",
    "arduino.logLevel": "info",
    "arduino.allowPDEFiletype": false, 
    "arduino.enableUSBDetection": true,
    "arduino.disableTestingOpen": false,
    "arduino.skipHeaderProvider": false,
    "arduino.additionalUrls": [
    "arduino.defaultBaudRate": 115200

Note: You only need to set arduino.path in Visual Studio Code settings, other options are not required.

The following settings are as per sketch settings of the Arduino extension. You can find them in .vscode/arduino.json under the workspace.

    "sketch": "example.ino",
    "port": "COM5",
    "board": "adafruit:samd:adafruit_feather_m0",
    "output": "../build",
    "debugger": "jlink",
    "prebuild": "bash"
  • sketch - The main sketch file name of Arduino.
  • port - Name of the serial port connected to the device. Can be set by the Arduino: Select Serial Port command. For Mac users could be "/dev/cu.wchusbserial1420".
  • board - Currently selected Arduino board alias. Can be set by the Arduino: Change Board Type command. Also, you can find the board list there.
  • output - Arduino build output path. If not set, Arduino will create a new temporary output folder each time, which means it cannot reuse the intermediate result of the previous build leading to long verify/upload time, so it is recommended to set the field. Arduino requires that the output path should not be the workspace itself or in a subfolder of the workspace, otherwise, it may not work correctly. By default, this option is not set. It's worth noting that the contents of this file could be deleted during the build process, so pick (or create) a directory that will not store files you want to keep.
  • debugger - The short name of the debugger that will be used when the board itself does not have a debugger and there is more than one debugger available. You can find the list of debuggers here. By default, this option is not set.
  • prebuild - External command before building the sketch file. You should only set one prebuild command. command1 && command2 does not work. If you need to run multiple commands before the build, then create a script.

Debugging Arduino Code preview

Before you start to debug your Arduino code, please read this document to learn about the basic mechanisms of debugging in Visual Studio Code. Also see debugging for C++ in VSCode for further reference.

Make sure that your Arduino board can work with STLink, Jlink or EDBG. The debugging support is currently fully tested with the following boards:

Steps to start debugging:

  1. Plug in your board to your development machine properly. For those boards that do not have an on-board debugging chip, you need to use a STLink or JLink connector.
  2. Go to the Debug View (Ctrl + Shift + D). and set breakpoints in your source files.
  3. Press F5 to select your debugging environment.
  4. When your breakpoint is hit, you can see variables and add expression(s) to watch on the Debug Side Bar.

To learn more about how to debug Arduino code, visit our team blog.

Change Log

See the Change log for details about the changes in each version.

Supported Operating Systems

Currently this extension supports the following operating systems:

  • Windows 7 and later (32-bit and 64-bit)
  • macOS 10.10 and later
  • Ubuntu 16.04
    • The extension might work on other Linux distributions, as reported by other users, but without guarantee.


You can find the full list of issues on the Issue Tracker. You can submit a bug or feature suggestion, and participate in community driven discussions.


Installation prerequisites:

To run and develop, do the following:

  • git clone
  • cd vscode-arduino
  • Run npm i
  • Run npm i -g gulp
  • Open in Visual Studio Code (code .)
  • Press F5 to debug.

To test, press F5 in VS Code with the "Launch Tests" debug configuration.

Code of Conduct

This project has adopted the Microsoft Open Source Code of Conduct. For more information please see the Code of Conduct FAQ or contact with any additional questions or comments.

Privacy Statement

The Microsoft Enterprise and Developer Privacy Statement describes the privacy statement of this software.


This extension is licensed under the MIT License. Please see the Third Party Notice file for additional copyright notices and terms.

Contact Us

If you would like to help build the best Arduino experience with VS Code, you can reach us directly at gitter chat room.