Raspberry Pi has become a popular platform for building IoT solutions. Majority of these devices run on a Linux operating system such as Raspian or Ubuntu Mate. These devices are generically known as a Linux-based Small Board Computers (SBCs) which include devices such as BeagleBone, Pine64 and Nvidia Jetson.
Almost all IoT solutions begin as rapid prototypes but quickly become a support nightmare when there is no plan made for supporting and maintaining those IoT devices. It is well known that 20% of the software lifecycle is spent on development while 80% of the time is spent on maintance.
Knowing these 5 things before you proceed with deploying your IoT solutions to your clients will save you a great amount of pain and money. Ultimately it will save your reputation with your clients.
1. How will you keep the system up to date with security patches?
When you deploy a Linux-based SBC such as Raspberry Pi inside a client’s network, the last thing you want is for your Linux SBC to be the penetration point for hackers because your system is not patched with the latest security updates. Make a weekly or monthly routine of updating your Linux systems with the latest packages and security updates to avoid being a vulnerability to your client’s network infrastructure.
The good news is most of the Linux operation systems already have a daily or weekly schedule for unattended updates. Unfortunately some updates will require a manual restart in order for the updates to be applied. This is something that many people did not consider when deploying their Linux-based SBC.
2. How will you update your custom firmware/software?
It is wonderful that you have a solution that runs on a powerful Linux platform. This also means that your solution is written in a higher level programming language such as C/C++, PHP, Python or Java. As with all new programs, there will be bugs that need to be addressed through software updates.
One of the greatest benefits of using a Linux-based SBC such as the Raspberry Pi is the ability to add new features quickly by simply performing a software update.
Before you deploy your Linux-based SBC in the field, you must define a plan on how and when software updates will be rolled out in order to not impact your client’s operation.
3. How will you monitor your Linux SBC resource usage?
Your newly developed program running on your Raspberry Pi, Pine64, BeagleBones or another other Linux-based SBC is the same as those running on a Linux server or on your desktop. These newly developed programs will not be as stable as mature programs that have been battle tested by many years of production deployment.
You need to track how your program use the 3 critical resources: memory, CPU and disk space. Exhaustion of any of these 3 critical resources will render your system unresponsive. If your program uses too much memory, then other programs cannot run and this leads to system instability. If your program hog up all the CPU, then your system will be sluggish. Finally if your operating system is low on disk space, it might refuse to boot up.
4. How will you update a fleet of devices?
If you get to deploy a dozen devices in the field… congratulations! You are on the growth path. Maintaining and updating a handful of devices is easy. When you scale up to a dozen or more devices, your profitability will decrease due to all the manual labor that goes into maintaining these devices. Worst is when there is a mistake made to one device and there is no quick way to identify this error until your client points it out to you.
You will need to adopt a system of deploying updates to a fleet of devices as quickly as possible in a consistent manner.
5. How will you remote access your Linux SBC?
When your system misbehaves you will need to get access to the Linux-based SBC in order to diagnose the situation as quickly and comprehensively as possible. Sure you can fetch the program logs and have the developers review the logs. What if the developers need more information about the runtime state of the environment such as what other programs are running that are interfering with normal operations. Perhaps another program is running that is taking up all the CPU which is slowing down your program in unexpected ways. This is when having remote access to the device can quickly aid in the diagnoses and identify the root cause of the problem.
We experienced all the situation early on when we helped our first Industrial IoT clients deploy their solutions to the manufacturing floor. This is why we developed the IoT Device Management platform we use today to support the needs of all of our IoT partners and clients.
Our IoT Device Management platform connects, monitors and tracks all Linux-based SBCs. We have notification triggers for when the devices are offline, when their CPU and disk space are a threat to system stability.
We also built a way to enable remote access to any Linux-based SBC such as Raspberry Pi, Pine64, BeagleBones and Nvidia Jetson. Our system supports using SSH to access the command line or VNC to access the Linux desktop.
We also have group actions built on top of shell scripts and Python programs that can update a fleet of devices in seconds or minutes instead of what previously took hours or days.
ObjectZen Solutions has hands-on experiences with managing and deploying IoT devices. Contact Us if you need help with maintaining and supporting your IoT solutions.