PlatformIO is an open source ecosystem for IoT development
(Cross-platform IDE and unified debugger. Remote testing and firmware updates)

Similar projects worth following is an open source ecosystem for IoT development. Cross-platform IDE and unified debugger. Remote unit testing and firmware updates.

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.6.7

    Ivan Kravets04/23/2019 at 10:01 0 comments

    • PIO Unified Debugger: improved debugging in debug_load_mode = modified and fixed an issue with useless project rebuilding
    • Project Generator: fixed a VSCode C/C++'s "Cannot find" warning when CPPPATH folder does not exist
    • Fixed an "IndexError: list index out of range" for Arduino sketch preprocessor (issue #2268)
    • Fixed an issue when invalid "env_default" in "platformio.ini" (Project Configuration File) results into unhandled errors (issue #2265)

  • PlatformIO Core 3.6.6

    Ivan Kravets03/29/2019 at 10:50 0 comments

    • Project Generator: fixed a warning "Property !!! WARNING !!! is not allowed" for VSCode (issue #2243)
    • Fixed an issue when PlatformIO Build System does not pick up "mbed_lib.json" files from libraries (issue #2164)
    • Fixed an error with conflicting declaration of a prototype (Arduino sketch preprocessor)
    • Fixed "FileExistsError" when platformio ci command is used in pair with --keep-build-dir option
    • Fixed an issue with incorrect order of project "include" and "src" paths in CPPPATH (issue #1914)

  • PlatformIO Core 3.6.5

    Ivan Kravets03/07/2019 at 12:22 0 comments

  • PlatformIO Core 3.6.4

    Ivan Kravets01/23/2019 at 19:03 0 comments

    • Improved Project Generator for IDEs:
      • Use full path to PlatformIO CLI when generating a project (issue #1674)
      • CLion: Improved project portability using "${CMAKE_CURRENT_LIST_DIR}" instead of full path
      • Eclipse: Provide language standard to a project C/C++ indexer (issue #1010)
    • Fixed an issue with incorrect detecting of compatibility (LDF) between generic library and Arduino or ARM mbed frameworks
    • Fixed "Runtime Error: Dictionary size changed during iteration" (issue #2003)
    • Fixed an error "Could not extract item..." when extracting TAR archive with symbolic items on Windows platform (issue #2015)

  • PlatformIO Core 3.6.3

    Ivan Kravets12/12/2018 at 14:24 0 comments

    • Ignore *.asm and *.ASM files when building Arduino-based library (compatibility with Arduino builder)
    • Fixed spurious project's "Problems" for PlatformIO IDE for VSCode when ARM mbed framework is used
    • Fixed an issue with a broken headers list when generating ".clang_complete" for Emacs (issue #1960)

  • PlatformIO Core 3.6.2

    Ivan Kravets11/29/2018 at 16:54 0 comments

    • Improved IntelliSense for PlatformIO IDE for VSCode via passing extra compiler information for C/C++ Code Parser (resolves issues with spurious project’s “Problems”)
    • Fixed an issue with VSCode IntelliSense warning about the missed headers located in includefolder
    • Fixed incorrect wording when initializing/updating project
    • Fixed an issue with incorrect order for library dependencies CPPPATH (issue #1914)
    • Fixed an issue when Library Dependency Finder (LDF) does not handle project src_filter (issue #1905)
    • Fixed an issue when Library Dependency Finder (LDF) finds spurious dependencies in chain+and deep+ modes (issue #1930)

  • PlatformIO Core 3.6.1

    Ivan Kravets11/29/2018 at 16:53 0 comments

    • Generate an include and test directories with a README file when initializing a new project
    • Support in-line comments for multi-line value (<span class="pre">lib_deps</span><span class="pre">build_flags</span>, etc) in “platformio.ini” (Project Configuration File)
    • Added <span class="pre">$PROJECT_HASH</span> template variable for build_dir. One of the use cases is setting a global storage for project artifacts using PLATFORMIO_BUILD_DIR system environment variable. For example, <span class="pre">/tmp/pio-build/$PROJECT_HASH</span> (Unix) or <span class="pre"></span> (Windows)
    • Improved a loading speed of PIO Home “Recent News”
    • Improved PIO Unified Debugger for “mbed” framework and fixed issue with missed local variables
    • Introduced “Release” and “Debug” Build Configurations
    • Build project in “Debug Mode” including debugging information with a new >span class="pre"###debug target using platformio run command or targets option in <span class="pre">platformio.ini</span>. The last option allows avoiding project rebuilding between “Run/Debug” modes. (issue #1833)
    • Process <span class="pre">build_unflags</span> for the cloned environment when building a static library
    • Report on outdated 99-platformio-udev.rules (issue #1823)
    • Show a valid error when the Internet is off-line while initializing a new project (issue #1784)
    • Do not re-create “.gitignore” and “.travis.yml” files if they were removed from a project
    • Fixed an issue when dynamic build flags were not handled correctly (issue #1799)
    • Fixed an issue when <span class="pre">pio</span> <span class="pre">run</span> <span class="pre">-t</span> <span class="pre">monitor</span> always uses the first <span class="pre">monitor_port</span> even with multiple environments (issue #1841)
    • Fixed an issue with broken includes when generating <span class="pre">.clang_complete</span> and space is used in a path (issue #1873)
    • Fixed an issue with incorrect handling of a custom package name when using platformio lib install or platformio platform install commands

  • PlatformIO Core 3.6.0

    Ivan Kravets08/06/2018 at 15:51 0 comments

    • Program Memory Usage
      • Print human-readable memory usage information after a build and before uploading
      • Print detailed memory usage information with "sections" and "addresses" in verbose mode
      • Check maximum allowed "program" and "data" sizes before uploading/programming (issue #1412)
    • PIO Unit Testing:
    • Check package structure after unpacking and raise error when antivirus tool blocks PlatformIO package manager (issue #1462)
    • Lock interprocess requests to PlatformIO Package Manager for install/uninstall operations (issue #1594)
    • Fixed an issue with PIO Remote when upload process depends on the source code of a project framework
    • Fixed an issue when srcFilter field in library.json breaks a library build (issue #1735)

  • PlatformIO Core 3.5.4

    Ivan Kravets07/03/2018 at 12:43 0 comments

  • PlatformIO 3.5.3

    Ivan Kravets06/01/2018 at 14:28 0 comments

    • PlatformIO Home - interact with PlatformIO ecosystem using modern and cross-platform GUI:
      • "Recent News" block on "Welcome" page
      • Direct import of development platform's example
    • Simplify configuration for PIO Unit Testing: separate main program from a test build process, drop requirement for #ifdef UNIT_TEST guard
    • Override any option from board manifest in Project Configuration File "platformio.ini" (issue #1612)
    • Configure a custom path to SVD file using debug_svd_path option
    • Custom project description which will be used by PlatformIO Home
    • Updated Unity tool to 2.4.3
    • Improved support for Black Magic Probe in "uploader" mode
    • Renamed "monitor_baud" option to "monitor_speed"
    • Fixed issue when a custom lib_dir was not handled correctly (issue #1473)
    • Fixed issue with useless project rebuilding for case insensitive file systems (Windows)
    • Fixed issue with build_unflags option when a macro contains value (e.g., -DNAME=VALUE)
    • Fixed issue which did not allow to override runtime build environment using extra POST script
    • Fixed "RuntimeError: maximum recursion depth exceeded" for library manager (issue #1528)

View all 51 project logs

  • 1
    Step 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?



Christoph wrote 04/28/2019 at 19:35 point

Is there a public chat for platformio on hackaday?

  Are you sure? yes | no

Jacob Killelea 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

Jacob Killelea 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