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 …

QO-100 Satellite Ground Station Complete Build

I get quite a few emails from readers of my blog asking how my QO-100 satellite station is put together and so, I thought perhaps now is a good time to put together an article detailing the complete build.

My QO-100 satellite ground station is built around my little Icom IC-705 QRP transceiver, it’s a great little rig and is ideal for the purpose of driving a 2.4Ghz transverter/up-converter.

Of course all the software used for the project is Opensource and freely available on the internet.

M0AWS QO-100 Ground Station Build Visual
M0AWS QO-100 Ground Station Build Visual (Click to Enlarge)

The station comprises of the following building blocks:

  • Icom IC-705 Transceiver
  • DXPatrol 28/144/433Mhz to 2.4Ghz Up-Converter
  • DXPatrol GPSDO Reference Oscillator
  • DXPatrol 2.4Ghz 5/12w Amplifier
  • Nolle Engineering 2.2 turn 2.4Ghz IceCone Helix Antenna
  • 1.1m (110cm) Off-set Dish
  • Bullseye 10Ghz LNB
  • Bias-T to feed 12v to LNB
  • NooElec SmartSDR Receiver
  • PC Running Kubuntu Linux Operating System
  • GQRX SDR Opensource Software
  • Griffin Powermate USB VFO Knob
  • QO-100 Ground Station Dashboard developed using Node-RED
  • LMR400-UF/RG58 Coax Cable
M0AWS QO-100 1.1m off-set Dish and IceCone Helix antenna ground station
M0AWS QO-100 1.1m (110cm) off-set Dish with IceCone Helix antenna and Bullseye LNB.

To get a good clear view of the QO-100 satellite I have the dish mount 3.2m above the ground. This keeps it well clear of anyone walking past in the garden and beams the signal up at an angle of 26.2 degrees keeping well clear of neighbouring gardens.

The waterproof enclosure below the dish houses all the 2.4Ghz equipment so that the distance between the feed point and the amplifier are kept to a minimum.

The DXPatrol amplifier is spec’d to run at 28v/12w or 12v/5w, I found that running it at 28v produced too much output for the satellite and would cause the LEILA alarm on the satellite to trip constantly. Running the amp at 12v with a maximum of 5w output (average 2.5-3.5w) is more than enough for me to have a 5/9+10 signal on the transponder.

The large 1.1m dish gives me quite an advantage on receive enabling me to hear the very weak stations with ease compared to other stations.

2.4Ghz ground station enclosure ready for testing
2.4Ghz ground station enclosure ready for testing

The photo above shows the 2.4Ghz equipment mounted in the waterproof enclosure below the dish. This photo was taken during the initial build phase before I rewired it so, the amplifier is shown connected to the 28v feed. To rewire the amp to 12v was just a matter of removing the 28v converter and connecting the amp directly to the 12v feed instead. This reduced the output from a maximum of 12w down to a maximum of 5w giving a much better (considerate) level on the satellite.

It’s important to keep all interconnects as short as possible as at 2.4Ghz it is very easy to build up a lot of loss between devices.

For the connection from the IC-705 to the 2.4Ghz Up-Converter I used a 7m run of
LMR-400 coax cable. The IC-705 is set to put out just 300mW on 144Mhz up to the 2.4Ghz converter and so it’s important to use a good quality coax cable.

Once again the output from the 2.4Ghz amplifier uses 1.5m of LMR-400-UF coax cable to feed up to the 2.2 turn Icecone Helix Antenna mounted on the dish. This keeps loss to a minimum and is well worth the investment.

Bullseye 10Khz High Stability Unversal Single LNB for 10.489-12.750Ghz
Bullseye 10Khz High Stability Unversal Single LNB for 10.489-12.750Ghz

The receive path starts with a Bullseye LNB, this is a high gain LNB that is probably one of the best you could use for QO-100 operations. It’s fairly stable frequency wise but, does drift a little in the summer months with the high temperature changes but, overall it really is a very good LNB.

The 12v feed to the LNB is via the coax and is injected by the Bias-T device that is in the radio shack. This 12v feed powers the LNA and associated electronics in the LNB to provide a gain of 50-60dB.

Bias-T to inject 12v feed into the coax for the Bullseye LNB
Bias-T to inject 12v feed into the coax for the Bullseye LNB

From the Bias-T the coax comes down to the NooElec SmartSDR receiver. This is a really cheap SDR device (<£35 on Amazon) based on the RTL-SDR device but, it works incredibly well. I originally used a Funcube Dongle Pro+ for the receive side however, it really didn’t handle large signals very well and there was a lot of signal ghosting so, I swapped it out for the NooElec SDR and haven’t looked back since.

The NooElec SmartSDR is controlled via the excellent Opensource software GQRX SDR. I’ve been using GQRX SDR for some years now and it’s proven itself to be extremely stable and reliable with support for a good number of SDR devices.

To enhance the operation of the SDR device I have added a Griffin Powermate VFO knob to the build. This is an old USB device that I originally purchased to control my Flex3000 transceiver but, since I sold that many moons ago I decided to use it as a VFO knob in my QO-100 ground station. Details on how I got it working with the station are detailed in this blog article.

Having the need for full duplex operation on the satellite this complicates things when it comes to VFO tracking and general control of the two radios involved in the solution and so I set about creating a QO-100 Dashboard using the great Node-RED graphical programming environment to create a web app that simplifies the management of the entire setup.

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

The QO-100 Dashboard synchronises the transmit and receive VFO’s, enables split operation so that you can transmit and receive on different frequencies at the same time and a whole host of other things using very little code. Most of the functionality is created using standard Node-RED nodes. More info on Node-RED can be found on the Opensource.radio Wiki or from the menu’s above.

I’ll be publishing an article all about the QO-100 Dashboard in the very near future along with a downloadable flow file.

I’m extremely pleased with how well the ground station works and have had well in excess of 500 QSO’s on the QO-100 satellite over the last last year.

More soon …

Update to my NodeRed QO-100 Dashboard

Ever since my QO-100 ground station has been operational I’ve been using my NodeRed QO-100 Dashboard to control my IC-705 and GQRX SDR software to drive my NooElec SmartSDR receiver. This gives me a full duplex ground station with both transmit and receive VFO’s synchronised.

This solution has worked incredibly well from the outset and over time I’ve added extra functionality that I’ve found to be useful to enhance the overall setup.

The latest addition to the ground station solution is a Sennheiser Headset that I picked up for just £56 on Amazon (Much cheaper than the Heil equivalents at the HAM stores!) and have found it to be excellent. The audio quality from both the mic and the headphones is extremely good whilst being light and comfortable to wear for extended periods.

M0AWS - Sennheiser SC 165
M0AWS – Sennheiser SC 165 Headset

To incorporate this into the ground station the headset is connected to my Kubuntu PC and the audio chain to the IC-705 is sent wirelessly using the latest version of WFView. This works extremely well. The receive audio comes directly from the GQRX SDR software to the headphones so that I have a full duplex headset combination.

Audio routing is done via pulse audio on the Kubuntu PC and is very easy to setup.

Since I no longer have a mic connected to the IC-705 directly I found that I needed a way to operate the PTT wirelessly and this is where the latest addition to my NodeRed QO-100 Dashboard comes in.

Adding a little functionality to the NodeRed flow I was able to create a button that toggles the IC-705 PTT state on and off giving me the ability to easily switch between receive and transmit using a simple XMLRPC node without the need for a physical PTT button.

M0AWS - Additional NodeRed PTT Flow
M0AWS – Additional NodeRed PTT Flow

The PTT state and PTT button colour change is handled by the Toggle PTT function node shown in the above flow. The code to do this is relatively simple as shown below.

M0AWS - NodeRed Toggle PTT Function to change button colour
M0AWS – NodeRed Toggle PTT Function to change button colour

The entire QO-100 Dashboard flow has grown somewhat from it’s initial conception but, it provides all the functionality that I require to operate a full duplex station on the QO-100 satellite.

M0AWS - NodeRed QO-100 Dashboard complete flow
M0AWS – NodeRed QO-100 Dashboard complete flow

This simple but, effective PTT solution works great and leaves me hands free whilst talking on the satellite or the HF bands when using the IC-705. This also means that when using my IC-705 it only requires the coax to be connected, everything else is done via Wifi keeping things nice and tidy in the radio shack.

M0AWS - Updated NodeRed QO-100 Dashboard with PTT button
M0AWS – Updated NodeRed QO-100 Dashboard with PTT button

The image above shows the QO-100 ground station in receive cycle with the RX/TX VFO’s in split mode as the DX station was slightly off frequency to me. The PTT button goes red when in TX mode just like the split button shown above for visual reference.

As you can probably tell, I’m a huge fan of NodeRed and have put together quite a few projects using it, including my HF Bands Live Monitoring web page.

More soon …

Getting back onto 160m “Top Band”

Since setting up the new HAM station here in the UK the one band I’ve not yet got back onto is 160m, one of my most favourite bands in the HF spectrum and one that I was addicted to when I live in France (F5VKM).

Having such a small garden here in the UK there is no way I can get any type of guyed vertical for 160m erected and so I needed to come up with some sort of compromise antenna for the band.

Only being interested in the FT4/8 and CW sections of the 160m band I calculated that I could get an inverted-L antenna up that would be reasonably close to resonant. It would require some additional inductance to get the electrical length required and some impedance matching to provide a 50 Ohm impedance to the transceiver.

Measuring the garden I found I could get a 28m horizontal section in place and a 10m vertical section using one of my 10m spiderpoles. This would give me a total of 38m of wire that would get me fairly close to the quarter wave length.

For impedance matching I decided to make a Pi-Network ATU. I’ve made these in the past and found them to be excellent at matching a very wide range of impedances to 50 Ohm.

M0AWS Homebrew Pi-Network ATU
M0AWS Homebrew Pi-Network ATU

Since I still had the components of the Pi-Network ATU that I built when I lived in France I decided to reuse them as it saved a lot of work. The inductor was made from some copper tubing I had left over after doing all the plumbing in the house in France and so it got repurposed and formed into a very large inductor. The 2 x capacitors I also built many years ago and fortunately I’d kept locked away as they are very expensive to purchase today and a lot of work to make.

Getting the Inverted-L antenna up was easy enough and I soon had it connected to the Pi-Network ATU. I ran a few radials out around the garden to give it something to tune against and wound a 1:1 choke balun at the end of the coax run to stop any common mode currents that may have appeared on the coax braid.

Connecting my JNCRadio VNA I found that the Inverted-L was naturally resonant at 2.53Mhz, not too far off the 1.84Mhz that I needed. Adding a little extra inductance and capacitance via the ATU I soon had the antenna resonant where I wanted it at the bottom of the 160m band.

M0AWS 160m Inverted L Antenna SWR Curve
M0AWS 160m Inverted L Antenna SWR Curve

With the SWR being <1.5:1 across the CW and FT8 section of the band I was ready to get on 160m for the first time in a long.

Since it’s still summer in the UK I wasn’t expecting to find the band in very good shape but, was pleasantly surprised. Switching the radio on before full sunset I was hearing stations all around Europe with ease. In no time at all I was working stations and getting good reports using just 22w of FT8. FT8 is such a good mode for testing new antennas.

As the sky got darker the distance achieved got greater and over time I was able to work into Russia with the longest distance recorded being 2445 Miles, R9LE in Tyumen Asiatic Russia.

In no time at all I’d worked 32 stations taking my total 160m QSOs from 16 to 48. I can’t wait for the long, dark winter nights to see how well this antenna really performs.

M0AWS Map showing stations worked on 160m using Inverted L Antenna
M0AWS Map showing stations worked on 160m using Inverted L Antenna

The map above shows the locations of the stations worked on the first evening using the 160m Inverted-L antenna. As the year moves on and we slowly progress into winter it will be fun to start chasing the DX again on the 160m band..

UPDATE 6th October 2023.
Been using the antenna for some time now with over 100 contacts on 160m. Best 160m DX so far is RV0AR in Sosnovoborsk Asiatic Russia, 3453 Miles using just 22w. Pretty impressive for such a low antenna on Top Band.

More soon …

Antenna Analysers – The New World

Many years ago I had an MFJ-259B antenna analyser that I used for all my HF antenna projects. It was a simple device with a couple of knobs, an LCD display and a meter but, it provided a great insight into the resonance of an antenna.

MFJ-259B Antenna Analyser
MFJ-259B Antenna Analyser

Today things have progressed somewhat and we now live in a world of Vector Network Analysers that not only display SWR but, can display a whole host of other information too.

Being an avid antenna builder I’ve wanted to buy an antenna analyser for some time but, now that I’m into the world of QO-100 satellite operations using frequencies at the dizzy heights of 2.4GHz I needed something more modern.

If you search online there are a multitude of Vector Network Analysers (VNAs) available from around the £50.00 mark right up to £1500 or more. Many of the VNAs you see on the likes of Amazon and Ebay come out of China and reading the reviews they aren’t particularly reliable or accurate.

After much research I settled on the JNCRadio VNA 3G, it gets really good reviews and is very sensibly priced. Putting a call into Gary at Martin Lynch and Sons (MLANDS) we had a long chat about various VNAs, the pros and cons of each model and the pricing structure. It was tempting to spend much more on a far more capable device however, my sensible head kicked in and decided many of the additional features on the more expensive models would never get used and so I went back to my original choice.

Gary and I also had a long chat about building a QO-100 ground station, using NodeRed to control it and how to align the dish antenna. The guys at MLANDS will soon have a satellite ground station on air and I look forward to talking to them on the QO-100 transponder.

Getting back to antenna analysers, I purchased the JNCRadio VNA 3G from MLANDS at £199.96 + postage and have been trying it out on a couple of antennas here at the M0AWS QTH.

Initially I wanted to check the SWR of my QO-100 2.4GHz IceCone Helix antenna on my satellite ground station to ensure it was resonant at the right frequency. Hooking the VNA up to the antenna feed was simple enough using one of the cables provided with the unit and I set about configuring the start and stop stimulus frequencies (2.4GHz to 2.450GHz) for the sweep to plot the curve.

The resulting SWR curve showed that the antenna was indeed resonant at 2.4GHz with an SWR of 1.16:1. The only issue I had was that in the bright sunshine it was hard to see the display and impossible to get a photo. Setting the screen on the brightest setting didn’t improve things much either so this is something to keep in mind if you plan on using the device outside in sunny climates.

(My understanding is that the Rig Expert AA-3000 Zoom is much easier to see outside on a sunny day however, it will cost you almost £1200 for the privilege.)

A couple of days later I decided to check the SWR of my 20m band EFHW vertical antenna. I’ve known for some time that this antenna has a point of resonance below 14MHz but, the SWR was still low enough at the bottom of the 20m band to make it useable.

Hooking up the VNA I could see immediately that the point of resonance was at 13.650Mhz, well low of the 20m band and so I set about shortening the wire until the point of resonance moved up into the band.

JNCRadio VNA3G showing 20m Band EFHW Resonance
JNCRadio VNA3G showing 20m Band EFHW Resonance

With a little folding back of wire I soon had the point of resonance nicely into the 20m band with a 1.35:1 SWR at 14.208Mhz. This provides a very useable SWR across the whole band but, I decided I’d prefer the point of resonance to be slightly lower as I tend to use the antenna mainly on the CW & FT4/8 part of the band with my Icom IC-705 QRP rig.

Popping out into the garden once more I lengthened the wire easily enough by reducing the fold back and brought the point of resonance down to 14.095Mhz.

JNCRadio VNA3G showing 20m Band EFHW Resonance 14Mhz to 14.35Mhz Sweep
JNCRadio VNA3G showing 20m Band EFHW Resonance 14Mhz to 14.35Mhz Sweep

The VNA automatically updated the display realtime to show the new point of resonance on the 4.3in colour screen. I also altered the granularity of the SWR reading on the Y axis to show a more detailed view of the curve and reduced the frequency range on the X axis so that it showed a 14Mhz to 14.35Mhz sweep. With an SWR of 1.34:1 at 14.095Mhz and a 50 Ohm impedance, the antenna is perfectly resonant where I want it.

It’s interesting to note that the antenna is actually useable between 13.5Mhz and 14.5Mhz with a reasonable SWR across the entire frequency spread. Setting 3 markers on the SWR curve I could see at a glance the SWR reading at 14Mhz (Marker 2) , 14.350Mhz (Marker 3) and the minimum SWR reading at 14.095Mhz (Marker 1).

I’ve yet to delve into the other functionality of the VNA but, I’m very happy with my initial experience with the device.

More soon …

UPDATE: QO-100 Node Red Dashboard

I’ve been making a few improvements to my QO-100 Node Red Dashboard whilst waiting for the 2.4Ghz hardware to arrive. I’ve added the ability to split the RX and TX VFOs so that I can tune away from the TX frequency for working split stations or for tuning to slightly off frequency stations. I also added a series of tuning buttons to the top of the GQRX side of the dashboard to enable easy tuning using the trackball connected to my Kubuntu PC. This worked well but, I really missed having a real VFO knob like a conventional radio.

As I had a Griffin Powewrmate USB VFO from a previous SDR radio I added it to the flow as well so that I had a physical VFO knob for the SDR receiver. Details on how I got it working using evtest and a simple BASH script are in the Griffin Powermate article.

M0AWS QO-100 Node Red Dashboard Flow
M0AWS QO-100 Node Red Dashboard Flow

The Node Red flow is looking a little busier with the addition of split mode and the Griffin Powermate USB VFO which has really enhanced the useability of the solution. It’s very impressive what can be achieved with Node Red with a little imagination. You really don’t need to be a heavy weight programmer to make things work.

M0AWS QO-100 Node Red Dashboard as of 07/06/23
M0AWS QO-100 Node Red Dashboard as of 07/06/23

I also put together some code to calculate the S Meter reading from the dBFS data the GQRX SDR software generates. It’s not 100% accurate but, it’s close enough to be useful.

On the IC-705 side of the Dashboard I also now display the 2.4Ghz uplink frequency so that it’s available for logging.

So with the QO-100 Dashboard ready to go live I have now started putting together the 2.4Ghz transmit path of the ground station. I have the 2.4Ghz transverter and matching 12w amplifier from DXPatrol, the IceCone Helix 2.4Ghz antenna from Nolle Engineering, some LMR-400-UF and connectors from Barenco and an appropriate water proof enclosure from Screwfix to fit all the kit into however, I’m now being held up by one simple little SMA male to SMA male connector that I need to connect the transverter and amp together.

The SMA connector has been ordered but, is taking a month of Sundays to arrive! Hopefully it’ll arrive soon and I’ll finally get on the QO-100 satellite and start enjoying the fun.

More soon …

Use a Griffin Powermate with SDR via Node Red

I’ve been gradually building my QO-100 ground station over the last few months and have had the receive path working for some time now. One of the things I really miss with the Funcube Dongle Pro+ (FCD) SDR is a real VFO knob for changing frequency.

My QO-100 Node Red dashboard is configured so that I can have the FCD track the uplink frequency from the IC-705 but, sometimes I use the FCD without the IC-705 in the shack and so a physical VFO would be handy.

Many years ago when I lived in France (F5VKM) I had a Flexradio Flex-3000 SDR, a great radio in it’s time and one that gave me many hours of enjoyment. One addition I bought for that station was a Griffin Technology Powermate VFO knob. It worked extremely well with the PowerSDR software for the Flex-3000 and I used it for many years.

Many years later I’m back in the UK and much of my equipment is packed away in the attic, including the Griffin Technology Powermate VFO.

I decided to dig it out and see if I could get it working with GQRX SDR software. Sadly I couldn’t get it working with GQRX however, I did find a way of getting it working with Node Red and thus could add it to my QO-100 Node Red Dashboard and then control GQRX with it via a simple Node Red flow.

Griffin Technology Powermate VFO
Griffin Technology Powermate VFO

Plugging the Powermate VFO into my Kubuntu PC it wasn’t immediately recognised by the Linux O/S. After a little searching I found the driver on Github. I added the PPA to my aptitude sources and installed the driver using apt.

https://launchpad.net/~stefansundin/+archive/ubuntu/powermate

Once installed the default config for the Powermate device is to control the default audio device volume. To make the device available for use as a VFO knob you need to change the configuration so that the default setting is disabled. To do this is relatively easy, just edit the config file using your favourite command line editor (Vi/Vim in my case) and add the following entry.

vi /etc/powermate.toml

# Entry to control HDMI volume with Powermate
#sink_name = "alsa_output.pci-0000_01_00.1.hdmi-stereo"

# Set powermate not to work with volume control
sink_name = ""

As shown above, comment out the default “sink_name” entry (Yours may be different depending on audio device in your PC) and add in the Powermate “sink_name” entry that effectively assigns it to nothing.

Once this is done, save the file and exit your editor and then reboot the PC.

Next you’ll need to install a small program called evtest.

sudo apt install evtest

To check the evtest program has installed correctly, plugin your Powermate VFO to any available USB port and run the following command in a terminal.

evtest /dev/input/powermate

Turning the Powermate knob you should see output on the screen showing the input from the device. You should also see BTN events for each press of the Powermate device.

Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0x77d product 0x410 version 0x400
Input device name: "Griffin PowerMate"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 256 (BTN_0)
  Event type 2 (EV_REL)
    Event code 7 (REL_DIAL)
  Event type 4 (EV_MSC)
    Event code 1 (MSC_PULSELED)
Properties:
Testing ... (interrupt to exit)
Event: time 1685816662.086666, type 2 (EV_REL), code 7 (REL_DIAL), value -1
Event: time 1685816662.086666, -------------- SYN_REPORT ------------
Event: time 1685816662.318638, type 2 (EV_REL), code 7 (REL_DIAL), value -1
Event: time 1685816662.318638, -------------- SYN_REPORT ------------
Event: time 1685816662.574615, type 2 (EV_REL), code 7 (REL_DIAL), value -1
Event: time 1685816662.574615, -------------- SYN_REPORT ------------
Event: time 1685816663.670461, type 2 (EV_REL), code 7 (REL_DIAL), value 1
Event: time 1685816663.670461, -------------- SYN_REPORT ------------
Event: time 1685816664.030421, type 2 (EV_REL), code 7 (REL_DIAL), value 1
Event: time 1685816664.030421, -------------- SYN_REPORT ------------
Event: time 1685816664.334389, type 2 (EV_REL), code 7 (REL_DIAL), value 1
Event: time 1685816664.334389, -------------- SYN_REPORT ------------
Event: time 1685816665.334255, type 1 (EV_KEY), code 256 (BTN_0), value 1
Event: time 1685816665.334255, -------------- SYN_REPORT ------------
Event: time 1685816665.558230, type 1 (EV_KEY), code 256 (BTN_0), value 0
Event: time 1685816665.558230, -------------- SYN_REPORT ------------
Event: time 1685816666.030161, type 1 (EV_KEY), code 256 (BTN_0), value 1
Event: time 1685816666.030161, -------------- SYN_REPORT ------------
Event: time 1685816666.182151, type 1 (EV_KEY), code 256 (BTN_0), value 0
Event: time 1685816666.182151, -------------- SYN_REPORT ------------

At this point you’re ready to stop evtest (CTRL-C) and then create the following little BASH shell script that Node Red will run to collect the O/P from the Powermate USB device.

#!/bin/bash

###############################################
# Griffin Technology Powermate control script #
# for Node Red.                               #
#                                             #
# 04/06/23 - M0AWS - v0.1                     #
#                                             #
###############################################

VAL="1"
echo "STEP-1Hz"

/usr/bin/evtest /dev/input/powermate | while read LINE 
do
   case $LINE in

      *"(REL_DIAL), value 1") echo "$VAL"
           ;;

      *"(REL_DIAL), value -1") echo "-$VAL"
           ;;

      *"(BTN_0), value 1") case $VAL in

                              "1") VAL="10"
                                   echo "STEP-10Hz"
                                      ;;

                             "10") VAL="100"
                                   echo "STEP-100Hz"
                                      ;;

                             "100") VAL="1000"
                                    echo "STEP-1Khz"
                                       ;;

                             "1000") VAL="10000"
                                     echo "STEP-10Khz"
                                         ;;

                             "10000") VAL="1"
                                       echo "STEP-1Hz"
                                          ;;
                              esac
                                 ;;
        esac
done

Once the BASH script is copied and pasted into a file called powermate.sh you need to make it executable by using the following command.

chmod 700 ./powermate.sh

If you now run the shell script in a terminal you’ll see a similar output to that shown below from the device when used.

./powermate.sh 
STEP-1Hz
-1
-1
-1
1
1
1
STEP-10Hz
10
10
10
-10
-10
-10
STEP-100Hz
100
-100
-100
STEP-1Khz
1000
STEP-10Khz
STEP-1Hz
1
1
STEP-10Hz

As you can see above the shell script outputs a positive or negative number for VFO tuning and changes the VFO step size each time the Powermate is depressed.

Getting this output from the BASH shell script into Node Red is really simple to achieve using just 3 or 4 nodes.

In the Node Red development UI create the following nodes.

Griffin Powermate Node Red Nodes
Griffin Powermate Node Red Nodes

The first node in the flow is a simple inject node, here I called it trigger. This sends a timestamp into the next node in the flow at startup to set the flow running.

The Griffin Powermate node is a simple exec node that runs the script we created above.

M0AWS Powermate exec node
M0AWS Powermate exec node

Configure the node as shown above and connect it to the inject node that’s used as a trigger. Note: Change “user” in the Command field shown above to that of your username on your Linux PC)

Once done create the third node in the flow, a simple switch node and configure as shown below.

Switch Node for Powermate
Switch Node for Powermate

The switch node has two outputs, the top one is a text output that is fed into a text field to show the current step size of the Powermate device and the lower output is the numeric output that must be fed into your VFO control flow so that the VFO value is incremented/decremented by the amount output by the Powermate device.

I’ve found the Griffin Technology Powermate USB device works extremely well with Node Red and GQRX that I use for controlling the FCD SDR radio and it’s now part of my QO-100 ground station build.

M0AWS QO-100 Dashboard with Powermate Step Display at bottom
M0AWS QO-100 Dashboard with Powermate Step Display at bottom

As shown above you can see the Powermate Step size at the bottom of the dashboard, this text changes each time the Powermate device is depressed and will set a step size of 1Hz, 10Hz, 100Hz, 1Khz, 10Khz in a round-robin fashion.

The next stage of the build is the 2.4Ghz transmit path. I now have all the necessary hardware and so this part of the build can finally commence.

More soon …

Easy Multi Band Vertical Antenna for HF

Over the years I’ve built many multi band vertical HF antennas including multi-element quarter wave verticals like the DXCommander configuration, multiple end fed vertical dipoles all on the same pole and a host of other configurations. As with all multi band antennas there’s always a compromise, on some bands it performs well and on others it doesn’t, it’s the nature of the beast.

For some time now I’ve been using a multi band vertical antenna that has over the last year performed incredibly well on all bands from 80m to 10m. Don’t get me wrong, it’s not perfect however, it has out performed every other multi band HF vertical I’ve tried to date even though it’s by far the simplest antenna design and according to the antenna modelling software I have it shouldn’t be as good as it is.

So what is this magical multi band HF vertical I speak of?
Well it’s nothing more than a piece of wire 13.4m long taped up a 12.4m vertical Spiderpole with 1m of wire tucked down into the top of the Spiderpole.

Obviously this is not going to be resonant on any band without some sort of impedance matching circuit at the bottom of the wire. Originally this antenna was my end fed half wave vertical antenna for the 30m band that was fed via a 49:1 Unun. This antenna worked incredibly well on the 30m band allowing me to work DX globally with ease but, it was a single band antenna and I wanted a multi band solution.

I decided to remove the 49:1 Unun and replace it with a home brew LC circuit made up of a coil made from 5mm copper tubing and a large air spaced variable capacitor I had laying around from an old ATU project I built many moons ago.

This simple LC arrangement at the bottom of the wire worked incredibly well and tuned the wire from 80m to 10m with a perfect SWR on each band using nothing more than a ground rod and 4 x 12m radials. Performance was surprisingly good on all bands 80-10m giving me the ability to get some DX stations that I’ve never been able to hit before. The only drawback to this solution was the fact that I had to go out and manually tune the antenna every time I wanted to change band. Not so much of a problem in the summer but, in the winter in the pouring rain and howling wind it’s no fun at all. (I resolve this issue further down in the article!)

Multi Band Vertical HF Antenna using a 12.4m Heavy duty Spiderpole at the end of the garden

Performance on the HF bands is incredibly impressive with this antenna. Modelling it on EzNEC software it shouldn’t be that great on bands above 20m however, it seems to defy the modelling software as it performs amazingly well on 17m, 15m and 12m, better than any other vertical antenna I’ve made for those bands. How this can be I do not know, normally my antenna builds match closely what the modelling software shows but, in this instance it doesn’t and I’ve really no idea why.

Multi Band Vertical HF Antenna showing loop at top and wire tucked down into pole

Always wanting to put things into perspective here’s some details of the contacts I’ve made on each band showing how well this antenna has performed over the last year or so.

Firstly the 80m band, I’ve not used this band much over the winter months as I’ve got into the higher bands however, the map below shows all the stations worked on 80m using this antenna.

Stations worked on the 80m band from the M0AWS QTH

There are 51 contacts in total, not a big number by any means however, there are some good distances made with contacts into North America, South America and Indonesia. I’m sure I could had done better if I’d spent more time on this band, something to aim for next winter perhaps.

Next is the 60m band, a band I really like and have enjoyed over the winter months. The antenna performs incredibly well on this band even though we have very limited access to 60m here in the UK. With 288 contacts in the log with a good spread of distances I’m really pleased with how this antenna performs on this band.

Stations worked on the 60m band from the M0AWS QTH

Moving up in frequency the 40m band is the next one on the list, this is a great band and one that I’ve loved for many years. I’ve spent countless hours on CW on this band in the past and worked some great DX. The performance of this antenna on the 40m band is excellent, if I can hear the DX normally I can work them regardless of where in the world they are located. With 226 contacts in the log spread globally over the winter here in the northern hemisphere I have no complaints about performance of this antenna on the 40m band.

Stations worked on the 40m band from the M0AWS QTH

Moving up onto the 30m band I have to admit this is probably my favourite band of all. I’ve spent so many hours on CW working some of the best fists I have ever heard on the air I’ve grown to love this band not just for the DX available but, for the quality of operator found on this narrow piece of the RF spectrum. Needless to say since the antenna is a half wave on the 30m band performance is stunning, out performing any other 30m band antenna I have ever made. It’s even better than the 30m Delta Loop antenna that I built and used when I lived in France.

With 467 contacts in the log on the 30m band you can tell this is my goto band and one that offers access to some of the best DX in the world.

Stations worked on the 30m band from the M0AWS QTH

The 20m band is a band that I never really used until I moved back to the UK from France. Living in France I had acres of land and so I was very much into the low bands, 160m to 30m and never ventured above this part of the spectrum. Now living back in the U.K. with a typical U.K. sized garden the low bands are much more difficult to get onto and so my interests have moved up in frequency somewhat.

Getting onto the 20m band I was amazed at how easy it is to work DX stations compared to the low bands, it’s simply a case of if you can hear them you can work them, there’s no real challenge to be honest. Because of this the band is always super busy with people shouting over the top of each other to get the DX. Not to be put off, I’ve made a surprising 412 contacts on 20m covering the globe. This antenna works incredibly well on this band and you really don’t need anything else to work DX on 20m.

Stations worked on the 20m band from the M0AWS QTH

Next is the 17m band, one of the WARC bands that I’ve never really ventured onto until now. I have to admit I really like this band, when it’s open it’s normally open to the world all at the same time. With an almost undetectable background noise level you can hear the faintest of signal on this band. This is one of the bands that according to the EzNEC modelling software this antenna shouldn’t be any good on but, I have to say that it’s performance is beyond anything I ever imagined. I’ve worked my longest distance yet on this band and with this antenna, ZL4AS at 11776 miles, a distance I haven’t achieved yet on any other band. The 17m band really is a great band, I’d actually say it’s better than the 20m band even though there is considerably less spectrum available. With 220 contacts in the log it’s been a fun band to use.

Stations worked on the 17m band from the M0AWS QTH

Continuing the theme of the WARC bands, the 15m band is another one that I’ve only discovered in the last 12 months. It’s only now that I realise what I’ve missed out on due to my addiction to the low bands for so many years.

I’ve only made 76 contacts on the 15m band, not a lot at all really. This is mainly due to the fact that I get easily side tracked by the 17m and 30m bands most of the time and the radio VFO never gets as far as 21Mhz. Performance of the antenna is good on 15m, I would say not as good as on the 17m band but, it’s no slouch by any means.

As you can see on the map below, I may of only made 76 contacts on the 15m band but, they are spread right across the world proving that this antenna’s DX-ability on 21Mhz really is rather good.

Stations worked on the 15m band from the M0AWS QTH

Finally we arrive at the top of the WARC bands, the little 12m band. Once again this band is very much like the 17m band, super low background noise level, when it’s open you can work huge distances with very little power but, often there is quite deep QSB that can make getting that elusive DX a bit more challenging.

With only 66 contacts in the log once again I’ve not spent a huge amount of time on this band but, it hasn’t disappointed. With global coverage from this antenna on 12m once again I am astounded at how well it works. With software modelling saying it should be terrible on 24.9Mhz with nothing but super high angle radiation, it really shouldn’t be a good antenna for DXing on this upper WARC band but, it is and I have no idea as to why!

Stations worked on the 12m band from the M0AWS QTH

Finally we arrive at the 10m band, another band that I have never got into even though many refer to it as the magic band. This is the band that I’ve made the fewest contacts on, not because the antenna doesn’t work at the dizzy heights of 28Mhz but, because I hardly ever get the VFO dial past the lower bands due to the level of DX available. I really should make more effort to get the best out of the 10m band, especially now the summer is coming.

With a measly 19 contacts in the log I should be ashamed of myself for not doing more on this band as it is very often open and busy with traffic. Since I’ve not really used the antenna that much on the 10m band it’s hard to say how well it performs however, I have had contacts into North and South America and so it shows potential.

Stations worked on the 10m band from the M0AWS QTH

As you can see, the performance of this antenna is self evident from the log entries, it works superbly even though the modelling software says it shouldn’t above 14Mhz. This is now my main antenna here in the U.K. and I’ve only made one change to the initial setup and that is to add a CG3000 remote auto ATU to replace the home-brew LC tuning circuit.

CG3000 Remote Auto ATU housed in a plastic box

With the CG3000 auto ATU in place I no longer have to venture out into the cold, wet garden in the winter months to change band, it’s just a case of sending a continuous 10w signal into it and leaving it to tune in less than 2 seconds. The CG3000 is a Pi Network ATU so it handles both high and low impedance loads with ease. A Pi Network ATU is one of the best you can have, I’ve made my own in the past and had excellent results.

So in summary, 13.4m of wire vertically up a 12.4m pole with 4 x 12m radials, a ground rod and a CG3000 Auto ATU will give any HAM station the ability to work DX on all bands from 80m to 10m without ever having to leave the shack to tune it.

Since I got the CG3000 off of Ebay for a bargain £170 and the 12m heavy duty Spiderpole for under £100 the total cost of the antenna is considerably less than many commercial offerings available and yet performs as well if not better.

If you want to get this antenna onto the 160m band then you just need to add a small coil into the mix at the bottom of the wire to increase the inductance in circuit. The CG3000 will then happily tune the entire 160m band. It’s best to remove this coil though for all the other bands otherwise performance is reduced.

Please be aware that the performance of this antenna will not be anywhere near as good if you use the ATU in your radio at the end of a coax run. This is because the coax becomes part of the antenna and the radiation pattern is all but destroyed. You will be extremely disappointed if you use the antenna in this fashion. The ATU must be at the end of the wire and connected directly to ground and the radials to get the performance that I have experienced.

Finally, if you have an Icom IC-705 and AH-705 remote auto ATU you can use the AH-705 ATU in place of the CG3000, you will get the same results as I have with the CG3000.

I have used my AH-705/IC-705 combo quite a few times with this antenna with excellent results although, the big antenna can sometimes result in the receiver of the IC-705 getting overloaded especially on the lower bands. This is easily resolved by reducing the RF Gain on the radio.

More soon …

QO-100 TX/RX Dashboard

I’ve now completed the GQRX Receive and Icom IC-705 Transmit dashboard in Node Red. It was a fun project to put together and needed some javascript coding to get the functionality I wanted but, I got there in the end.

M0AWS QO-100 GQRX/IC-705 control dashboard

The dashboard looks fairly simple but, there is a lot behind the scenes to get it to this stage.

On the left is the Icom IC-705 transmit control panel. It shows the transmit frequency, power output and SWR reading. The SWR is so that I can check that the input into the 2.4Ghz transverter doesn’t have any connectivity issues. The “S0” will actually display the S Meter reading when the IC-705 is being used as a normal transceiver rather than being in QO-100 Duplex mode as shown above where the GQRX app and Funcube Dongle SDR are being used as the receiver.

The GQRX side of the dashboard shows the downlink frequency which tracks the uplink frequency of the VFO on the IC-705. This will ensure that the Funcube Dongle Pro+ SDR receiver will always be on the correct downlink frequency relative to the uplink frequency, thus I should always be able to hear my own signal coming from the QO-100 satellite.

Once taken out of QO-100 mode the two radios can be used independently on any of the HAM bands and can be switched using the buttons on the dashboard.

I also coded in a simple memory facility where a frequency can be stored in Node Red and recalled later on both the transmit and receive sides.

Looking at the dashboard it all looks simple and straight forward however, if you look at the Node Red flow it becomes obvious that this isn’t the case.

QO-100 Dashboard Flow in the Node Red Editor (Click for larger image)

There’s a lot to the flow to get the information from the receiver and transmitter so that it can be presented on the dashboard. There’s also some code to convert between Rigctl protocol used by the GQRX application and XMLRPC used by the IC-705 via FLRig and WFview. I had to also code around a bug in the Node Red XMLRPC node whereby you have to add 0.1 onto the VFO frequency for it to be passed onto the radio otherwise the information is never sent. This was a real pain of a bug to find but, with a little experimentation I found the problem and managed to code around it. The strange thing about this is that the 0.1 added onto the frequency isn’t actually passed onto the radio via the XMLRPC node, it just has to have that on input otherwise it doesn’t work at all. A very strange bug and hopefully one that will be fixed by the node developer in future releases.

All that is left to do now is add the temperature sensors dashboard to complete the dashboard. These haven’t arrived yet and so I’ve not been able to create the necessary flow to collect the data from them.

Hopefully this coming week the weather will improve and I’ll start getting the dish antenna up and the get the receive side working.

UPDATE: Further development of my QO-100 Dashboard has taken place, you can read all about it here.

More soon …

QO-100 Satellite Node Red Dashboard

Whilst I’ve been waiting for the weather to improve so that I can get my QO-100 dish antenna up I’ve been working on my QO-100 Node Red dashboard.

The idea of the dash board is to bring together the operating of the receiver and transmitter into one control centre so that the two separate devices are able to communicate and behave as if they were actually one device, like a transceiver rather than being individual components.

Ideally I would like to have the transmitter and receiver talking to each other such that when the VFO on the transmitter is incremented/decremented the receiver VFO also moves by the same amount.

By doing this the receiver VFO should always be in the right place on the 10Ghz band to hear my 2.4Ghz uplink signal and of course, any station coming back to my CQ calls.

So far I’ve only been working on the receive part of the Node Red flow, it’s certainly been a lot of fun getting it put together.

I control my Funcube Dongle Pro+ (FCD) using GQRX SDR on my Kubuntu PC. This software is working extremely well with the FCD and I’m happy with the level of functionality it offers.

GQRX SDR has the ability built in to control the SDR via remote TCP connection using RIGCTL protocol. Currently there isn’t a RIGCTL node available for Node Red so I have written a number of Javascript function nodes that provide the appropriate functionality in conjunction with a standard Node Red TCP node. This is working extremely well on the local LAN in the radio room and is proving to be very stable and responsive.

M0AWS QO-100 Node Red Flow – Receive Section

The flow for the receive section of the dashboard looks fairly complicated but, in reality it’s really not too difficult to get to grips with. The receive flow provides the facility to switch bands, switch modes, change receiver filter band width, display a realtime signal strength meter, receive +/- clarifier in 10/100/1000Hz increments and put the receiver into QO-100 mode where the SDR VFO is tuned to 739.550Mhz whilst the dashboard VFO shows the QO-100 downlink frequency in the 10Ghz band. This is all working very well and I’m happy with the initial result.

M0AWS QO-100 Receive Dashboard in QO-100 mode

I now need to start work on the transmit side of the QO-100 dashboard and get communications between my IC-705 transceiver and the FCD SDR working via Node Red. This could be a little more challenging as it will involve communicating with the IC-705 via WFView over wifi.

More soon …