Device OS (Firmware) for Particle Devices
Switch branches/tags
Clone or download
Failed to load latest commit information.
bootloader Merge branch 'release/v0.7.0-rc.7' into develop. Rebuilt wiced agains… Feb 5, 2018
build bump module version for 0.8.0-rc.11 (v310), update Sep 28, 2018
ci Feature/go faster stripes (#1439) Nov 22, 2017
communication-dynalib Squashed 'communication/lib/mbedtls/' changes from 7e3e6a9..785f0ab Dec 2, 2015
communication simplify and remove magic number Jul 30, 2018
crypto-dynalib Adds crypto and crypto-dynalib Jun 6, 2017
crypto photon: Enables support for sha384 and sha512 certificates for WPA En… Apr 5, 2018
docs fixes docs to install arm-none-eabi-gcc version 5.3.1 20160307 [ci-skip] Jul 16, 2018
dynalib Fixes unit tests. sizeof(void*) is 8 on 64-bit systems Jun 2, 2017
hal-dynalib Move DCT functions to the separate dynalib; minor refactoring Jun 2, 2017
hal do not check and lock bootloader write protect on every boot Sep 28, 2018
main Moves nanopb to separate static lib. Juggles some things around betwe… Jan 20, 2018
misc Remove Windows drivers from the repository Jun 11, 2016
modules bump module version for 0.8.0-rc.11 (v310), update Sep 28, 2018
nanopb Fixes a typo in nanopb/ Jan 20, 2018
newlib_nano Photon/P1/Electron: migrated to FreeRTOS heap_4 allocator Jul 10, 2017
platform Merge branch 'release/v0.7.0-rc.7' into develop. Rebuilt wiced agains… Feb 5, 2018
proto @ f3bb95a Don't use result codes to return application-specific values Jan 22, 2018
rt-dynalib DYNALIB_FN() now checks indices of the functions Mar 10, 2016
scripts removes the `--email` option which has been removed from docker login Dec 12, 2017
services-dynalib Squashed 'communication/lib/mbedtls/' changes from 7e3e6a9..785f0ab Dec 2, 2015
services adds PANIC SOS 14 for SemaphoreLockTimeout, and reduces timeout to a … Sep 28, 2018
system-dynalib Runtime logging configuration; asynchronous USB requests; helper tool… Oct 29, 2016
system bump module version for 0.8.0-rc.11 (v310), update Sep 28, 2018
user Update tests for SARA_R410 May 11, 2018
wiring fixes sticker-rig issue with POWER_ON command May 31, 2018
wiring_globals - Turns on -Wundef Jan 19, 2017
.buildpackrc update buildpack compiler to GCC version 5.3.1 Mar 8, 2017
.clang-format Reformat source files with clang-format Mar 22, 2016
.gitignore add build/releases/* to .gitignore Jan 6, 2017
.gitmodules Move protocol files to a git submodule Jan 19, 2018
.travis.yml Feature/go faster stripes (#1439) Nov 22, 2017 bump module version for 0.8.0-rc.11 (v310), update Sep 28, 2018 tweaks to contributing guide Mar 10, 2016 Updated [ci skip] Mar 30, 2017
LICENSE Clarify the firmware license to LGPL-3.0 (#994) May 5, 2016 Update [ci skip] Mar 30, 2017 fix CONTRIBUTE link Apr 4, 2018 beginnings of the style guide Feb 8, 2018
makefile Squashed 'communication/lib/mbedtls/' changes from 7e3e6a9..785f0ab Dec 2, 2015

Build Status

Particle Firmware for the Electron, P1, Photon and Core.

This is the main source code repository of the Particle firmware libraries.

Getting Started

To get started building firmware locally, see Getting Started.


Build System

Application Firmware Development

System Firmware Development




The firmware uses the GNU GCC toolchain for ARM Cortex-M processors, ARM's CMSIS libraries, STM32 standard peripheral libraries and Arduino's implementation of Wiring.

On the Core: TI's CC3000 host driver libraries, On the photon: Broadcom's WICED WiFi SDK.


Unless stated elsewhere, file headers or otherwise, all files herein are licensed under an LGPLv3 license. For more information, please read the LICENSE file.

Additionally, for Photon and P1 firmware (>= v0.7.0-rc.1) which use the Cypress WICED SDK, you agree to the terms of the Cypress IoT Community License Agreement.

The guidelines of the Cypress Community License agreement allow individuals to sell and redistribute compiled binaries, referred to as Software in object code format, built with WICED as a part of their own developer applications, but does not give any individuals permission to sell, redistribute, or share WICED source code without separate, explicit written permission from Cypress (which Particle has obtained).

If you have questions about software licensing, please contact Particle support.


This firmware is released under LGPL version 3, what does that mean for you?

  • You may use this commercially to build applications for your devices! You DO NOT need to distribute your object files or the source code of your Application under LGPL. Your source code belongs to you when you build an Application using this System Firmware.

When am I required to share my code?

  • You are NOT required to share your Application Firmware or object files when linking against libraries or System Firmware licensed under LGPL.

  • If you make and distribute changes to System Firmware licensed under LGPL, you must release the source code and documentation for those changes under a LGPL license.


  • This license allows businesses to confidently build firmware and make devices without risk to their intellectual property, while at the same time helping the community benefit from non-proprietary contributions to the shared System Firmware.

Questions / Concerns?

  • Particle intends for this firmware to be commercially useful and safe for our community of makers and enterprises. Please Contact Us if you have any questions or concerns, or if you require special licensing.

(Note! This FAQ isn't meant to be legal advice, if you're unsure, please consult an attorney)


Want to contribute to the Particle firmware project? Follow this link to find out how.


Having problems or have awesome suggestions? Connect with us here.