Remove SD card from card reader, insert it in your Board. You are ready to add and update containers to your board!
Add a TensorFlow container
It is time to add a new container to your embedded system. If you already build the image from scratch you can go right away to the Step 2
Step 1
Follow the steps in the section Install an image -> Build from scratch. Stop right after $ ./StartBuild.sh sync … and move on to Step 2.
Step 2
Let’s build a container including TensorFlow Lite to test an image classification solution with a pre-trained model:
$ ./StartBuild.sh build-container container-tensorflow-lite-label-image
Depending whether you are running the build on Windows 10 or on Linux, how powerful you computer is and if you already build your image from scratch it can take between 20 minutes and several hours. Then for the next builds it will only take a couple of minutes.
Step 3
Connect on:
http://localhost:8080
The login is admin and the password is admin. Follow the steps in the video below to add the container to your embedded system:
Step 4
Let’s log into the container to update the bitbake recipe used to build the application:
$ ./StartBuild.sh bash
$ cd ../sources/meta-fullmetalupdate-extra/recipes-containers/container-qt-evcs/
You can use nano to edit the recipe:
$ nano evcs_1.0.bb
Edit the file and change “step1” by “step2”. Then press CTRL^X to leave the editor, press y when prompted to save the file. Finally, you can exit the build environment:
$ exit
The last step, consist in rebuilding the container:
$ ./StartBuild.sh build-container container-qt-evcs
Redo Step 4 one more time, but this time in evcs_1.0.bb change “step2” by “step3”.
Step 5
Connect on:
http://localhost:8080
The login is admin and the password is admin. Follow the steps in the video below to update the container-qt-evcs:
Update the Linux OS
As a last step, we will update the Linux OS. If you already build the image from scratch you can go right away to the Step 2
Step 1
Follow the steps in the section Install an image -> Build from scratch.
Step 2
Let’s log into the build to update the bitbake recipe used to build the Linux OS:
$ ./StartBuild.sh bash
$ cd ../sources/meta-fullmetalupdate-extra/recipes-core/images/
You can use nano to edit the recipe:
$ nano fullmetalupdate-os-package.bbappend
Modify the line IMAGE_INSTALL_append and add strace:
IMAGE_INSTALL_append = ” \
mdns \
libnss-mdns \
strace \
“
Finally, you can exit the build environment:
$ exit
The last step, consist in rebuilding the Linux OS:
$ ./StartBuild.sh fullmetalupdate-os
Depending whether you are running the build on Windows 10 or on Linux, how powerful you computer is and if you already build your image from scratch it can take between 20 minutes and several hours. Then for the next builds it will only take a couple of minutes.
Step 3
Connect on:
http://localhost:8080
The login is admin and the password is admin. Follow the steps in the video below to update the OS on your IoT device:
What’s next?
In this Getting Started guide you learned how to update/deploy Containers and OS on many IoT devices. But what should be your next move to transform this demo into a production ready environment? Foremost, you should think about security. Thus, security is paramount but there is no generic solution fitting any type of devices. It is a trade off between how much money and time a hacker will be willing to invest in hacking your device. Opposed to the amount of money and time you will be willing to invest to secure it:
For instance, if you develop a temperature sensor or a lock for a secure vault, the solutions used to secure these devices will be quite different. In fact, the level of security needed for a secure vault is so high that it is not reusable for a temperature sensor. It would increase its price to a degree where it will not be possible to sell it anymore. Thus, it is mandatory to assess what level of security is necessary for your specific type of product.
Production ready
FullMetalUpdate implements everything you need to enable the right level of security for your product. On the embedded side, Yocto gives you access to the secure boot, data encryption and trust zone. On the server side, OsTree is the solution used by Redhat to update its servers. Hawkbit is the solution developed by Bosch to update all their IoT products. These solutions are all industrial grades. They have been tested for years on many projects! But, of course they need a certain level of adaptation to offer your product the right level of security. You can find plenty of documentation on internet to realize this setup yourself. But if you need some help, feel free to contact us.