Deep Dive – Node-RED QO-100 Satellite Ground Station Dashboard

Following on from my article about my QO-100 Satellite Ground Station Complete Build, this article goes into some detail on the Node-RED section of the build and how I put together my QO-100 Satellite Ground Station Dashboard web app.

The Node-RED project has grown organically as I used the QO-100 satellite over time. Initially this started out as a simple project to synchronise the transmit and receive VFO’s so that the SDR receiver always tracked the IC-705 transmitter.

Over time I added more and more functionality until the QO-100 Ground Station Dashboard became the beast it is today.

M0AWS QO-100 ground Station Control Dashboard built using Node-RED.
M0AWS QO-100 Ground Station Control Dashboard built using Node-RED.

Looking at the dashboard web app it looks relatively simple in that it reflects a lot of the functionality that the two radio devices already have in their own rights however, bringing this together is actually more complicated than it first appears.

Starting at the beginning I use FLRig to connect to the IC-705. The connection can be via USB or LAN/Wifi, it makes no difference. Node-RED gains CAT control of the IC-705 via XMLRPC on port 12345 to FLRig.

To control the SDR receiver I use GQRX SDR software and connect to it using RIGCTL on GQRX port 7356 from Node-RED. These two methods of connectivity work well and enables full control of the two radios.

M0AWS Node-RED QO-100 Ground Station Dashboard - 12/06/24
M0AWS Node-RED QO-100 Ground Station Dashboard Flow as of 12/06/24

The complete flow above looks rather daunting initially however, breaking it down into its constituent parts makes it much easier to understand.

There are two sections to the flow, the GQRX control which is the more complex of the two flows and the comparatively simple IC-705 section of the flow. These two flows could be broken down further into smaller flows and spread across multiple projects using inter-flow links however, I found it much easier from a debug point of view to have the entire flow in one Node-RED project.

Breaking down the flow further the GQRX startup section (shown below) establishes communication with the GQRX SDR software via TCP/IP and gets the initial mode and filter settings from the SDR software. This information is then used to populate the dashboard web app.

M0AWS - Node-RED QO-100 Ground Station Dashboard - GQRX Startup
M0AWS Node-RED QO-100 Ground Station Dashboard – GQRX Startup Flow

The startup triggers fire just once at initial startup of Node-RED so it’s important that the SDR device is plugged into the PC at boot time.

All the startup triggers feed information into the RIGCTL section of the GQRX flow. This section of the flow (shown below) passes all the commands onto the GQRX SDR software to control the SDR receiver.

M0AWS - QO-100 Ground Station Dashboard - GQRX RIGCTL flow
M0AWS Node-RED QO-100 Ground Station Dashboard – GQRX RIGCTL Flow

The TCP RIGCTL -> GQRX node is a standard TCP Request node that is configured to talk to the GQRX software on the defined IP Address and Port as configured in the GQRX setup. The output from this node then goes into the Filter RIGCTL Response node that processes the corresponding reply from GQRX for each message sent to it. Errors are trapped in the green Debug node and can be used for debugging.

The receive S Meter is also driven from the the output of the Filter RIGCTL Response node and passed onto the S Meter function for formatting before being passed through to the actual gauge on the dashboard.

Continuing down the left hand side of the flow we move into the section where all the GQRX controls are defined.

M0AWS - QO-100 Ground Station Dashboard - GQRX Controls
M0AWS Node-RED QO-100 Ground Station Dashboard – GQRX Controls Flow

In this section we have the VFO step buttons that move the VFO up/down in steps of 10Hz to 10Khz. Each button press generates a value that is passed onto the Set DeltaFreq change node and then on to the Calc new VFO Freq function. From here the new VFO frequency is stored and passed onto the communications channel to send the new VFO frequency to the GQRX software.

The Mode and Filter nodes are simple drop down menus with predefined values that are used to change the mode and receive filter width of the SDR receiver.

Below are the HAM band selector buttons, each of these will use a similar process as detailed above to change the VFO frequency to a preset value on each of the HAM HF Bands.

The QO-100 button puts the transmit and receive VFO’s into synchro-mode so that the receive VFO follows the transmit VFO. It also sets the correct frequency in the 739Mhz band for the downlink from the LNB in GQRX SDR software and sets the IC-705 to the correct frequency in the 2m VHF HAM band to drive the 2.4Ghz up-converter.

The Split button allows the receive VFO to be moved away from the transmit VFO for split operation when in QO-100 mode. This allows for the receive VFO to be moved away so that you can RIT into slightly off frequency stations or to work split when working DXpedition stations.

The bottom two Memory buttons allow you to store the current receive frequency into a memory for later recall.

At the top right of this section of the flow there is a Display Band Plan Info function, this displays the band plan information for the QO-100 satellite in a small display field on the Dashboard as you tune across the transponder. Currently it only displays information for the satellite, at some point in the future I will add the necessary code to display band plan information for the HF bands too.

The final section of the GQRX flow (shown below) sets the initial button colours and starts the Powermate USB VFO knob flow. I’ve already written a detailed article on how this works here but, for completeness it is triggered a few seconds after startup (to allow the USB device to be found) and then starts the BASH script that is used to communicate with the USB device. The output of this is processed and passed back into the VFO control part of the flow so that the receive VFO can be manually altered when in split mode or in non-QO-100 mode.

M0AWS - QO-100 Ground Station Dashboard - Powermate VFO section
M0AWS Node-RED QO-100 Ground Station Dashboard – Powermate VFO Flow

The bottom flows in the image above set some flow variables that are used throughout the flow and then calculates and sets the RIT value on the dashboard display.

The final section of the flow is the IC-705 control flow. This is a relatively simple flow that is used to both send and receive data to/from the IC-705, process it and pass it on to the other parts of the flow as required.

M0AWS - QO-100 Ground Station Dashboard - IC-705 control flow
M0AWS Node-RED QO-100 Ground Station Dashboard – IC-705 Control Flow

The IC-705 flow is started via the timestamp trigger at the top left. This node is nothing more than a trigger that fires every 0.5 seconds so that the dashboard display is updated in near realtime. The flow is pretty self explanatory, in that it collects the current frequency, transmit power, SWR reading, PTT on/off status and S Meter reading each time it is triggered. This information is then processed and used to keep the dashboard display up to date and to provide VFO tracking information to the GQRX receive flow.

On the left are the buttons to change band on the IC-705 along with a button to tune to the VOLEMT on the 60m band. Once again there two memory buttons to save and recall the IC-705 VFO frequency.

The Startup PTT Colour trigger node sets the PTT button to green on startup. The PTT button changes to red during transmit and is controlled via the Toggle PTT function.

At the very bottom of the flow is the set transverter IF Freq function, this sets the IC-705 to a preselected frequency in the 2m HAM band when the dashboard is switched into QO-100 mode by pressing the QO-100 button.

On the right of the flow there is a standard file write node that writes the 2.4Ghz QO-100 uplink frequency each time it changes into a file that is used by my own logging software to add the uplink frequency into my log entries automatically. (Yes I wrote my own logging software!)

The RX Audio Mute Control filter node is used to reduce the receive volume during transmit when in QO-100 full duplex mode otherwise, the operator can get tongue tied hearing their own voice 250ms after they’ve spoken coming back from the satellite. This uses the pulse audio system found on the Linux platform. The audio is reduced to a level whereby it makes it much easier to talk but, you can still hear enough of your audio to ensure that you have a good, clean signal on the satellite.

As I said at the beginning of this article, this flow has grown organically over the last 12 months and has been a fun project to put together. I’ve had many people ask me how I have created the dashboard and whether they could do the same for their ground station. The simple answer is yes, you can use this flow with any kind of radio as long as it has the ability to be controlled via CAT/USB or TCP/IP using XMLRPC or RIGCTL.

To this end I include below an export of the complete flow that can be imported into your own Node-RED flow editor. You may need to make changes to it for it to work with your radio/SDR but, it shouldn’t take too much to complete. If like me you are using an IC-705 and any kind of SDR controlled by GQRX SDR software then it’s ready to go without any changes at all.


More soon …

Retevis RT85 antenna SWR

Since purchasing my Retevis RT85 2m/70cm handheld radio I’ve noticed that it seems rather deaf when using the antenna that came with the radio and isn’t as strong into the local repeaters as I imagined it would be.

Considering the local 2m and 70cm repeater isn’t that far from my QTH and there is pretty much a clear line of site view in the direction of the repeater I was somewhat surprised that on 70cm the repeater never breaks the squelch, even if it is set on it’s lowest setting of zero.

M0AWS Retevis RT85 dual band VHF/UHF Handheld Radio
M0AWS Retevis RT85 dual band VHF/UHF Handheld Radio

Connecting my home made end fed dual band vertical dipole at 10m above ground the performance of the radio improves drastically as one would expect.

Having recently purchased a JNCRadio VNA 3G antenna analyser I decided to connect the Retevis supplied antenna to the analyser and see what the resonance was like on the two bands.

The antenna is labelled as 136-174Mhz and 400-470Mhz. This is an extremely wide frequency range for such a small antenna and clearly isn’t going to perform that well over such a wide bandwidth.

Connecting the antenna to the VNA and setting the stimulus frequency range to 144-148Mhz I found that the SWR curve of the antenna wasn’t particularly good.

M0AWS Retevis RT85 Antenna SWR Curve 2m
M0AWS Retevis RT85 Antenna SWR Curve 2m

As shown above the SWR curve on the 2m Band is pretty poor. At 144.0Mhz it’s just over 3:1, at 145.496 (closest I could get to the 145.500 calling channel) the SWR is still 2.1:1. The antenna doesn’t really get close to resonance until 148Mhz where the SWR is 1.46:1.

With an SWR this high the radio will almost certainly be reducing the O/P power considerably to protect the PA stage from over heating due to so much power be reflected back into the transmitter. This explains the poor performance when using 2m repeaters locally and the somewhat limited range when using the OEM supplied antenna.

Looking at the SWR curve on the 70cm band, the antenna is much closer to resonance than it is on the 2m band but, it’s still not perfect.

M0AWS Retevis RT85 Antenna SWR Curve 70cm
M0AWS Retevis RT85 Antenna SWR Curve 70cm

At 430Mhz the SWR is 1.56:1, at 435Mhz 1.63:1 and 440Mhz 1.72:1. Since the antenna is much closer to resonance on the 70cm band I would expect it to perform better than it does.

Looking at the SWR curves over the entire supported frequency range of 136-174Mhz and 400-470Mhz, there is only one point of resonance on VHF around 148Mhz and on UHF around 400Mhz.

With such disappointing performance on both VHF and UHF I’ve decided to investigate making my own 2m/70cm antenna for the handheld to see if I can improve both the SWR on each band and the overall performance of the radio.

More soon …

Dual Band VHF/UHF End Fed Vertical Dipole

Since purchasing my Icom IC-705 radio I’ve only used it on the HF bands. Since the IC-705 is a “shack-in-a-box” I thought it was about time I ventured up onto the VHF/UHF bands and add another string to my bow.

Since I don’t have an antenna for these two bands I’d need to build something. I’m not really interested in DXing on the VHF/UHF bands as I’d need a yagi or two, a rotator and would need to get the entire setup up high on the chimney on the house.

We’re very fortunate in that there are a good many repeaters on VHF/UHF in East Anglia with quite a few being well within range of my QTH.

So I decided to go with a simple vertical antenna of some sort that I could easily attach to the top of a 10m spider pole and pop up in the garden without too much hassle.

The simplest of all antennas to build for any band is an end fed vertical dipole. It’s made purely from a piece of coax cable, you can’t get much simpler.

Using some dimensions I found online I unrolled a length of RG58U and set about cutting it to resonance for the two bands.

To start I measured out 910mm of RG58U and put a piece of tape around the cable at the 910mm point. I then stripped the top 460mm of the outer and braid from the coax so that the inner wire and plastic insulation was exposed. This then left 450mm of coax with the braid still in place to make up the 2nd half of the vertical dipole.

At the 910mm marker I wound the coax 9 times around a 27mm former to create a choke balun. I taped the coil up to ensure it kept it’s shape, removed it from the former and then used a few zip ties to hold it in place.

VHF/UHF End Fed Vertical Dipole Diagram

The diagram above aids in visualisation of the make up of the antenna that is made from a single piece of RG58U coax cable.

Choke Balun made from 9 turns of RG58U on a 27mm former

I next wound some electrical tape around the point on the antenna where the outer insulation and braid ended so that it would stop moisture getting into the rest of the coax and causing problems in the future. I also put a bit of electrical tape across the top of the end of the wire to stop moisture getting into the inner wire and then a piece of electrical tape around the wire to ensure it was fully sealed.

Electrical tape wound around the point where the outer braid finishes

At this point the antenna was complete! It literally took a few minutes to make. I could now either cut the coax a few centimetres from the bottom of the coil and fit a PL259 or just continue the coaxial cable back into the shack and fit a PL259 on the end. I decided to go with the latter as it’s one less connection to make.

VHF/UHF End Fed Vertical Dipole taped to the top of a 10m spiderpole

Once complete, I taped the antenna to the top of a 10m spider pole and then ran the rest of the coax back into the shack and soldered on a PL259 connector.

Raising the spider pole up to its maximum length put the antenna some 10m up above the ground. Hopefully this will give me a relatively clear path to the local repeaters.

Plugging the antenna into the IC-705 and checking the SWR I found it was <1.2:1 across the entire 2m band and <1.5:1 across most of the 70cm band. It was perfect for what I wanted!

VHF/UHF End Fed Vertical Dipole up 10m on a Spiderpole

I configured the local repeaters into the the IC-705 memories so that I could easily switch from one repeater to the next with all the appropriate tone and duplex frequency shifts set at the touch of a button.

My local 2m repeater GB3PO comes in at 5/9+10dB without any preamp and the local 70cm repeater GB3IH comes in at 5/9+5dB without any preamp. I was really pleased with the results and set about having a chat with other local HAMs on the local repeaters. It’s been a while since I’ve used the mic on this radio and it made a nice change!

To my surprise I found I could get into far more repeaters than I ever imagined. GB3NB in Norwich is 5/8 as are a number of repeaters down in Essex. This gives me quite a scope for chatting on the VHF/UHF bands via the repeater network.

To my surprise I can also hear ON0WV in Brugge Belgium, unfortunately it’s on the same frequency as the local 2m GB3PO repeater and so often gets drowned out completely but, it’s good to know that when there’s a lift in propagation I should be able to get into the near continent without too much hassle.

If you’re looking to build a simple but, effective 2m/70cm vertical for local repeater access then I highly recommend making an end fed vertical dipole. It only takes a few minutes to cut the cable to length, remove the outer sheath and braid and wind the choke balun, it really couldn’t be any easier.

More soon …