PlatformIO is an open source ecosystem for IoT development
(Cross-platform code builder. Continuous and IDE integration. Arduino and MBED)

Similar projects worth following is an open source ecosystem for IoT development. Cross-platform build system and library manager. Continuous and IDE integration. Arduino and ARM mbed compatible.

Supported development platforms: Atmel AVR & SAM, Espressif, Freescale Kinetis, Nordic nRF51, NXP LPC, Silicon Labs EFM32, ST STM32, TI MSP430 & Tiva, Teensy, Arduino, mbed, libOpenCM3, etc.

While itself is a console application, it can be used in combination with one’s favourite IDE Integration or text editor such as Arduino, Atom, CLion, Eclipse, Qt Creator, Sublime Text, VIM, Visual Studio, etc.

Embedded Development. Easier Than Ever.

Smart Code Builder. Fast and Reliable.

  • Reliable, automatic dependency analysis and detection of build changes
  • Improved support for parallel builds
  • Ability to share built files in a cache
  • Lookup for external libraries which are installed via Library Manager

The Missing Library Manager. It’s here!

  • Friendly Command-Line Interface
  • Modern Web 2.0 Library Search
  • Library dependency management
  • Automatic library updating
  • It runs on Windows, Mac OS X, and Linux (+ARM).

  • PlatformIO Core 3.3

    Ivan Kravets03/27/2017 at 12:00 0 comments

    • PlatformIO Library Registry statistics with new pio lib stats command
      • Recently updated and added libraries
      • Recent and popular keywords
      • Featured libraries (today, week, month)
    • List built-in libraries based on development platforms with a new pio lib builtin command
    • Show detailed info about a library using pio lib show command (issue #430)
    • List supported frameworks, SDKs with a new pio platform frameworks command
    • Visual Studio Code extension for PlatformIO (issue #619)
    • Added new options --no-reset, --monitor-rts and --monitor-dtr to pio test command (allows to avoid automatic board's auto-reset when gathering test results)
    • Added support for templated methods in *.ino to *.cpp converter (pull #858)
    • Package version as "Repository URL" in manifest of development version ("version": "";)
    • Produce less noisy output when -s/--silent options are used for platformio init and platformio run commands (issue #850)
    • Use C++11 by default for CLion IDE based projects (pull #873)
    • Escape project path when Glob matching is used
    • Do not overwrite project configuration variables when system environment variables are set
    • Handle dependencies when installing non-registry package/library (VCS, archive, local folder) (issue #913)
    • Fixed package installing with VCS branch for Python 2.7.3 (issue #885)

  • PlatformIO Core 3.2

    Ivan Kravets12/07/2016 at 21:11 0 comments

  • PlatformIO IDE 1.7.0

    Ivan Kravets12/01/2016 at 16:51 0 comments

    • Added new Toolbar button to run other targets
    • Added new Toolbar button to toggle Build Panel
    • Added file specific icons to TreeView
    • Added Minimap with preview of the full source code
    • Fixed "Menu: PlatformIO > Install Shell Commands" for Windows
    • Fixed issue with "Uncought Error: Failed to get boards"

  • PlatformIO IDE 1.6.0 and PlatformIO CLI 3.1.0

    Ivan Kravets09/19/2016 at 20:45 0 comments

    PlatformIO IDE 1.6.0

    • Library Manager page with advanced explanations how to use it
    • Asynchronous C/C++ project index rebuilding (Autocomplete, Linter)
    • Added new setting Show PlatformIO service files in Tree View that is turned off by default
    • Added new baud rates (460800 and 921600) to Serial Port Monitor

    PlatformIO CLI 3.1.0

    • New! Dynamic variables/templates for Project Configuration File "platformio.ini" (issue #705)
    • Summary about processed environments (issue #777)
    • Implemented LocalCache system for API and improved a work in off-line mode
    • Improved Project Generator when custom --project-option is passed to platformio init command
    • Deprecated lib_force option, please use lib_deps instead
    • Return valid exit code from plaformio test command
    • Fixed Project Generator for CLion IDE using Windows OS (issue #785)
    • Fixed SSL Server-Name-Indication for Python < 2.7.9 (issue #774)

  • PlatformIO 3.0

    Ivan Kravets09/08/2016 at 11:58 0 comments

    • PlatformIO Plus
    • Decentralized Development Platforms
    • Library Manager 3.0
      • Project dependencies per build environment using lib_deps option (issue #413)
      • Semantic Versioning for library commands and dependencies (issue #410)
      • Multiple library storages: Project's Local, PlatformIO's Global or Custom (issue #475)
      • Install library by name (issue #414)
      • Depend on a library using VCS URL (GitHub, Git, ARM mbed code registry, Hg, SVN) (issue #498)
      • Strict search for library dependencies (issue #588)
      • Allowed library.json to specify sources other than PlatformIO's Repository (issue #461)
      • Search libraries by headers/includes with platformio lib search --header option
    • New Intelligent Library Build System
      • Library Dependency Finder that interprets C/C++ Preprocessor conditional macros with deep search behavior
      • Check library compatibility with project environment before building (issue #415)
      • Control Library Dependency Finder for compatibility using lib_compat_mode option
      • Custom library storages/directories with lib_extra_dirs option (issue #537)
      • Handle extra build flags, source filters and build script from library.json (issue #289)
      • Allowed to disable library archiving (*.ar) (issue #719)
      • Show detailed build information about dependent libraries (issue #617)
      • Support for the 3rd party manifests (Arduino IDE "" and ARM mbed "module.json")
    • Removed enable_prompts setting. Now, all PlatformIO CLI is non-blocking!
    • Switched to SSL PlatformIO API
    • Renamed platformio serialports command to platformio device
    • Build System: Attach custom Before/Pre and After/Post actions for targets (issue #542)
    • Allowed passing custom project configuration options to platformio ci and platformio initcommands using -O, --project-option.
    • Print human-readable information when processing environments without -v, --verbose option (issue #721)
    • Improved INO to CPP converter (issue #659, issue #765)
    • Added license field to library.json (issue #522)
    • Warn about unknown options in project configuration file platformio.ini (issue #740)
    • Fixed wrong line number for INO file when #warning directive is used (issue #742)
    • Stopped supporting Python 2.6

  • PlatformIO IDE 1.4.0 and PlatformIO CLI 2.11.2

    Ivan Kravets08/02/2016 at 19:44 0 comments

    PlatformIO IDE 1.4.0

    • Added "Local echo" to advanced settings for Serial Port Monitor (#144)
    • Improved PlatformIO IDE Installer for Linux Arch and macOS (#146)

    PlatformIO CLI 2.11.2

    • Improved support for Microchip PIC32 development platform and ChipKIT boards issue #438
    • Added support for Pinoccio Scout board issue #52
    • Added support for Teensy USB Features (HID, SERIAL_HID, DISK, DISK_SDFLASH, MIDI, etc.) issue #722
    • Switched to built-in GCC LwIP library for Espressif development platform
    • Added support for local --echo for Serial Port Monitor issue #733
    • Updated udev rules for the new STM32F407DISCOVERY boards issue #731
    • Implemented firmware merging with base firmware for Nordic nRF51 development platform issue #500, issue #533
    • Fixed Project Generator for ESP8266 and ARM mbed based projects (resolves incorrect linter errors)
    • Fixed broken LD Script for Element14 chipKIT Pi board issue #725
    • Fixed firmware uploading to Atmel SAMD21-XPRO board using ARM mbed framework issue #732

  • PlatformIO IDE 1.3.4

    Ivan Kravets07/21/2016 at 14:13 0 comments

    • Improved cache system of PlatformIO IDE Installer
    • Force open Tree View when new project is added/opened
    • Fixed issue "‘platformio’ is not recognized as an internal or external command" for Windows OS (#138)

  • PlatformIO IDE 1.3.1 and PlatformIO CLI 2.11.1

    Ivan Kravets07/12/2016 at 17:26 0 comments

    PlatformIO IDE 1.3.1

    • Handle Path and PATH environment variables for Windows OS (#134)
    • Better handling of opened projects with soft links (#136)
    • Improved compatibility with Arduino IDE when "Import Arduino IDE Project..." is used
    • Fixed issue with upgrading PlatformIO IDE from Atom Registry

    PlatformIO CLI 2.11.1

    • Added support for Arduino M0, M0 Pro and Tian boards (issue #472)
    • Added support for Microchip chipKIT Lenny board
    • Updated Microchip PIC32 Arduino framework to v1.2.1
    • Documented uploading of EEPROM data (from EEMEM directive)
    • Added Rebuild C/C++ Project Index target to CLion and Eclipse IDEs
    • Improved project generator for CLion IDE
    • Added udev rules for OpenOCD CMSIS-DAP adapters (issue #718)
    • Auto-remove project cache when PlatformIO is upgraded
    • Keep user changes for .gitignore file when re-generate/update project data
    • Ignore [platformio] section from custom project configuration file when platformio ci –project-confcommand is used
    • Fixed missed --boot flag for the firmware uploader for ATSAM3X8E Cortex-M3 MCU based boards (Arduino Due, etc) (issue #710)
    • Fixed missing trailing \ for the source files list when generate project for Qt Creator IDE (issue #711)
    • Split source files to HEADERS and SOURCES when generate project for Qt Creator IDE (issue #713)

  • PlatformIO IDE 1.3.0 and PlatformIO CLI 2.11.0

    Ivan Kravets06/28/2016 at 17:07 0 comments

    PlatformIO IDE 1.3.0

    • Initial support of PlatformIO 3.0 CLI
    • Added advanced "Encoding" option (hexlify) for the Serial Monitor (#118)
    • Automatically select active project directory for "Initialize Project..." (#131)
    • Export IDE's process PATH to the PlatformIO Terminal (#47)
    • Cleanup dead installation lock file (#113)
    • Fixed issue with Python and system locale (#112)

    PlatformIO CLI 2.11.0

    • New ESP8266-based boards: Generic ESP8285 Module, Phoenix 1.0 & 2.0, WifInfo
    • Added support for Arduino M0 Pro board (issue #472)
    • Added support for Arduino MKR1000 board (issue #620)
    • Added support for Adafruit Feather M0, SparkFun SAMD21 and SparkFun SAMD21 Mini Breakout boards (issue #520)
    • Updated Arduino ESP8266 core for Espressif platform to 2.3.0
    • Better removing unnecessary flags using build_unflags option (issue #698)
    • Fixed issue with platformio init --ide command for Python 2.6

  • PlatformIO 2.10.3

    Ivan Kravets06/15/2016 at 16:55 0 comments

    • Fixed issue with platformio init --ide command

View all 35 project logs

  • 1

    PlatformIO can run on different operating systems. But more importantly, from development perspective at least, is a list of supported boards and MCUs. To keep things short: PlatformIO supports over 150+ Embedded Boards and all major Development Platforms.

    PlatformIO allows users to:

    • Decide which operation system they want to run development process on. You can even use one OS at home and another at work.
    • Choose which editor to use for writing the code. It can be pretty simple editor or powerful favorite IDE Integration.
    • Focus on the code development, significantly simplifying support for the Platforms & Embedded Boards and MCUs.

    How does it work?

    Without going too deep into PlatformIO implementation details, work cycle of the project developed using PlatformIO is as follows:

    • Users choose board(s) interested in Project Configuration File platformio.ini
    • Based on this list of boards, PlatformIO downloads required toolchains and installs them automatically.
    • Users develop code and PlatformIO makes sure that it is compiled, prepared and uploaded to all the boards of interest.

View all instructions

Enjoy this project?



jake_k wrote 06/17/2016 at 07:00 point

I'm liking the way this works quite a lot, but output tends to be really verbose. Is there a way to reduce that?

  Are you sure? yes | no

jake_k wrote 06/17/2016 at 07:18 point

Much better, thank you.

  Are you sure? yes | no

John Boyd wrote 04/25/2016 at 15:06 point

I really like your project! I had some questions I couldnt find on the website. Does the software support programming and debugging? Is it restricted to using the wiring language?


  Are you sure? yes | no

Ivan Kravets wrote 04/25/2016 at 18:25 point

> Does the software support programming and debugging?

Currently, the software supports only programming. However, we are working on debugging too. We hope that our user will see the first results very soon.

> Is it restricted to using the wiring language?

We have support for more than 10+ different frameworks, SDK and etc. See

  Are you sure? yes | no

John Boyd wrote 04/25/2016 at 18:46 point

Thanks for your reply. I see the frameworks tab now. Thanks! I will be giving this a try this weekend :)

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates