In a perfect world, we wouldn’t need to update internet of things (IoT) devices. They would magically be ready for anything the future had to throw at them.
In the real world, firmware and software updates are essential.
Unfortunately, updating IoT devices isn’t always easy. For example, it can be hard to set up a reliable connection with remote devices, deal with update errors, handle technology obsolescence, and even figure out which devices need to be updated.
This article covers the basics of IoT device updates, common challenges, and actionable solutions. Let’s begin!
Table of Contents
An introduction to updating IoT devices
IoT devices need updates because of bug fixes, security updates, new features, and technological change.
As part of their device management features, IoT platforms like IBM’s Watson IoT Platform, AWS’s IoT Core, and Microsoft’s Azure IoT Hub can handle the firmware management of IoT devices. Thankfully, most IoT devices can connect to any major cloud-based IoT platform and update themselves.
In between the device and the cloud is the connectivity medium. Here we will mostly talk about cellular technology, which is extremely popular thanks to its high level of standardization and global ubiquity.
According to Nordic Semiconductor, “Cellular is designed for very high Quality-of-Service (QoS). There are a known number of connections and these can be accommodated and managed accordingly. Unlicensed bands have no such guarantees, and anyone can operate there. For guaranteed performance and reliability, licensed cellular is a clear winner for LPWAN.”
Cellular connectivity is typically tasked with providing a stable connection and a path for over-the-air (OTA) updates for IoT devices. OTA updates are important because most devices, apart from smart home devices and wearables, don’t have much contact with people. They need to be updated remotely via OTA updates.
Platforms for managing IoT connectivity, such as Onomondo’s IoT connectivity platform, play a vital role in managing connectivity, identifying issues at scale, and enabling OTA updates.
Package vs. Image Updates
There are two common ways of updating IoT devices: package updates and image updates.
Package updates, aka delta upgrades, only change a small part of the software. This reduces data and power consumption as well as the time needed to transfer and apply the update. Package updates are tricky on embedded systems, mainly because they typically don’t support an operating system (OS) that supports the process.
Image updates are larger but offer greater consistency between the test and production environments of deployed devices. This type of update is more common for embedded systems.

A typical image update for an IoT device would look like this:
- You typically have two slots for applications on an IoT device.
- When your device is in normal operation, it will boot from slot 1.
- When you receive an update, you store it in slot 2 and restart the device.
- The bootloader will then verify the new update and swap the two slots.
- The device has now received an image update.
Since you didn’t do a delta upgrade, you have a full backup in slot 2 that you can fall back to if there was a critical error.
Why is it hard to update IoT devices?
It is not always the case that IoT device updates are successful. There are multiple issues that can arise. Here’s a list of the most common ones.
Managing updates
Keeping an up-to-date inventory of your assets and knowing whether or not an update for your IoT device is available can be difficult, despite how simple it may sound.
Once you have a picture of all the devices that have been deployed and whether or not they need updates, you’ll need to figure out how to prioritize updates, thoroughly test updates, and deploy them without hurting your and your customers’ businesses.
Update failures
One of the most challenging obstacles when updating IoT devices is overcoming update failures.
There are a lot of different things that can go wrong during a firmware update, such as:
- Corrupted firmware,
- Critical power failure, or
- Unreliable connectivity.
In the event of an update failure and device malfunction, the task at hand is to get it back into working condition while causing as little disruption to business operations as is humanly possible.
Cost
Devices deployed on a large scale might be traveling around the world on shipping containers, measuring gas levels in hard to reach places, or monitoring soil moisture levels underground.
Most IoT devices are impossible to reach via cable due to the nature of typical IoT use cases. If reachable, the cost of manually updating IoT devices could ruin the ROI of an entire project.
As a result, OTA updates using radio technology are much easier to manage if they are not simply required.
However, using radio technology to update devices can be expensive. Receiving large amounts of data through radio can be costly and drain batteries quickly.
How can update problems be avoided?
Fortunately, there are ways in which problems with updating IoT devices remotely can be solved. Let’s take a look at some common solutions to update failures.
Rollback
IoT Cloud Platforms offer ways to fix a failed firmware update, such as a firmware rollback to restore the last good version or a factory reset if the version can’t be rolled back due to corruption.
But be aware that this is often only true for “high power” devices (linux based systems, for instance).
For smaller devices, it is normally up to the device to recover. The device will determine if it needs to roll back, independent of the cloud.
Testing
Finding problems before devices are deployed at scale is vital. There are a few things to think of here which can help.
Test a range of equipment (sensors, modems) rather than relying on manufacturer specifications. By testing multiple devices, you are less likely to be disappointed when an advertised feature doesn’t work as well as you thought it would. You’ll also be able to select the components that perform best for your use case.
Test solutions where you plan to deploy them. By testing devices on a live cellular network before deploying at scale, many problems that don’t come up in the lab setting can be avoided and new efficiencies discovered.