Updated System Control Computer screens

I thought I’d post some updated screens from the Raspberry Pi that monitors and controls the remote station.

By way of a refresher, it’s a Raspberry Pi 4 in an Argon One case and running Home Assistant. The SCC does the following:

  • Provides a control surface for the main 12V power supply, the Flex itself, the remote ATU and the Windows PC
  • Monitors the state of the various switches and sensors in the remote shack
  • Controls the heating and cooling for the cabinet
  • Alerts me to various conditions
  • Does its best to protect the entire system when the going gets tough 🙂

So, on to the images.

Control Screen

Image of the control screen

This is the main control screen as seen from a desktop or laptop. At the top are various status indicators, followed by the time and current propagation and then buttons to control the Flex PSU, the ATU, the Flex 6400 and the Windows PC that I use for digital modes.

The final button allows me to toggle the PTT line on the Flex. This is needed if you change the SmartLink configuration.

Image of the control screen on a mobile

All windows are dynamic, depending on the browser viewport. This image is the same screen, but seen on a mobile device. Basically, it removes unnecessary elements.

Propagation Screen

Image of the propogation screen

The next screen displays more detail on the current propagation state.

System State Screen

Image of the system state screen

Next is a screen showing various indicators about the system state. Some of this is a repeat of what’s on the Control Screen.

Environment Screen

Image of the environment screen

The inner cabinet has temperature sensors on each shelf, plus sensors for the temperature in the external cabinet and outside. Home Assistant uses these with virtual thermostats to control a heating element and cooling fans in the inner and outer cabinets.

In extremis, Home Assistant will shut down the radio if things are getting too hot. It will alert me using Pushover if it’s getting too cold, so that I can (e.g.) switch on the Power Supply and (maybe) the Flex to warm things up.

Grafana

Image of the Grafana Screen

All sensor values, system state changes etc are logged to an Influxdb database, from where it can be displayed using Grafana.

This screen shows propagation history, and there is another displaying temperature and humidity changes.

Using SmartLink to access my remote shack

A consequence of the way my remote shack is connected to the Internet stops me using FlexRadio’s SmartLink to access it. I knew this would be the case, and I put in place a solution to give me access from home; but it was only a partial solution because I couldn’t use the Windows version of SmartSDR. This article details how I implemented a more general solution using a Virtual Private Server and Zerotier.

Background

All Flex radios are LAN connected and support multiple ways to access them from a network device running a variant of the SmartSDR software. You can “Discover” the radio from SmartSDR running on a Windows PC – but only if it’s on the same IP subnetwork. If you are using the excellent SmartSDR for Mac – which I do most of the time – you can also access the radio using a specific IP address – which overcomes the restriction in SmartSDR for Windows. For both clients, you can also access the radio using FlexRadio’s proprietary SmartLink protocol.

Unfortunately, there are situations where none of these solutions work; and I am in one of those situations.

Problem

SmartLink is a deceptively simple protocol that enables a radio to register its presence in a central directory so that suitably authenticated SmartSDR clients can lookup the IP address of the radio; and then connect to it. Provided the user can open a couple of ports in the firewall, this approach works for most installations because the radio is sitting on a home LAN behind a simple router/firewall that implements Network Address Translation. Unfortunately – as detailed elsewhere on this Blog – my remote shack is located behind two firewall routers – of which I have control over only one. On top of that, the Internet Service Provider to which my kind farmer’s router is connected implements CGNAT; which also screws up SmartLink.

The Partial Solution

As an interim solution as a way of allowing me to access my Flex 6400 from home, I setup an Layer 3 Overlay Network using Zerotier between my home Unifi USG router and the Teltonika RUT951 at the remote site. This effectively created a VPN circuit between the two sites – bypassing the farm’s router – and allowing me to “see” the Flex. However, this only works for SmartSDR for Mac because only this variant allows one to specify the IP address of the radio. SmartSDR for Windows doesn’t work because it can only use either Discovery or SmartLink to the radio.

Discovery requires the PC and the Radio to be on the same Level 3 network – which they aren’t; and SmartLink “sees” the IP address of my router, not the IP address of the farm’s router (plus of course, there is no route).

The Full Solution

To enable SmartSDR for Windows to work, I needed to get the radio to advertise an accessible IP address. My solution was to implement a Virtual Private Server in the cloud and set it as the default route for my remote shack.

This is how I did it.

The Virtual Private Server

After some research, I settled on IONOS as a hosting provider. My needs are very basic and they are very cheap. Also, their technical support is responsive and they’re located in the UK: which helps to reduce network latency.

Ansible and Debops

I use Ansible and Debops to manage the configuration of the many servers and network devices under my control. I won’t go into details as there are plentiful sources of excellent tutorials, but in brief: Ansible allows me to define the configuration of the VPS in a series of text files on my computer and then “build” the VPS with a single command. Debops builds on Ansible to deliver a comprehensive suite of configurations for Debian based servers.

The files are themselves managed in a git repository, and if I want/need to change the configuration, I simply update the text files and run the command again. Crucially, it means I don’t have to worry about backing up the VPS. If it gets compromised or corrupted, I destroy it and recreate it from scratch with a single command.

It’s brilliant!

The VPS Configuration

The VPS is a smallest IONOS provides; with 1GB RAM and 10GB of disk. The Ansible and Debops configurations:

  • Harden the VPS against attacks
  • Install Zerotier and configure it
  • Install nginx and configure a Reverse Proxy to give me access to the Raspberry Pi that controls the remote shack.
  • Configure the WAN firewall to forward traffic on the Smartlink ports to the remote site.

At the remote site

The RUT-951 supports Zerotier out of the box, so all I needed to do was connect it to the Zerotier network and configure it to use the VPS as its default route.

And that was it. When I run SmartSDR, I see the IP address of the VPS and I can connect to it.

Simples.

Pulling it all together

Now that I’m pretty much at the end of the series on putting together my remote shack, I thought I should list all the posts in a single location, rather than having folks stumbling their way around my blog. So here it is:

There will be a couple more posts with updated screenshots of the control system and external views of the shack and aerial. I’ve also got a post on improvements to the remote access solution.