Over the Air Software Options
The Internet of Things (IoT) workspace is constantly evolving. Due to the remote environment that many IoT applications are running we need to determine a way to provide software and firmware updates to the boards which are running our software in both an easy and effective way. There were three Over the Air (OTA) update providers we investigated when researching options: Amazon Web Service’s IoT GreenGrass, Mender.io, and Particle.io. Here I will cover these options by going over their individual strengths and weaknesses as well as inform you of our choices and process of using the selected OTA provider.
AWS IoT GreenGrass
AWS offers its form of IoT OTA via their GreenGrass solution. Using this you can update your application’s software using their IoT Core and AWS Lambda as a codebase as well as enabling CloudWatch logging to track deployment and error statuses.
- Integration with AWS fully fleshed out infrastructure
- Use Lambda and S3 to host application updates
- CloudWatch log integration and deployment tracking
- Operable on any CPU architecture
- Easy to setup across multiple devices
- Automatic rollbacks on deployment failure
- Integrates with our continuous deployment – CircleCI via s3 integration
- Must utilize custom scripts to update firmware – Can deploy the files needed to update firmware but we must handling updating them with our own custom scripts
- Must utilize custom scripts to automatically stop and start updated programs
Mender.io offers a full open-source solution to IoT OTA. It provides both an enterprise server hosting of their backend OTA services and a version you can host on your own server. It allows you to create images of a specific device and deploy them to your fleet of devices, this includes firmware updates as well as application specific software updates.
- Enterprise solutions available
- Custom self hosting
- Great for raspberry Pi OTA
- Mostly supports ARM architecture
- Poor documentation for x86 architecture (We have since been given this documentation: https://hub.mender.io/t/qemu-the-fast-processor-emulator-ubuntu/1550)
Particle.io offers an easy and quick to start solution for IoT deployments and OTA updates. Their model provides their own hardware and custom operating system (OS) which is tied directly to their servers for quick, easy, and cookiecutter IoT solutions. They provide their own software which you are able to use to configure your IoT device, which they also provide, this allows them to provide better customer support as they know the hardware, software, and OS you are using.
- Provides their own OS which is tightly coupled with their OTA deployments
- Automatic rollbacks
- OS supports sleep mode for power consumption
- Requires their OS
- Requires their own custom hardware
Video Powered Fleet Tracking Platform Case Study
One of our customers provides Mobile Digital Video Recorders (MDVRs) to towing and other vehicle logistics companies for the purposes of fleet monitoring. These are used to record video, images, location and other data about where the truck is and video for potential insurance issues. In our case these devices are not always online and thus we need to have a system which allows for polling and application of software updates at any arbitrary time. Also our system benefits mostly from application level updates, less so firmware and OS updates.
Mender.io and Particle.io don’t necessarily fully support our build and application environment, we run a python application using Ubuntu server on x86 architecture thus the lack of good documentation makes it difficult to use Mender.io with our application. Also the location of our hardware demands that we are especially stringent in our choice of hardware, ensuring that they are robust enough to withstand the difficult and varying temperatures and environmental issues is a high priority. This makes the choice of Particle.io incredibly difficult as it would require a lot of overhead to ruggedize the hardware they provide and require. Not only this but the hardware they supply does not have the horsepower to support our remote video streaming application.
AWS’ integration with our build environment is a big plus for us, allowing us to set up automatic deployment of OTA updates at the end of a successful CircleCI build. Our prior experience with AWS and IoT Greengrass are other factors that helped us decide to use Greengrass. We already had scripts which we use on our other IoT deployments to test our APM tool Auklet that poll for software changes and we’re able to repurpose them to our evolving needs. We chose to go with AWS IoT Greengrass for our particular use case.