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 …

Using AI to generate modern QSL Cards

With the recent explosion of artificial intelligence (AI) art generators that are making the news of late for all the wrong reasons, I decided to see if I could put it to good use and design some futuristic QSL cards.

Having recently been contacted by the Special Callsigns QSL Manager and being advised that there were 18 QSL cards waiting for me, I decided it was time to create some QSL cards of my own for future use.

Having never used any form of online AI and not having any artistic abilities I was amazed how easy it was to create images using nothing more than a paragraph or so of text to describe what it was I wanted to create.

Since all the QSL cards I received were for contacts on the QO-100 satellite, I set out to create a visually futuristic QSL card that was based around a radio HAM operator and satellite communications.

M0AWS - 1st attempt to create a futuristic QSL card using AI Art
M0AWS – 1st attempt at creating a futuristic QSL card image using AI Art

To my surprise the results of my first image generation were surprisingly good. The AI generated an image that resembled the simple text that I entered, although I never requested a one legged HAM operator!

Pleased with my very first attempt I gradually improved the description of what I was looking for, adding more and more detail to the text and including things that I wanted to see in the image. Over a fairly short period of time this approach started to generate some very interesting images.

With each iteration I gradually got closer to what I was trying to achieve but, never quite got exactly what I wanted so, I decided to rewrite the descriptive text adding even more information than before. The text was now a full blown paragraph with quite specific things described including the angle at which the scene was being viewed from.

The other option I wanted to try out was the theme functionality that the AI offered. This allows you to set a theme for the image from things like steampunk, cartoon, manga, real world and many more. The results were quite impressive and added yet another angle to the image generation.

I disappeared down the theme AI Art generation rabbit hole for quite some time and generated some very interesting and fun results. The best by far though was the Thunderbirds themed image, this did put a smile on my face!

M0AWS - AI Art QSL Thunderbirds Themed
M0AWS – AI Art QSL Thunderbirds Themed

At the other end of the spectrum I tried the Salvador Dalli theme, it produced an image that was very like the work of the famous artist but, wasn’t quite what I was looking for.

M0AWS - AI Art QSL Salvador Dalli Themed
M0AWS – AI Art QSL Salvador Dalli Themed

After much fun I eventually settled on the image I was after, a futuristic scene of a radio HAM with a satellite ground station over looking a mountain range and city below.

M0AWS Satellite QSL Card generated using online AI
M0AWS Satellite QSL Card generated using online AI

I’m really pleased with the results from my ventures into AI generated art. The next challenge is to create a QSL card for HF bands Contacts.

More soon …

QO-100 Satellite Update

I’ve been active on QO-100 for a few days now and I have to admit that I’m really pleased with the way the ground station is performing. I’m getting a good strong, quality signal into the satellite along with excellent audio reports from my Icom IC-705 and the standard fist mic.

I’m very pleased with the performance of the NooElec v5 SDR receiver that I’m now using in place of the Funcube Dongle Pro+ SDR receiver. Being able to see the entire bandwidth of the satellite transponder on the waterfall in the GQRX SDR software is a huge plus too.

M0AWS QO-100 Satellite Log map showing contacts as of 23/06/23
M0AWS QO-100 Satellite Log map showing contacts as of 23/06/23

As can be seen on the map of contacts above, I’ve worked some interesting stations on some of the small islands in the Atlantic and Indian Oceans. The signals from these stations are incredibly strong on the satellite and an easy armchair copy.

DX of note are ZD7GWM on St. Helena Island in the South Atlantic Ocean, PP2RON and PY2WDX in Brazil, 8Q7QC on Naifaru Island in the Maldives, VU2DPN in Chennai India, 5H3SE/P in Tanzania Africa and 3B8BBI/P in Mauritius.

There are many EU stations on the satellite too and quite a few regular nets of German and French stations. I’ve not plucked up the courage to call into the nets yet, perhaps in the future.

There are a lot of very experienced satellite operators on QO-100 with a wealth of information to share. I’ve learnt a lot just from chatting with people with some conversations lasting well over 30mins, a rarity on the HAM bands today.

We also had our first Matrix QO-100 Net this week, an enjoyable hour of chat about all things radio and more. We have a growing community of Amateur Radio enthusiasts from around the world on the Matrix Chat Network with a broad spectrum of interests. If you fancy joining a dynamic community of radio enthusiasts then just click the link to download a chat client and join group.

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 …

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 …

WSJT-X Log file to Map using Node Red

Following on from my other Node Red exploits I’ve put together a flow that creates an interactive map of contacts that is generated from the WSJT-X ADI log file.

The flow is fairly straight forward and self explanatory so I won’t go into detail here but, will make a copy of the flow available for download at the end of this article.

Node Red Flow for processing the WSJT-X ADI Log file

The flow is incredibly quick at generating the map with all the pins on it, one for each station worked. The pins are colour coded, blue for FT8 and green for FT4. If you want to add other modes then just create a new colour entry in the Dynamic Icon Colour function.

The resultant map is fully interactive with each pin being clickable showing the QSO information in a tiny popup.

Node Red map generated from the WSJT-X ADI Log file

You can download the flow and try it yourself using the link below.

More soon …

Realtime WSJT-X decode data map

Following on from my previous article on Enhancing Digital modes with Node Red I’ve now got to a point where I have realtime decode information from the WSJT-X digital application being plotted on a Node Red world map not just for CQ calls but, for stations in conversation too.

The flow has become somewhat more complex than it was originally as more and more functionality has been added. I have deliberately split out the flow process into more nodes than are really necessary so that the flow is easier to understand. Anyone from a programming background like myself will soon realise that a lot of the nodes could actually be combined into one big node however, the overall flow process wouldn’t be so easy to understand for the Node Red newcomer and would possibly put people off from trying it out.

Current WSJT-X Node Red flow

Above is a screenshot of the flow as it currently stands. It’s pretty easy to understand what is happening in the flow due to the fact that the processes are broken out into small, easy to digest blocks.

From the top down we connect to WSJT-X via UDP port 2237 and listen for the data stream. As the data is received it’s passed directly into the WSJT-X-Decode node that converts the information into a Node Red compatible format. The data is then filtered with only the information required being passed onto the next node. There are two outputs from the filter node as we require two different streams of information, namely “CQ” and “TX1” data. All the rest of the data from WSJT-X is ignored as it’s not required at this time.

The “Get freq & SNR + Others” node builds a decode message payload with all the correct data, in the right format ready to be passed on along the flow. This node also sets a number of parameters required by the map node to be able to control the display of the data.

The next node along is “Set msg.payload”, this brings together all the necessary data into a single message payload that is then worked on by all the nodes further along the flow.

The next 3 nodes perform the simple task of moving some of the data into the objects defined by the world map node, if the data isn’t moved into these specific objects the map will not plot anything.

Now we get onto the slightly more difficult bit that might put off those who aren’t from a programming background. The next 7 nodes are all javascript functions which I have created to perform tasks that cannot be done via the standard Node Red pallet.

At this point it’s worth noting that I’m not a javascript programmer, I’ve used Python, Rust, Go, C and many other languages during my 40 plus year career but, javascript has never been one of them. I’m sure any seasoned javascript programmer will most likely raise an eyebrow at my attempt at javascript programming but, you need to remember that I’m doing this in my retirement and my enthusiasm for learning yet another programming language has wained somewhat!

So, getting back to the flow, each javascript function does just one task each of which is as follows:

  • Set rx_time – Sets the time the data was received/processed
  • Remove RR73 in tx1 – Remove decodes where RR73 is in TX1 instead of a valid callsign
  • Set Dynamic Icon Colour – Sets the icon colour depending on what type of call is decoded
  • Maidenhead to LON/LAT – Converts Maidenhead locator codes into LAT/LON Coordinates
  • Calc Distance – Calculates the distance between “My QTH” and the DX station
  • Calc Bearing – Calculates the bearing/beam heading to the DX Station from “My QTH”
  • Generate Search URLs – Generates the URLs for QRZ and my own online log lookups
Editing the Calc Distance function with debug info in the far right panel

Once all the functions have run the resultant data set is forwarded on to the WSJT-X Stations Map node where it is plotted real time on a world map.

To view the map point your web browser at your PC running Node Red as follows:

http://radiopc.your.domain:1880/worldmap/

Or if you haven’t got a DNS setup at home then just use the IP Address of the PC instead:

http://192.168.100.10:1880/worldmap/

Don’t forget that for all of this to work you must configure WSJT-X to send data via UDP on port 2237 otherwise the flow won’t be able to connect and listen for the decode data.

You may have noticed that there are 3 other nodes that I haven’t mentioned yet. The two green greyed out nodes are Debug nodes that can be enabled when required to help see what is going on in the flow. These debug nodes will display data in the debug panel on the right of the flow editor screen when they are enabled, they are extremely useful for debugging!

The third is the blue My QTH node, this contains data pertaining to my QTH that is plotted on the map using an orange icon. You can easily edit this node to point to your QTH instead.

WSJT-X Node Red map showing orange icon denoting my QTH

Once the flow is deployed you’ll be surprised how quickly the data starts to be plotted on the map. Stations calling “CQ” are shown by Green icons and stations that are in a QSO with another station are denoted by the Red icons.

Each icon is clickable and will present all the information collected by WSJT-X for each station viewed.

WSJT-X Node Red World Map showing FT8 stations realtime on the 12m Band

The popup also has two clickable entries, one will take you to the qrz.com page for the station being viewed and the other will search my logs to see if I have worked that station already and if so it will open a new tab showing the information.

Node Red Function Editor showing the Generate Search URLs function

You can edit the “Generate Search URLs” node so that it points to your online logs search engine so that you can view your own log data instead of mine.

Below is a close up of the popups that are displayed when each icon on the map is clicked. The popups show the information collected from WSJT-X for each station plotted on the map.

Left – Green “CQ” Popup and Right – Red “TX1” in QSO popup

If you fancy trying this out for yourself but, don’t fancy creating all the nodes in the flow manually then I have made an export of the flow available for download. All you have to do is download the file, unzip it and then import it to Node Red and you’ll have everything built ready to play with.


I’ll probably be adding more functionality to this flow as time goes on and will post further articles about it in the future.

More soon …

JS8 Logs now online

I’ve now added my JS8/JS8CALL logs to the website for both QRO (25w Max) and QRP (<10w) QSOs.

The JS8 logs are available from the Logs menu above.

I’ve updated the adi2html program to now be capable of processing the JS8CALL log file and will be releasing it into the public domain soon.

M0AWS QRP JS8 Online Log

More soon …

WSPR update

For the last 24hrs I’ve had the RaspberryPi2 transmitting WSPR on 20m and 10m connected to my EFHW Vertical antenna. So far not a single spot on the 10m band, I’m assuming the band hasn’t opened in the UK over the test period.

WSPR 20m band reports over the last 24hrs

Results on 20m continue to impress with reports from the USA, West Africa coast and as far east as Georgia.

I’ll check the signal on 10m later today using my IC705 to ensure it is transmitting ok and then will leave it running for another 24hrs to see what happens.

UPDATE:

It appears there’s been a reliable opening on both 10m and 20m to the Canary Islands just off the west coast of Africa so far today.

The last 48hrs looks like this:

10mW WSPR from M0AWS JO02QC on 10m and 20m bands

More soon …

All night DX fest!

Having just completed building my new radio shack I thought what better way to break it in than to do an all night radio session chasing the DX.

All nighters aren’t anything new for me, I did many an all night session low band DXing when we lived in France (F5VKM). Back then I had a massive cellar, part of which was a very well fitted out radio shack. With some very large antennas in our field out back I was truly spoilt with some great times on the 160m band in the dark winter months.

Now back in the UK and only just getting back into the hobby after a long break things are somewhat different. I now only have a typical small UK garden and only vertical antennas. Better than no antennas though!

The new radio shack is small compared to my super spacious setup in France but, it’s perfectly formed with all facilities.

For my over night radio session I decided to use my trusty Yaesu FTDX10, it has the best receiver I’ve ever used and is built to withstand the long haul operation.

Antenna wise I decided to use my 30m band EFHW vertical that can be tuned on most bands from 80m and upwards. I use a CG3000 remote auto tuner to match this antenna to the 50 ohm coax feed and it does a great job.

Being comfortably setup in the shack I tuned up on the 30m band and had a listen to see what shape the band was in.

Stations heard on 30m 10/11-07-22

Using FT8 I worked a bunch of European, Russian/Asiatic Russian stations with ease, the band was in fairly good shape albeit localised around Europe and Russia. Wanting to work stations a little further afield I decided to move up on to the higher bands. 12m is a band I really like but, always seem to miss when it’s open.

Tuning up on the 12m band using the same vertical that I was just using on the 30m band the FT8 section was packed with signals. At last, I’ve tuned up on the band when it’s open!

I suddenly noticed Bobby, VP8ADR down in the Falkland Islands in the WSJTX waterfall and gave him a call. He had a fair few people calling him and so I joined the list. In no time at all Bobby answered my call and we exchange SNR reports of -8dB both ways. This was surprising as later on one of the FT8 Facebook groups Bobby stated he was using 200w into a Hexbeam during our QSO, I was only using a measly 18w into my Vertical, I would had expected a much lower SNR report. Clearly Bobby’s setup was doing all the work!

Right after the QSO with Bobby I immediately went on to work PY7ZC, LU8YD, PY2ATI, LW6EQC, PY2EBD and PY2THO all in quick succession. With the Falklands, Brazil and Argentina in the log so soon it was looking like it was going to be a fun packed night.

Next up on the waterfall was 9Y4DG in Trinidad and Tobago and 8P6ET in Barbados, two really nice locations to get into the log and new ones on 12m for me.

Having worked all the DX I could hear on 12m and not wanting to just spend hours working endless European stations I tuned down onto the 17m band using the same vertical antenna. This antenna really does work well on bands it’s not designed for.

First 3 stations in the log on 17m were all from Japan, JR3NZC, JQ6RUP and JA5BDZ. With all 3 stations being well on the way to 6000 miles away this was a good start. The propagation strangely swung to the west and I got YV5DRN from Venezuela in the log.

Not seeing any other stations that I wanted to work I retuned back onto 30m again and found it was open to South America and the Caribbean.

In no time at all I had YV4CLF in Venezuela, HK2AQ in Colombia, NP4TX and NP3XF in Puerto Rico and PY7ZC in Brazil all in the log.

Being in complete darkness I decided to tune down on to the 60m band, one of my favourites, to see if there was much going on. Sure enough there were a few stations active on the limited space available.

First station worked was a new one for me FP/KV1J on St. Pierre and Miquelon Island just off the coast of New Foundland. I have to admit I had no idea where this little island was and confess to having to look it up on google maps.

I then went on to work a few East Coast USA stations all with good SNR reports for this time of year.

Stations heard on the 60m band 11-07-22

Having worked all the notable DX on 60m I tuned back onto the 17m which was now wide open to the world.

I stayed on this band for the rest of the night well into the morning grey line and beyond working some great DX including some new ones for me.

I worked many East Coast USA stations but, stations of note were 6Y5HN in Jamaica and AK6R, K6EU and K6EI in California on the West Coast USA. It’s rare for me to get into the West Coast USA for some reason.

UA0SDX in Irkutsk Siberia was also a nice one to get in the log. This is a town I was going to be riding my motorcycle through on my Mongolian trip before COVID19 and the war in Ukraine broke out and stopped the trip from happening. More information about my motorcycle adventures can be found on my Feralmoto website.

It was good to get an Ozzy call in the log too, VK6EI on the West Coast of Australia came in at a strong -15dB SNR giving me a surprising -14dB SNR report, incredible considering I was using just 22w into my vertical antenna.

Well after sunrise the DX was still pouring in and I worked KL7TC in Fairbanks Alaska, a new one for me that made me very happy as I’d been trying to get into Alaska for some time but, never seemed to time it right. Today was my day!

Another station I was really pleased to get into the log was V31MA. I’ve tried to get a QSO with this station many times but, have never succeeded until today. I called for about 20mins and eventually got a reply putting a huge smile on my face. -16dB SNR sent and -19dB SNR received, I was happy that I finally have Belize in the log.

The last station worked was RA0FF way over on the far East Coast of Russia, the complete opposite direction to Belize. Located in Yu-Sakhalinsk right on the Russian coast opposite Japan and at 5270 miles, this is my longest distance Russian station worked so far and one I was very happy to have in the log. I always get good take off towards Russia whether it be directly east or over the North Pole to the far eastern parts of the Siberian wilderness.

I had a great night chasing the DX on the HF bands and being retired didn’t have to worry about going to work after such a long night. I highly recommend that you try an all nighter at least once in your HAM radio career, you get the opportunity to work stations that you’d normally not hear during the day time hours.

You can see the full list of stations worked on the over nighter on my WSJTX Log page.

More soon …