Internet of Things

IoT Needs an OS Too!

Internet of Things

In the last blog , we briefly described the Internet of Things & how it may affect the future, different scenarios where it is implemented and is proving to be very beneficial.

Now let’s take a deeper look inside this ecosystem of devices & as you all know every Internet enabled device does need a Software, so do the ‘things’ in ‘Internet of Things’. Consider a case where a new community of people is formed & they all originate from different regions; for them in order to communicate, it is essential that they follow some common language & maybe some rules of the community. Similarly, how do you think will these things (devices) communicate with each other without having some pre-defined protocol or rules? Here it becomes necessary to have a common platform that would be used for the devices to communicate, and yes that platform will eventually be the Operating system of the Internet of Things. Yes, the IoT too needs an OS!!

The IoT is still evolving and so is the ecosystem of hardware/software around it. In terms of software, there are quite a handful of operating systems that have come up, each with different features but somewhat similar underlying principles. The technology (or programming language) might differ, but after all these are electronic devices that would understand either 0 or 1. We shall shortly take a look at a few of these operating systems that are available, but before that let us think through some features that should be present in an OS for the IoT.

What kind of features do you think will be suitable for an OS that would be loaded on a device with minimal memory/hardware? Let us list them down –

  • Minimal Memory
  • Support for multiple connectivity protocol (Wi-Fi/Ethernet, Bluetooth, Zigbee, Cellular)
  • Real-time communication
  • Power management
  • Security
  • Scalability
  • Support for different processor architectures

The above features will cater for the devices, now since this is an ecosystem, we should also consider the management of these devices from an administration, reporting aspects and of course from our own i.e. Developers perspective. Here are some features for the same –

  • Support for Third party libraries
  • Support for Web Services
  • Cloud Infrastructure
  • Data management (Dashboards/Visualization)
  • Open Source
  • Developer friendly (What’s that?!)

Wow, now that’s like some features that will make these tiny devices on the IoT a powerful packet. Of course, since this is still an evolving field, no one OS fits all these features; however most of them cater to the basic features that are essential for any device to run & do real-time communication.

Let us take a brief look at some of the operating systems that are currently available & that supports maximum of the above requirements –

Contiki OS

Contiki is one of the oldest OS in the IoT arena & has been designed to function on hardware devices that are heavily constrained in terms of Memory, Bandwidth & Power. It has been mainly used for Smart street lighting systems, radiation monitoring systems and surveillance systems.

From the connectivity perspective, Contiki is not really very powerful & relies on the ulP TCP/IP stack, ulPv6 stack and Rime stack (a set of custom lightweight protocol for power constrained wireless networks). Essentially, Contiki is more of an embedded OS that caters to older generation processing devices and has minimal support for advanced features like real-time control, data monitoring and cloud services. It does not have in-built features for these services; additional plug-ins can always be developed around it.

RIOT OS

RIOT OS has picked up pace recently & is an Open Source OS based on microkernel & designed for energy efficiency and hardware independent development. It is one of the most developer friendly OS & supports standard programming languages C & C++ and has an almost zero learning curve for embedded programming.

In terms of connectivity, it supports 6LoWPAN (IPv6 for low powered wireless networks), TCP and UDP protocols. It also provides support for cryptographic libraries, advanced data structures and support for various microcontrollers, sensors and other related hardware. Its real-time capabilities and multi-threading with very low overhead is one of its major advantages that makes it a friendly & popular OS for the IoT.

Spark OS

Now, upon reading the description of the above two systems, you might feel that these jargons and terms are not your piece of cake & is a bit distant for the average programmer who heavily relies on minimal configurations, ready to use API & an easy interface for programming. And above all this, you might not have any exposure to core hardware. Here, Spark is very effective; it not only provides a power-packed OS but also the Spark Core; a cheap, tiny device that can turn practically any electronic device into an internet enabled device with minimal hardware intrusion.

It has been designed to be an easy to use system for novices and even students. Moreover, it provides REST API, yes you read it correct – & this means you can create an incredible user experience that interacts with the hardware on the web or even mobile. Above this, it provides you with a plethora of user-friendly features like a Web IDE, Tons of libraries to ease development effort, Pub/Sub communication, High scalability & a good data reporting/visualization module. With these features & upcoming ones like Virtual Private Cloud, it is definitely going to the one that will scale up the ranks as an OS for the IoT.

Conclusion

There are definitely a lot more systems coming up or some already in use for the Internet of Things. In fact, it is also believed that the way Android OS has been making its footprint on almost every connected device – from smart phones, watches, thermostats and now even cars – it may not be surprising that it may take over as the OS of the IoT. There is not much new development to be done; it already provides a full stack of features right from memory, power to all types of connectivity mechanisms and it will only be the Apps that will need to be developed efficiently that will communicate with other Internet enabled devices and complete the ecosystem.

Eventually, there might not be just one OS that caters because there are is broad array of devices each with different hardware characteristics that actually compose the Internet of Things and so far there is not one system has made its mark to call itself ‘The OS of the IoT’.

For more information on Internet of Things click here

Further reading & references

  1. http://www.contiki-os.org/
  2. http://www.dunkels.com/adam/dunkels04contiki.pdf
  3. http://www.riot-os.org/
  4. https://www.spark.io/
  5. http://www.infoworld.com/article/2610361/big-data/android-will-power-the-internet-of-things.html