The BalenaFin board, made by balena.io is a compact Raspberry Pi compute module 3 mother board.
This kind of setup is really useful when making industrial embedded systems in small to average volume like I did and described in a previous post presenting my solution on waveshare system.
I thank you Balena.io, especially Marc, for giving me the opportunity to test this product. So you understand I did not payed to get that one, but as usual, I’m totally free about what I’m writing about it.
The BalenaFin costs $129 w/o taxes and can be ordered on the balena shop. So, let’s how to use it and get benefit of the balena.io platform.
The BalenaFin have some nice features like:
- Dual Camera connector
- External flash memory (eMMC) – 8/16/32/64 GB (so you can use CM3 Lite)
- Dual band WiFi
- Embedded Real Time Clock
- Mini PCI-Express slot (for LoRaWan concentrator / LTE module / hard drive …)
- A nano sim holder if you want to use it with a cellular modem
It has some interesting options for customization like the ability to use an external antenna for WiFi / BLE. But the more strange thing is the presence of a second embedded system onboard: a BGM111 including BLE connectivity.
The board does not accept alone PoE as a power source but you attach a PoE Hat board (about 20€) to add it. Regarding the board price, I was expecting it to have the feature included but not unfortunately.
What to do with a second processor on Balenafin ?
So this BGM111 is connected to the RPI CM3L over UART0 and SWDIO, so it can program the compute module and communicate with it. Apparently it can also stop and start the raspberry PI. It can get benefit of RTC link for programming such actions. Reading the documentation, right now, I need to admit that sound cool, but practically speaking I do not really see the customer advantage, and the ability to control it… let’s see that later.
The product size is approximately 95 x 95 x 25mm
You can use BalenaFin with any classical RaspberryPi Os but the recommended on is balenaOS to get benefit of the Balena.Io cloud. I have never tried Balena.Io solution but i’ve seen different demo and it is looking really interesting when you need to manage a fleet of RPI devices.
As It is typically my case with the system I previously detailed, I’m interested in taking a look to it… so let’s go ! So we need to create an account on balena-cloud.com.
Then we can create a new application. This application will have a name, let’s use balenaFin1 and then it has a device. There are many embedded devices like RapsberryPi, beagle bone… But for that time, we need to select Balena Fin (CM3) device. There is no choice for the application type, so let’s go with Starter.
Once done, we can add our device:
We are going to select balenaOS, last version, in production with Ethernet only. When selecting WiFi you can enter the WiFi configuration at this step. Then we can download the balenaOs.
Once you get it, connect an USB cable to the PRG port on the board and power it up with the provided power adapter. Launch BalenaEtcher tool for programming it. The first time, it takes some seconds to initialize the device, so I assume there is some specific processing the Balena tooling can do. Once you click on flash the balenaOs deployment is in progress.
Once done, you can turn board off, disconnect USB and turn it on, connected on Ethernet to Internet.
The device is booting and after 30s to 1min you can see it on the Balena-Cloud console.
We can click and get details on the device:
From this screen, you can reboot, restart your device, You can make the ACT led blinking, yes you can. The most important thing: you can open a remote console session. Balena is basically running containers on the target device. You can enter any of the containers.
You can deploy your application in the remote device using the CLI.
Download the CLI going to Release and Add Release button, then get the link for your OS. Once done, you can open a terminal and type balena login command.
Now you can list your devices with
[~] balena apps ID APP NAME SLUG DEVICE TYPE ONLINE DEVICES DEVICE COUNT 1809XXX balenaFin1 disk_91/balenafin1 fincm3 1 1
And you can deploy application with balena push.
Building your application is basically building a docker container, so you just follow the classical docker-compose process. The Balena documentation will help you for the details.
Managing your device has a price. Offers starts at $99 a month with 20 devices included + $2 per device per month. Prices decrease on volume. The free plan includes 10 devices, full-featured.
Let’s find some cool stuff to deploy on the board
Balena have a project repository hub.balena.io where you can find ready to deploy projects like the famous Bird Watcher project. You also have classical project image like Nextcloud, Node-Red, Minecraft server, Pi Hole, TTN gateway if you add a SX1302 LoRa concentrator. For each of the projects, the targets are identified with a simple icon. cool !
Let’s give a try to NetStatus, an Internet speed & offline status monitor.
To install it on the Balena Fin, we can click on the Deploy with balena button.
Once selected the target platform (Balena Fin), The container is going to be built. Then you can deploy it.
This is creating a new application where the previously created device is not. So we need to move that device to this new application. For this, search your balena Fin device previously set and click on Change button then select the NetStatus application.
The device is immediately updating with the new application, and this is illustrating how it is easy in production to upgrade a fleet of devices:
As soon as the update is terminated, you can connect to the Balena Fin with a browser and access the dashboard
Balena Fin and Balean Cloud are two different things. You can use Balena Cloud w/o BalenaFin. In my point of view, if you use Balena Fin, you will want to use Balena Cloud too.
The BalenaFin board is a nice compact, high quality, RaspeberryPi CM3 mother board. I regret the non out-of-the-box PoE support in regard of the board price. The large number of connectors and interface makes it working for a large number of projects.
Both solutions are good for makers who want to control a small number of devices (up to 10 in the free plan). The real target are industrial applications where you want a robust Raspberry Pi solution with a fleet management capability.