As some may be aware I’ve recently built an iGate (MB7UTE) as part of an experiment with LoRa, I’ll get to the LoRa stuff in another post but in the meantime I thought I’d share my build of the cloud managed iGate part.
The overall setup is a fairly simple affair consisting of a 2M FM transciever (Simoco PRM8060), a USB audio interface (My very own DigiOne+ board) and a Raspberry Pi 3b serving as the “brain” running Direwolf as soundcard software modem to make everything work.
One of the challenges of setting up an iGate (in the UK at least) is the application for a NoV, in which you have to specify how you would remotely shutdown the station if requested. A quick look at others work provided a lot of options such as Internet accessible smart plugs to opening up the PI to the internet, but neither really appealed to me due to particular paranoia of having devices in my home accessible from the internet.
Enter the Balena Cloud, Balena is a “fleet management and deployment” cloud service that allows you to deploy container based applications to various devices and remotely manage them without having to expose ports or configure static IP addresses. What this meant for me was a means to access (and more importantly shutdown) my raspberry pi from anywhere with internet coverage, very useful indeed.
If your new to containers or virtualization this can seem a bit confusing, but trust me its simple! Rather than running the defacto RaspberryOS (formally Raspbian) you use the BalenaOS, which when setup will connect to internet and from there to the cloud. From the Balena Cloud you are then able to deploy “Applications” remotely to your Raspberry Pi as well as manage the device and even access it via a nice embedded SSH console. Applications in this sense are docker containers, which in the simplist terms I think of is virtual environment from which you actually run programs that exists seperately and somewhat isolated from the operating system.
There are a lot of other benefits to this approach, as my code and configuration is kept and managed by Balena I don’t have to worry when the SD card inveitably self-destructs, I can just pop a new one in and carry on likewise adding more devices is a breeze.
Get going with Direwolf & Balena
Balena Cloud is currently free for upto 10 devices, so the first step is register an account and setup your “Application” and Raspberry Pi (or other device), I’ve made my Direwolf container available as a github repository to help streamline getting everything going. The repository supports a number of configuration variables that can be setup on Balena on either a per device or per application level. To setup these variables, once you’ve added an application and device, simply select ‘Device Variables’ from the devices dashboard and select ‘Add’
I’ve made a few variables available to cover common setup scenarios, any environmental variables provided on Balena will overwrite local device variables such as those in the /etc/direwolf.conf file
|CALLSIGN||Your stations callsign (eg. MB7XXX-10)|
|ADEVICE||Device HW Indentity (eg. rtlsdr, plughw:1,0)|
|IGSERVER||Internet Gateway Tier2 Server Address (eg. euro.aprs.net)|
|IGLOGIN||Internet Gateway Login name and password (eg. MB7XXX 1234)|
|ALT||Your altitude (Meters ASL)|
|SYMBOL||APRS Symbol (eg. igate)|
|OVERLAY||APRS Symbol Overlay (eg. S)|
|COMMENT||APRSE Comment (eg. Direwolf on BalenaCloud)|