The power of Open Source is the power of the people. The people rule
– Philippe Kahn (the creator of world’s first camera phone)
The open source movement which started in 1998 as a niche went on to become a mainstream movement after the success of projects like Linux, Ubuntu, MySQL, Apache, etc. Later on, big companies like IBM, Microsoft, and Apple started using the open-source software development model.
Today, companies in IoT space like Samsung, Google, Huawei, and ARM are embracing the open source model by opening up their projects (both hardware and software) to the developer community and inviting them to contribute in building a world that is technologically reliable and robust.
Here are 7 operating systems for IoT devices that are open source and used to power a wide range of smart devices from wearables to driverless cars.
Note: All the operating systems that I’m writing about have two properties in common:
- Low memory footprint
- High power efficiency
Google offers this as an Android-based operating system for embedded devices. It can run on constrained/low-end devices with at least 128MB of ROM and 32MB of RAM.
Brillo supports intercommunication technologies such as
Brillo uses secure boot and signed over-the-air updates which make it more secure. Brillo supports various architectures such as
It was created in 2002 by Adam Dunkels and, currently, has developers all over the world. This open source software is released under a BSD license. Contiki has a built-in Internet Protocol suite (TCP/IP stack) and provides multitasking. It can comfortably work on constrained devices with 30KB of RAM and 30KB of ROM.
Contiki is supported on hardware platforms such as
- TI CC2538
- TI MSP430x
- Atmel AVR
- TI MSP430
- Atmel Atmega128rfa1
RIOT is an IoT operating system with real-time capabilities. It was first developed by a consortium of universities in Germany and France, which included Free University of Berlin, French Institute for Research in Computer Science and Automation, and Hamburg University of Applied Sciences. It is released under the GNU Lesser General Public License (LGPL).
It is based on microkernel architecture and runs on 8-32bit microcontrollers. RIOT supports multi-threading and the entire IoT network stack, which includes
- 802.15.4 Zigbee
RIOT can run on constrained devices with a minimum of 1.5KB of RAM and 5KB of ROM; it supports architectures such as
- Cortex-M0,M3 and M4
It is developed by Chinese telecom giant Huawei. It was released in 2015 under ISC license. LiteOS is a real-time operating system of just 10KB in size and it supports advanced features such as
- Auto discovery
- Zero configuration
- Auto networking
It supports interconnection technologies such as
Kernel of LiteOS supports multi-CPU architectures such as
LiteOS can be installed on devices already running on Android, and it can be connected with various other third-party devices.
Similar to RIOT and LiteOS, Apache Mynewt is also a real-time operating system for IoT devices.
The source code of Mynewt is distributed under Apache License 2.0. The OS is capable of running on constrained devices with a minimum of 8KB of RAM and 64 KB of ROM. The Kernel of the OS is just 6KB but supports the following:
- Preemptive multithreading
- Priority-based scheduling
- Memory heap and memory pool allocation
- Multi-stage software watchdog
The biggest drawback of Apache Mynewt is its interconnection technology; as of now, it only supports Bluetooth low energy, but Wi-Fi, Thread, and Bluetooth 5 are part of the roadmap.
Currently, Apache Mynewt supports boards such as
- Arduino Zero and Zero Pro
- Arduino M0 Pro with ATSAMR21G18a Cortex M0
- Arduino 101 (Bluetooth controller only)
- Arduino Primo (Bluetooth controller and host)
This is a collaborative project under Linux Foundation and is available through the Apache 2.0 license. It was launched in February 2016.
In Zephyr OS, there are no loadable kernel modules because the kernel is statically compiled into a single binary executable file. This makes Zephyr safe from compile time attacks.
Zephyr is a real-time operating system which can run on a device with memory as small as 8KB. The biggest strength of Zephyr is its interconnectivity technology, which includes
- Bluetooth LE
Zephyr supports the following architectures:
Canonical, the company behind Ubuntu, recently released Ubuntu Core 16, which is also known as Snappy. It is called Snappy because the operating system (including Kernel, libraries and major applications) is delivered as a Linux application package known as snaps. The base file of Ubuntu core 16 is 350MB and all the files after installation are stored as images.
The Ubuntu Core 16 is compatible with the following boards:
- Qualcomm Dragonboard
- Samsung Artik
- Intel Joule
- Raspberry Pi2 and Pi3
To know more about the Ubuntu Core 16, read this article “Ubuntu Core 16: Building secure and interoperable IoT ecosystems.”
Open source is not just a business model or software development model but is a big opportunity for both professional coders and hobby programmers to touch a billion people and change their lives forever by contributing to opensource projects and pushing good code.