Loading Meshtastic Firmware onto Heltec ESP32 v3 Devices

The loading of the Meshtastic firmware on the Heltec ESP32 v3 devices is really simple if done via a Linux PC/RaspberryPi. There are of course other ways to load the firmware using a web browser that supports USB/Serial devices and this method is preferred by many however, being a Linux command line junkie I far prefer the simplicity of using the Linux command line to do the job.

So, how much experience with the Linux command line do you need?

In all honesty none at all. If you know how to use copy and paste then all you have to do is follow the simple steps I’ve detailed below. In reality it will only take a few minutes to do so, don’t be put off by the long article, I’ve just tried to cover everything and provide screen shots along the way.

To get started fire up your Linux PC/RaspberryPi and get yourself to the desktop. Next you will need to open a Linux command line terminal. This is often just called “Terminal” on most Linux desktop installations.

The first thing you need to do is check to see if you have python3 installed. This is done using the following command:

python3 --version

Running the above command you should see a result something like what is shown below.

Python3 command showing installed version
Python3 command showing installed version

Next we need to check if pip3 is installed using the following command:

pip3 --version

If pip3 is installed then you should get a result similar to that shown below.

Pip3 command showing installed version
Pip3 command showing installed version

If your computer doesn’t have Python3 or Pip3 installed they can be easily installed from the command line. To install Python3 enter the following command into your terminal:

sudo apt install python3

You will be asked to enter your login password and then the installation will begin. You should see output in your terminal similar to that shown below.

Installing python3
Installing python3

To install Pip3 enter the following command into your terminal:

sudo apt-get install python3-pip

This will detail a long list of packages that will be installed on your computer, Enter Y to answer Yes and let the packages install.

M0AWS - Installing Pip3
M0AWS – Installing Pip3

You will see many messages scroll up the terminal screen such as getting, selecting, preparing, unpacking and setting up, this is all normal.

Once Pip3 is installed you should be dropped back at the command line with a terminal screen that looks something like the one below.

M0AWS - Pip3 install complete
M0AWS – Pip3 install complete

At this point you will now have Python3 and Pip3 available on your computer.

You are now ready to install the tool we are going to use to check your Meshtastic device is connected to your PC and install the firmware to it. (Do not connect your Meshtastic device to your PC just yet!)

Run the following command in your terminal to install the ESP Tool:

pip3 install --upgrade esptool

You will see an output from the installation process similar to that shown below.

M0AWS - Installing the ESP Tool
M0AWS – Installing the ESP Tool

Now that we have the ESP tool installed plug your Meshtastic device into your USB port on your computer and then run the following command to interrogate the device to find out what kind of device it is.

esptool chip_id

You should see the information about your device that looks similar to that shown below. This information should confirm the device type (ESP32) and which USB port it is connected on (/dev/tty/USB0).

M0AWS - Expected output from the ESPTool command showing device information
M0AWS – Expected output from the ESPTool command showing device information

Once you have this information you will need to download the firmware for your device from Github using the following URL:

https://github.com/meshtastic/firmware/releases

At the time of writing this I downloaded and used the v2.2.22.404d firmware which I have found to be extremely reliable.

In your terminal you now need to change directory (cd) into the Downloads directory where your downloaded firmware should be. (If you downloaded your firmware into another directory then you will need to cd into that directory). Use the following command to change directory into the Downloads directory.

cd ~/Downloads

Now we need to find the filename of the firmware we have just downloaded, we can use the list directory contents command to find the file using the simple command below.

ls -la firm*.zip
M0AWS - List firmware file name from the Linux command line
M0AWS – List firmware file name from the Linux command line

In the screenshot above we can see that the filename is called
firmware-2.2.22.404d0dd.zip.
We now need to unzip the file using the unzip command.

unzip firmware-2.2.22.404d0dd.zip

You’ll see lots of output from the unzip command about inflating files etc, this is normal.

Once the file has been unzipped you are ready to load the firmware onto your Heltec device. First you need to find the .bin file for your Heltec device. Use the following ls command to list the files available.

ls -la firmware-heltec*

This will list out all the firmware file options for the Heltec device as shown below.

M0AWS - List of Heltec firmware files
M0AWS – List of Heltec firmware files

The file you need to use for a new firmware installation on a Heltec v3 device is
firmware-heltec-v3-2.2.22.404d0dd.bin. (If you downloaded a different version then the version number in the file will be different).

Using the filename you found above enter the following command into your terminal.

./device-install.sh -f firmware-heltec-v3-2.2.22.404d0dd.bin

This will now clear down your Heltec device and will load the Meshtastic firmware. This will take a little time especially on slower computers like the RaspberryPi so, just let it run until it finishes. Do not interrupt the process whilst it is running.

Installing the Meshtastic firmware onto my Heltec ESP32 v3 using the Python command line tool
Installing the Meshtastic firmware onto my Heltec ESP32 v3 using the Python command line tool

Once the firmware is loaded the Heltec device will reboot and you will see the Meshtastic banner on the OLED screen. Your device is now ready for configuration.

Now that you have Python3 and Pip3 installed you can load the firmware onto other devices just by downloading the firmware and then running the device-install.sh script file, you won’t need to install Python3 or Pip3 again.

If you want to update your device in the future to a newer version of the firmware then just use the update script and update binary file as shown below.

./device-update.sh -f firmware-heltec-v3-2.2.22.404d0dd-update.bin

That’s it, you are now a Linux Command line junkie!

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 …

Replacement for the Funcube Dongle Pro+

For some time now I’ve been using my Funcube Dongle Pro+ (FCD) as my QO-100 downlink receiver. It’s worked fairly well and has given me the ability to listen to stations on the satellite over the last few months.

During this time I have noticed a couple of things about the FCD that has lead me to the final decision to change to a new SDR device.

The first of these ‘things’ is the fact that the FCD gets seriously overloaded when there are multiple large SSB signals within the receive pass band. The only way to manage this is to constantly keep changing the software based AGC, mix and LNA settings to reduce the levels of the incoming signals so that the overloading stops. This is great except when you tune to a quiet part of the satellite transponder you have to turn all the settings back up again to be able to hear the weaker signals. After a while this becomes tiresome.

The fact that there isn’t a hardware AGC in the FCD is a major drawback when being used for satellite reception especially when it’s on the end of a very high gain LNB and dish antenna.

The second of these ‘things’ is the fact that I can’t see the whole transponder bandwidth at one time with the FCD as it has a very small receive bandwidth capability. This means that I am constantly tuning up and down the transponder to see if there are any stations further up or down in frequency.

Funcube Dongle Pro+
Funcube Dongle Pro+

Talking to more experienced satellite operators in the Matrix Amateur Radio Satellites room they recommended replacing the FCD with a NooElec NESDR SMArt v5 that has hardware AGC and is capable of receiving and displaying a much wider bandwidth.

Looking on Amazon the NooElec NESDR SMArt v5 is only £33 so I decided to place an order for one and give it try.

In typical Amazon style the SDR receiver arrived the next day and I wasted no time getting it plugged in and connected to the QO-100 ground station.

The NESDR SMArt v5 is based on the well known RTL-SDR that came onto the market some time back but, has a number of improvements in it that take it to the next level.

The first thing that I was happy with was the fact that the GQRX SDR software I use recognised it immediately on startup, no configuration or drivers were required it just worked, straight out of the box. Since I use Kubuntu Linux on my radio room PC I did wonder if I would need to get into installing extra libraries etc but, thankfully none of that was required.

Looking at the signals from the QO-100 satellite initially they appeared to be nowhere near as strong as they were on with the FCD. Looking at the settings in GQRX I noticed that the hardware AGC was off and the LNA setting was back to it’s default very low level.

I switched on the AGC and then increased the LNA setting to 38.4dB and found that the signals were now plenty strong enough on the display but, not overloading the receiver.

I then went on to adjust the display so that I could see the whole satellite transponder bandwidth on the screen. This is great as it enables me to see the low, middle and high beacons that mark out the narrow band section of the transponder and at a glance see all the stations using the satellite. This was a massive improvement in itself and one that I am very pleased with.

Using the NooElec NESDR SMArt v5 SDR it very soon became clear that it copes with multiple large signals in the pass band so much better than the FCD did. There’s no more overloading of the receiver, no more ghost signals appearing on the waterfall due to the front end not being able to cope and no more having to constantly keep playing with the settings to get things under control. The hardware AGC built into the SDR device does a great job at keeping it all under control whilst receiving a much wider bandwidth than the FCD ever could.

The satellite beacons are now received at S9+15dB without the receiver being overloaded, the first time I have seen this since starting out on my QO-100 venture.

The other thing that became obvious very quickly is that frequency stability is much better than it was with the FCD, it doesn’t drift up and down the transponder now and stays tuned exactly where I put it. It’s also on frequency whereas, the FCD was always 1.7Khz off frequency.

GQRX showing QO-100 Transponder signals
GQRX showing QO-100 Transponder signals

The NooElec NESDR SMArt v5 is very well put together, it has an aluminium case that acts as a heatsink (it does get warm!) and overall the build quality is much better than the plastic cased FCD. When I think that I paid close to £100 for the FCD and the NooElec NESDR SMArt v5 only cost £33, I am amazed at the build quality.

Overall I’m extremely pleased with the purchase of the new SDR, it slotted in perfectly as a replacement for the FCD, works great with GQRX, my QO-100 Node Red Dashboard and performs considerably better than the FCD. Overall money well spent!

You can find the NooElec NESDR SMArt v5 spec sheet here.

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 …

QO-100 Satellite Ground Station Build

Over the long bank holiday weekend I started putting together my QO-100 ground station. To start with I’ve concentrated solely on the receive path. I’ll start the transmit path once I have the receive path operational at a satisfactory level.

A few weeks ago I purchased a 1.1m off-set dish antenna and a Bullseye LNB. These have been sat in my garage waiting for the weather to improve so that I could start the build in the dry.

Fortunately we’ve had a mini-summer for the last 2 days and so I started work on getting the dish mount built. Using some timber from the local saw mill I made a braced 3m tall post which I screwed to the side of the cabin to provide a stable fixing platform. I used a couple of threaded bars to bolt through the walls of the cabin to ensure a solid fixing.

Next I mount the metal dish bracket to the top of the wooden post taking the total height up to around 3.2m above ground. This gives plenty of head clearance down below.

Next I assembled the dish and and attached it to the metal dish bracket at the top of the wooden post.

QO-100 1.1m dish mounted on the 3.2m AGL fixing

Attaching and cabling the Bullseye LNB was an easy job. I used some high quality coax cable that I purchase from the Satellite Superstore when I purchase the dish. I also had to set the LNB skew to -17.8 degrees. The marking on the LNB are tiny and go up in fives and so it’s pretty much impossible to get exactly -17.8 degrees so I turned it to 15 and then a tiny bit. It was as close I could get it!

Next I needed the information on where to point the dish. Fortunately there is a great web app on the BATC website where you can move a pin on a map to your location and all the information you need to align the dish is automagically calculated for you.

Armed with this info I set about aligning the dish. Getting it as close as possible I lightly locked off the dish and continued getting the coax in to the radio room so that I could connect it to my Funcube Dongle Pro+ (FCD) SDR receiver. Since the LNB needs a 12v DC feed I had to put inline a “Bias Tee” unit. This unit allows you to inject 12v onto the coax going up to the LNB but, stops it from coming back into the receiver. I used a Bias Tee that I purchased from Amazon with the Bullseye LNB.

Bias Tee mounted under the station desk

Connecting the coax to my Funcube Dongle Pro+ I was really pleased to see that I was receiving signals from the satellite perfectly well. I decided to take my laptop up onto the roof of the cabin and see if I could improve the reception further. To my amazement with very tiny changes in elevation and azimuth I was able to improve the QO-100 beacon signal by a further 10dB.

Being pleased with the dish alignment I started to tighten it so that it couldn’t move in the wind. Unfortunately this caused the dish to move a tiny amount which reduced the signal strength. I loosened the bolts off again and realigned the dish once more. This time when I tightened the clamps I did it a bit at a time on each bolt working my way round them so that the dish didn’t move. Doing it this way I still lost 1dB off the QO-100 beacon signal due to tiny amounts of movement but, decided I could live with the 1dB reduction.

QO-100 dish successfully mounted & aligned with HF antennas in the background

Below is a very short video clip showing a German station talking on the QO-100 satellite. As you can see the signal is nice and strong and extremely clear. I did find that the output from the LNB was actually too much for the FCD SDR and so I reduced the LNA setting in GQRX to 0dB. This reduced the background noise level considerably as the receiver was no longer being overloaded and made the signals much more prevalent above the noise floor.

Short video clip showing signal clarity from the QO-100 Satellite

I’m really pleased at the performance of the receive path and have now ordered the 2.4Ghz hardware from DXPatrol and Nolle Engineering so that I can build the transmit path.

I have also made some improvements to my QO-100 Node Red Dashboard so that I can work split on the satellite using my IC-705 and FCD SDR.

QO-100 Node Red Dashboard with ‘Split’ capability

Once the 2.4Ghz hardware arrives I’ll update the blog with progress.

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 …

Realtime WSJT-X Decode Map v2

Following on from my initial article on plotting realtime WSJT-X decodes on a Node Red map I’ve made a few enhancements to the flow so that it includes even more data then before.

The additions to the flow now enables collection of status information from WSJT-X so that the flow is able to capture the frequency that the radio is tuned to and also the mode that WSJT-X set to. Neither of these two bits of data are in the decode message payload and so a separate mini-flow has to be created to collect the data from the status payload along side the other main flow.

Node Red flow showing additional sub flow in the top left corner of the flow editor screen

Since the status information needs to be available to all other flows I used flow variables to store the status information in so that it can be addressed directly from any of the other flows in the Node Red app.

If you’d like to use the flow in your radio room then I have put a download link below for a file that you can import into Node Red and build the flow in an instant.

More soon …