The operating system of your IoT devices is a vital piece of the puzzle that determines whether your IoT implementation will be successful or not. Operating systems have to match hardware, offer the right environment for applications, and work with all the other elements of your organization. They also have to be maintained and secured.
Before we get into how to choose an operating system, let’s look at what they are, and which ones are most used in IoT.
IoT operating systems: what are they and what do they do?
The operating system of a device is the layer of software that communicates between the computer’s hardware and the applications running on it. It’s the OS that turns movements of a mouse or a keyboard into instructions to the components of the computer. And IoT devices are computers.
There’s a concept in computing called Turing-completeness: given enough time, any Turing-complete computer can do anything that any other computer can. The chips and components in an IoT device may be fairly basic, but even though the device may have been built to do one specific task, the computer inside it can do anything. (This is one reason why IoT networks are such tempting targets for hackers.)
Because they’re computers, IoT devices need an operating system. The alternative is to write every application for them in machine code, which can be done but is wildly expensive and time-consuming.
At first glance, the most-used operating systems for IoT devices are Windows and Linux. Linux absolutely dominates, accounting for over 70% of all IoT operating systems, for reasons which will become clear below. (The devices used to access and control IoT systems typically use Android, Unix, or a conventional desktop OS and control the network through an application.)
This graph shows non-Linux OSs for IoT devices:
Note that these figures are for the percentages of the non-Linux market share, not for absolute market share.
A small number of ‘minority’ OSs such as Contiki and RIOT OS are represented, and these will be briefly discussed below. By far the majority of the market is taken up by Windows, FreeRTOS, and ‘No OS/Bare metal.’
Because of its greater familiarity outside the world of IoT applications, let’s start by discussing Windows.
Windows IoT operating systems
Windows 10 IoT is the operating system used for a slight, and somewhat diminishing, plurality of IoT devices. It’s based on the Windows 10 operating system, with some tweaks to make it a better choice for connected devices. It comes in two ‘flavors’ — Windows 10 IoT Core, and Windows 10 IoT Enterprise.
Windows 10 IoT Core
Core is intended to be used in networks with small-scale smart devices. It has relatively low system requirements, so it will run on a wider range of low-performance devices. It supports ARM architecture, which is a method of structuring computers commonly used on low-power, (relatively) low-performance devices like smartphones, laptops and many IoT devices. (If you’re interested, ARM is two acronyms inside each other, known as a recursive acronym: it stands for Acorn RISC Machine, where RISC stands for Reduced Instruction Set Computer.) There’s no graphical interface similar to what you’d see on a Windows desktop or laptop, and it has limited interoperability with other Windows devices.
Windows IoT Enterprise
Enterprise, as the name suggests, is a different and more powerful beast. It’s more like a traditional Windows OS with features added rather than stripped back. Enterprise is part of the Microsoft Embedded family and comes with a range of features for embedded system development. These include running any 32-bit Windows-based application — though Enterprise does not support ARM architecture.
So the division between Core (light, headless, ARM-friendly) and Enterprise (big, UI, interoperable with conventional Windows, no ARM) is clear. Enterprise is widely used in larger, static tools: medical equipment like scanners, industrial solutions, telecoms, and ATMs.
There is now a Windows 11 IoT operating system as well, currently available with fewer licensing options than Windows 10 IoT OSs because of its newness. It’s also less widely used, for the same reason. It’s an upgrade of Windows 10 IoT that offers similar functionality, in the terms discussed in this post.
Linux IoT operating systems
Linux OSs account for the majority of IoT operating systems. Linux was the first open-source operating system, designed to be as versatile and capable as possible. It runs equally well on mainframes, servers, and tiny devices like Raspberry Pis. It’s one of the most-used server OSs because of this. (Nearly every successful OS now owes a lot to Linux: Windows and Mac OS are both based on it, and Android is a skin over a Linux kernel.)
Because of its great versatility, Linux users can tailor Linux to their needs and those of their devices. Linux comes in ‘distributions’ — assemblies of the components that make up the Linux operating system.
The most commonly-used Linux distributions are Debian and its derivatives:
Linux distributions differ in two important ways. First, they’re designed to work with different machines and perform different tasks. Second, they have different relationships between the developers, rights holders, and end users. For instance, Red Hat Enterprise Linux (RHEL) is an IBM product. IBM owns the rights, and end users can turn to IBM for support. Fedora is the testing ground for RHEL, analogous to Chrome’s Canary project. Debian, the most popular Linux distribution for IoT, is totally free, open-source, and supported only by the community.
Thus, you can have the parts you need, and leave out the parts you don’t. Experienced developers can tailor your OS further, fully customizing it to your devices, which makes them more stable and efficient.
FreeRTOS is a free Real-Time Operating System developed by MIT. It’s designed for use with IoT implementations, with a small footprint and wide applicability. FreeRTOS users can build the OS they want from pre-existing FreeRTOS components and capabilities, but it is less adaptable than Linux. It is often more suitable for very low-powered networks, however.
Other choices: bare metal and minority OSs
At first glance, the prevalence of OS-less implementations seems difficult to explain. Building applications without an OS means doing all the work yourself, adding considerably to the complexity, difficulty, and failure risk of the developer’s job. Interoperability needs to be managed too.
However, OS-less implementations make sense in cases of very low computing power, or where the devices have access to very little electrical power, and many IoT networks are in this position. In very low-power, low-compute networks, BareMetal and FreeRTOS together account for about 40% of the market, with Linux also accounting for about 40% of this market.
Minority OSs such as Zephyr, VX, and Contiki are typically open-source OSs focused on light weight and small footprint, chosen for specific applications on low-power networks. Even where they’re not open-source, as in Wind River’s proprietary VxWorks, they retain a focus on getting the best performance from networks and devices with constrained power.
Choosing between them: Linux, Windows, or something else?
There’s no perfect OS. Every choice involves a trade-off, usually between several factors. This trade-off isn’t always obvious.
Linux is open source. There are commercial distributions available, but anyone can download and install Linux for free.
Windows 10 IoT is usually offered by subscription, and Microsoft starts charging at 30¢ per month for Core. Users also get access to Azure services. Enterprise is offered under a range of licensing structures and permissions. You can download a free evaluation copy on a 90-day trial here.
FreeRTOS is free here. Here’s a list of download links to minority OSs mentioned in this post:
This means cost stacks up differently depending on what your IoT implementation is intended to do. A very small, simple IoT network might be most cost-efficient with Windows IoT Core: 50 devices would add up to just $15 per month. You get a known, supported OS that many IoT devices are manufactured to be compatible with, and a low monthly cost. Very large networks can end up costing more significant sums, but it’s usually quite small in comparison to the profits they generate.
However, a specialized implementation might be cheaper to run on a custom Linux build. A few developer-hours organizing the OS to do what you want and work with your devices might cost less over the network’s lifespan than a subscription. This is even more likely to be the case if you select an OS that perfectly matches your devices and intended use — but making this selection requires specialist skills.
There’s another way to view cost, too: lost profits. If your IoT network works less well because of your operating system choices, you’re losing money just as surely as if you paid it to Microsoft — or to a developer. You’re just not getting anything back for it.
In some applications, support isn’t necessary or can be minimal. In others, it can be provided effectually by a third-party contractor. However, for some uses — notably highly-regulated ones like medical devices — comprehensive and timely support is a necessity. For this reason, these devices often use Windows for its integration into the Microsoft ecosystem.
It’s possible to get adequate support for a Linux OS too, through the community and the regular release of updates and patches from the developers of your chosen distribution. However, if you opt for Linux you’ll need to manage that process, yourself or through a partner. For many users, it’s liability rather than support that counts, and they’re pleased to hand that off to Microsoft.
Open-source doesn’t mean insecure. In fact, paradoxically, open-source tools are often more secure than their proprietary counterparts. Open Source users often have a more complete picture of the security of the software they’re using — and by the same token, so do developers.
While proprietary OSs often invest heavily in security, there’s another side to the picture: popularity. Windows might have a low share of the IoT OS market but it has a very large share of the desktop OS market, and in consequence it’s one of the most-attacked operating systems around. The consequences of falling behind on patching, updates and security measures for Windows are likely to be more severe than those for Linux or a minority OS, since those operating systems have far fewer attackers.
In addition, open-source codebases remain open, even when the development community has moved on to developing the next iteration. If for some reason you choose not to upgrade, you still have control and access to the code. Proprietary systems aren’t like this, and when Windows decides to withdraw support for an OS, it immediately becomes much more vulnerable. The only option users have is to upgrade, and in some cases that’s not possible.
Linux is compatible with a far greater variety of chipsets than Windows. Windows OSs are typically compatible with X86 and X64, and Windows IoT Core is compatible with ARM. Linux is also compatible with the PowerPC, ARC (Argonaut RISC Core), and MIPS (Microprocessor without Interlocked Pipelined Stages) architectures.
Other OSs often have more restrictive ranges of compatibility, often ones Linux can’t share. Even very lightweight Linux distributions require at least one megabyte of RAM: Contiki needs just 30kb to run the whole OS, including graphical user interface, networking software, and a web browser. There are many devices where Linux is a better choice, and many where a power-saving, restricted Contiki build is the only choice.
How AndPlus can help
At AndPlus, we’ve helped design, architect and implement IoT for businesses across multiple verticals, and from small, specialized companies to national and larger organizations. In the process, we’ve honed the skills to create applications that deliver results, build robust, secure and effective networks, and select appropriate devices, operating systems, and other components.
If you’re considering building an IoT implementation, or incorporating IoT elements into your current operation, we’d always recommend that you seek to partner with an experienced firm that can offer both technical and business insights. If you’d like that to be us, get in touch below.
- IoT operating systems differ from the desktop and mobile ones we’re used to using
- The landscape splits four ways: Linux, Windows, FreeRTOS, and ‘everything else,’. including specialized operating systems for low-power networks. Linux is by far the most popular.
- Choosing the right operating system can have profound repercussions for the efficacy, security and interoperability of your IoT implementation.