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.

First Light at the Remote Shack

It’s been so long since I last updated this project, you could be forgiven for thinking that I’d abandoned it. Apologies for that. However, the good news is that the remote shack is up and running. The performance needs to be improved, but it works.

I soak tested the whole set of kit in the back garden for nearly a year so that I could be sure that everything worked, and could be recovered if something untoward happened. It also gave me the opportunity to test the environmental controls across summer and winter. As it turned out, I didn’t learn enough.

Environmental Changes

The main change was to insulate the inner cabinet with some aluminium backed polystyrene sheet (the sort of the stuff sold to go down the back of radiators) and add a controlled 60W heater in the base of the inner cabinet. Based on the performance last summer, I didn’t need any forced ventilation – though I left provision for it in the system design. Now that it’s in it’s final position, I now know I do need forced ventilation as well. I’ll fit something next time I visit.

Moving to the Farm

I moved the shack to the farm in June, but immediately realised that my original site survey had been invalidated by the erection of a new steel-framed barn. After a lot of wandering around with my phone testing WiFi signal strength, I realised there was nowhere I could place the kit and connect directly to the farm’s WiFi. That required a re-think.

Luckily, I was able to negotiate a new position close to an external power socket and with easy cable runs to the main farm building and where I wanted to put the antenna. However, I did need to re-design the connection to the farm’s Wi-Fi network as there was no line-of-site link to the nearest Access Point.

I bought a TP-Link CPE210 PoE Wireless Access Point. This device can be placed in client mode to become an Ethernet connected wireless interface for the RUT951 router. I placed the CPE210 physically close to the farm’s main Access Point and ran a 40m long Ethernet cable back to the WAN port of the RUT951 in the cabinet. It works perfectly and I’m getting about 20ms ping times to google.com. Throughput is not really important, but I’m getting about 10 MBytePS down and 500 kBytePS up.

Antenna

I’ve changed my mind about hanging a big doublet in the trees for now and have instead erected a multi-band vertical. Initially I looked at DX-Commander, but then realised that I had a 18m Spiderbeam pole in the shed. With a wire running up it and the SG-230 ATU at the bottom ( plus radials), it has the potential to provide a 80m-10m antenna.

First Light

The newly located system went live in the middle of July. I’ll do a video run through of the station as it appears from home when I get time.

Still to do are:

  • The antenna is not performing as well as I hoped – the wire length needs to be adjusted – and base noise levels are higher than I hoped – though considerably better than from home.

  • With the compromised method of getting Internet access (i.e. via somebody else’s wireless network), I am suffering from double-NAT: IP addresses are being translated twice whereas NAT only occurs once in usual cases. This prevents me exploiting the UPNP feature on the farm’s router to open a temporary hole in the firewall for SmartLink. As a result, I can’t access the Flex using SmartLink. I can get in using a VPN connection using ZeroTier, but the performance is insufficient for voice traffic. \

To get around this, I am implementing a cloud-based Virtual Private Server that will be an access server for the remote shack. All traffic to and from the shack will transit the VPS where I can control fire walling and other aspects. More on that another time.

Remote Station Screenshots

As I’ve been “playing” with it a bit, I thought I’d post some updated screenshots of the control system I use for the remote station. As a reminder, I use a Raspberry Pi 4 running Home Assistant OS and Home Assistant.

There are four tabs on the screen for: Overall status and control; Current and recent propagation conditions; more system status information; and environment conditions at the remote station.

In addition, there are special screens showing more detailed information and diagnostics should they be needed.

Image of the Home Screen
Home Screen
Image of propagation screen
Propagation Screen
Image of system status screen
System State Screen
Image of environment screen
Environment Screen

The last screen looks more complex than it needs to be because I have been playing with the system to optimize the temperature and humidity in the cabinet. Once I’m done, I’ll hide the various thermostats because they’ll never be adjusted by a user.

Remote station update

I realize that it’s been some time since I updated this blog.

The project is still active, but has been suspended due to the weather.

  • The station is running nicely in my back garden
  • The site has been surveyed and is suitable
  • The hold-up is the antenna:
    • It’s going up in the trees
    • I decided to wait until the leaves were off the trees
    • By that time, the weather was appalling and ground too boggy to walk over.

I’ve had to postpone until the weather improves. Unfortunately, I will be overseas for several months, so we’re looking at June.

I’ll need to go with a simpler antenna and revise later.

Setting up a Remote Station – part 13 The Installed Station

The main image shows the installed station – but still in the garden. The top shelf has the Flex 6400 on it, the middle shelf the control system and the bottom has the UPS and power supplies. Hopefully, this will cut down on noise induction.

This image shows the control board before being installed in the cabinet.

Top left is the ancillaries board with an input jack from the ancillary 12V PSU, a couple of Power Poles to feed other 12V devices, the ESP8266 running ESPHome and code for the environmental sensors – an on-board Temp/Humidity sensor for the internal cabinet, and two 1-wire temperature sensors that will be placed in the space between the two cabinets and outside. On the far right is the Teltonika RUT951 router. In the picture it has its internal aerials on, but in the field it will have the 4G antennas and one of the wi-fi antennas connected to external antennas.

Below that is:

  • The Sonoff 4ch switch which controls the Remote On/Off and PTT on the Flex, and the 12V power to the remote auto ATU (not shown)
  • The Geekom Mini IT8 Windows PC
  • The Netgear Ethernet switch, and
  • The Raspberry Pi4 in its smart Argon One case.

Not shown in this image are any power leads. Also not shown in this image, but visible in the main one, are the two Tapo wi-fi switches that control the mains input to the main 12V PSU and the PC’s PSU. The switches are on the middle shelf in case the wi-fi doesn’t penetrate to the bottom shelf. I’m going to try them in the bottom today.

The station is now built, but I’m going to leave it in the garden for a week or so to accumulate sensor readings so I can decide if I need to add forced cooling. It will be located against a north facing wall, so won’t get any direct sun. It’s in a similar north-facing position in the garden, but will get a bit of early morning and late afternoon sun for the next week or so.

Setting up a Remote Station – part 12 Pictures

I now have the cabinet in which the station will be housed at the remote site. I looked at “designed” solutions for environmentally controlled, waterproof, secure external housings, but we’re talking loads-a-money. Luckily, my wife suggested the above: a “secure” metal office cabinet inside a plastic wheely bin cabinet.

The latter is mainly for protection against the elements. We have something similar for general storage in the garden and we’ve never had a problem with rain penetration. In any case, the equipment will be sealed in the inner cabinet, so a little bit of seepage shouldn’t be a problem.

The next task is to build it up to be, as far as possible, a self-contained and self-managing remote station that needs as little attention as possible whilst being fully accessible and controllable from home.

Setting up a Remote Station – Part 11 Screenshots

I thought I’d add some screenshots of what the control UI looks like.

The one above shows the main screen with the various controls on it. Only two need to be touched in normal circumstances: the Radio Control button and the Windows PC button. These both kick off automations that sequence through turning things on or off – they don’t control things directly.

At the top of the screen are a number of tell-tales that indicate the state of various components, plus basic propagation information.

You can also see the lightning detector and some elementary status info. if Blitzortung reports lightning within 25km, a script runs that sends a Pushover alert, waits a couple of minutes and then kicks off the Radio Power Off script as if the user had tapped the Radio Control button.

Lastly you can see the state of the ATU, you can toggle the Lock function on the ATU to disabled the auto-tune function, and see whether it is tuned or not.

 

This image shows more comprehensive propagation info.

 

Lastly, you have a screen with some system status information.

There are more screens accessible via the side menu bar, but these three cover 90% of what’s needed. I’ve seen some remote control screens that are, in my opinion, far too crowded with irrelevant information. All that does is hide important information and controls and overwhelm the user with noise. (again, my opinion).

incidentally, all these screens are produced using the standard controls provided with Home Assistant, plus some useful ham-related plugins (e.g. Blitzortung and HF Propogation)

Setting up a Remote Station – Part 10 Overview of the Final System

Hopefully the image above should help to understand what the station consists of. The station comprises:

  • a 240V network with the UPS at its core and feeding:
    • two Tapo switches (one for the PC and one for the Radio PSU);
    • the permanently-on auxiliary 12V PSU that powers the Sonoff, network switch and the ATU controller; and,
    • the permanently-on PSUs for the Router and the Pi-based Station Controller.
  • A mixed wired and WiFi network connecting most devices.
  • The main Radio PSU – Flex – ATU – Antenna Disconnect RF chain.
  • The Sonoff that switches the Flex on and off and operates the PTT when needed.
  • The Pi-based Station Controller running Home Assistant.
  • The Windows 10 PC used for digital modes.

I hope this all make sense.

Moving on, the station has been operating from my home QTH for some time now whilst I scout out a suitable remote location. I’m glad to say that a local farmer has agreed to let me site the station on their land. The only downside is that the station needs to be outside, so I now need to source a suitable IP65 or IP66 (but ventilated) wall-mounted cabinet to house it all in. Not easy to find!

For the antenna, there is a convenient line of trees close by and a 10m high barn; to which they have agreed I can mount a 20m pole to be one end of the doublet antenna I intend to use – the other end being one of the trees. With luck I’ll be able to erect a decent doublet at 20m off the ground and fed by balanced feeder from the SG-230; which will be mounted 2-3m off the ground at a convenient location midway between the ends of the doublet – probably somewhere on the wall of the aforementioned barn. I’ll use a 12V combiner to feed power to the ATU and the antenna disconnect unit.