Embedded Linux OTA update Deployment

When the development of an Internet of Things (IoT) product is about to end, a simple question usually arises. How are we going to deploy over-the-air (OTA) software updates on the products that we ship? The answer may vary depending on many variables, since deploying software on Linux edge devices can be somewhat tricky.

There are a few key elements that must be included in the solution when considering how to deploy software updates on IoT devices. However, before getting into this, let me quickly go through the main difficulties that the IoT sector brings in terms of software deployment and general maintenance:

1. Remoteness – Usually, after you have shipped your product, or installed it, you can’t physically approach it. Therefore, any issue must be fix remotely.

2. Stability – Your product must work in various environments as different users may utilize your IoT device differently. Hence, the stability of the product is critical.

3. Connection – The only thing that differs an IoT product from an Embedded device is the connection to the internet. There are multiple ways to connect your devices to the internet, each one of them has its own drawbacks that directly affect on the implementation of your project.

Certainly, there are more difficulties, but from my experience, the first one is by far the most problematic for the majority of IoT companies. In order to successfully overcome it, you must use a Linux OTA software deployment mechanism, which is robust enough to deal with the challenges. Here are several points that must be implemented in such solution:

1. OTA deployment – Obviously, the solution has to offer a way to deploy over the air software updates on Linux devices in a reliable way. Given that the connection is not stable and the power may be shut down at any time, the update mechanism must be aware of those matters and handle them correctly.

2. Rollback – As we already understand, there is a good chance of things to go wrong while deploying new software on an IoT device. For this reason, the solution must have a rollback feature which in case of a failure will revert the state of the device to be exactly as before the update started.

3. Troubleshooting errors – If an error has occurred while updating your IoT devices fleet, you should have a way to troubleshoot the issue by at least receiving the error logs.

4. Grouping – When deploying new software on remote products, the best practice would be to deploy it progressively. Having the option to organize your fleet in groups, is crucial for successful deployment of new software on Linux devices.

5. Version control – After deploying several updates, you will find yourself confused of which software version is running on each device. Fast enough it will result in a huge waste of time and may even cause in deploying wrong software in the future.

6. Scale – Being able to scale your fleet from just a few devices to hundred of thousands is essential for growth. Sometimes, at the beginning, you implement a solution that fits your current needs, but as you grow, you figure out that it doesn’t function the same at scale. Thus, thinking of scale from the beginning will save you much of time at later stages.

Those points guided us from the beginning when we designed and developed JFrog Connect.io IoT management platform. You are more than welcome to open a free account. Right after the registration, you will receive a real Demo Linux device to explore the platform and its features. You can also register your own device, such as Raspberry Pi, or any other Linux-based device.

JFrog Connect is a modern Linux-first IoT platform designed to efficiently update, control and monitor edge and IoT devices at scale.