Building HAM Clock on an old RaspberryPi

I’ve got a couple of old RaspberryPi computers on the shelf in the shack and so decided it was time for me to put one of them to good use. The first model on the shelf is the oldest and is one of the very first RaspberryPi 1 computers that was released. (It’s the one with the yellow analog video signal output on the board!). This particular model is extremely slow but, I hang onto it just as a reminder of the first SBC in the line.

The second one is a RaspberryPi 2, a quad core machine that is only slightly faster than the first model but, it’s powerful enough to run HAM Clock.

It didn’t take long to install a vanilla Raspbian Desktop O/S and get it configured on the local LAN. I installed a few packages that I like to have available on all my Linux machines and then started on the HAM Clock install.

The first thing I needed to do was install the X11 development library that is required to compile the HAM Clock binary. To do this, open a terminal and enter the command below to install the package.

sudo apt install libx11-dev

You will need to type in your password to obtain root privileges to complete the installation process and then wait for the package to be installed.

The HAM Clock source code is available from the HAM Clock Website under the Download tab in .zip format. Once downloaded unzip the file and change directory into the ESPHamClock folder ready to compile the code.

cd ~/Downloads/ESPHamClock

Once in the ESPHamClock directory you can run a command to get details on how to compile the source code.

make help

This will check your system to see what screen resolutions are available and then list out the options available to you for compiling the code as shown below.

The following targets are available (as appropriate for your system)

    hamclock-800x480          X11 GUI desktop version, AKA hamclock
    hamclock-1600x960         X11 GUI desktop version, larger, AKA hamclock-big
    hamclock-2400x1440        X11 GUI desktop version, larger yet
    hamclock-3200x1920        X11 GUI desktop version, huge

    hamclock-web-800x480      web server only (no display)
    hamclock-web-1600x960     web server only (no display), larger
    hamclock-web-2400x1440    web server only (no display), larger yet
    hamclock-web-3200x1920    web server only (no display), huge

    hamclock-fb0-800x480      RPi stand-alone /dev/fb0, AKA hamclock-fb0-small
    hamclock-fb0-1600x960     RPi stand-alone /dev/fb0, larger, AKA hamclock-fb0
    hamclock-fb0-2400x1440    RPi stand-alone /dev/fb0, larger yet
    hamclock-fb0-3200x1920    RPi stand-alone /dev/fb0, huge

For my system 1600×960 was the best option and so I compiled the code using the command as follows.

make hamclock-1600x960

It’s no surprise that it takes a while to compile the code on such a low powered device. I can’t tell you how long exactly as I went and made a brew and did a few other things whilst it was running but, it took a while!

Once the compilation was complete you then need to install the application to your desktop environment and move the binary to the correct directory.

make install

Once the install is complete there should be an icon on the GUI desktop to start the app. If like mine it didn’t create the icon then you can start the HAM Clock by using the following command in the terminal.

/usr/local/bin/hamclock &

The first time you start the app you’ll need to enter your station information, callsign, location etc and then select the settings you want to use. There are 4 pages of options for configuring the app all of which are described in the user documentation.

M0AWS - HAM Clock running on RaspberryPi Computer
M0AWS – HAM Clock running on RaspberryPi Computer

Once the configuration is complete the map will populate with the default panels and data. I tailored my panels to show the items of interest to me namely, POTA, SOTA, International Beacon Project and the ISS space station track. I was hoping to be able to display more than one satellite at a time on the map however, the interface only allows for one bird to be tracked at a time.

You can access the HAM Clock from another computer using a web browser pointed at your RaspberryPi on your local LAN using either the IP address or the hostname of the device.




You can also control the HAM Clock remotely via web browser using a set of web commands that are detailed on port 8080 of the device.

http://<hostname or ip-address>:8080/

M0AWS - HAM Clock remote command set
M0AWS – HAM Clock remote command set

This is a great addition to any HAM shack especially if, like me you have an old HDTV on the wall of the shack that is crying out to display something useful.

More soon …

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:

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
We now need to unzip the file using the unzip command.


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- (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.

./ -f firmware-heltec-v3-

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 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.

./ -f firmware-heltec-v3-

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

More soon …

A venture into the world of Meshtastic

Meshtastic is a relatively new thing in the internet of things (IOT) world and is gaining traction in the U.K. at the moment.

So what is Meshtastic?

Meshtastic is an open source, off-grid, decentralised mesh network built to run on affordable, low-power devices on the 868Mhz industrial, scientific, and medical (ISM) band. (Some devices can also run on the 433Mhz 70cm HAM band.)

The ISM band is licence free but, has limits on the RF power levels that can be used. The one plus over the HAM bands is that you can legally transfer encrypted messages over the ISM band making it secure.

The best way to think of Meshtastic is a radio version of the online decentralised Matrix chat system but, without the large server requirements and ever growing database!

Heltec ESP32 v3 Wifi, Bluetooth and 868Mhz device for Meshtastic
Heltec ESP32 v3 Wifi, Bluetooth and 868Mhz device for Meshtastic

There are quite a few Meshtastic compatible devices on the market today with many costing around the £20 mark whilst others like the LillyGo T-Echo costing over £100 in the U.K. even though they are less than half the price in the USA.

Since I’m just starting out on my Meshtastic adventure I thought I’d start with a pair of Heltec ESP32 v3 devices that are normally readily available on Amazon but, due to the current push to build a U.K. wide mesh, they are currently out of stock pretty much everywhere.

Loading the Meshtastic firmware onto the devices is fairly straight forward and can be done using the web installer via either the Edge or Chromium web browsers.
(Note: If using Windows O/S you will need to install some drivers from the Meshtastic website to be able to communicate with the devices)

Having neither of the two browsers and being a Linux command line junkie I decided to use the Python programme to load the firmware onto the two devices. It’s worth noting that you don’t need any drivers to be able to communicate with the devices if you’re using either Debian or one of the many Ubuntu flavours of Linux O/S.

Using the Python command line program sounds like a more complicated approach but, in reality it’s super simple, extremely reliable, quick and if like me you use a Linux PC in the radio shack then you most likely already have most of what you need to get the job done. Just follow the simple steps as laid out on the Meshtastic web site and you’ll have the firmware loaded in no time at all.

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

The firmware takes less than a minute to copy across to the Heltec device and is automatically rebooted ready for configuration once the transfer has completed.

It is possible to configure the device via the command line tool however, since there is a nice GUI app for both Apple iOS and Android devices I decided to install the Meshtastic app on my iPad and connect to the device via Bluetooth to configure it.

Once you’ve got the Meshtastic app installed on your device and have connected via Bluetooth you’ll be ready to start configuring the device to join the mesh. The first thing you want to do is set the region. This is different in each country but, in the UK we use the EU_868 region settings. This will set the device to use the 868Mhz ISM band which is the band being used to build the U.K. wide mesh.

View of the Meshtastic app on iOS showing the configuration options for the Heltec ESP32 v3
View of the Meshtastic app on iOS showing the configuration options for the Heltec ESP32 v3

There is a multitude of configuration options within the app which I will go into in greater detail in a series of articles at a later date.

Heltec ESP32 v3 running Meshtastic Firmware
Heltec ESP32 v3 running Meshtastic Firmware

For those of you that, like me aren’t near any other nodes you can connect the devices to the internet and use the Meshtastic MQTT server to communicate with other nodes. This of course isn’t off-grid but, it will get you started until the mesh grows into your local area at which point your device will automatically start communicating with the other nodes over radio.

Meshtastic MQTT connectivity
Meshtastic MQTT connectivity

Once you are connected to either the MQTT server or other nodes via radio you will see the other node details appear in the Meshtastic app. It’s interesting to look at the information and see signal strengths and traffic levels etc for each node.

View of the Meshtastic app on iOS showing Nodes in the Mesh and Device Metrics for the M0AWS-1 Node
View of the Meshtastic app on iOS showing Nodes in the Mesh and Device Metrics for the M0AWS-1 Node

There are a multitude of cases available for the Heltec v3 devices, especially if you have access to a 3D printer. One of the nicest cases I have seen is the Bender from IKB3D (I know, it’s a strange name!) but, it really is a super little case for the Heltec series of devices.

You can either buy the 3D print files for £8.99 and print it yourself or just order a pre-printed and assembled case directly from the website although, due to demand there is a long lead time currently.

More soon …

Taking the Hiss out of QO-100

I’ve been on the QO-100 satellite for about 7 months now and I have to admit I love it!

Having a “Repeater In The Sky” that covers a third of the world really is a wonderful facility to have access to however, there is one thing that I find tiring and that is the high level of background noise that is always present.

Even though the signals are mostly 59-59+15dB the background “hiss” is very pronounced and gets very tiring after a while, especially if like me you have tinnitus.

Currently I’m using a NooElec Smart SDR for the receiver and GQRX SDR software on my Kubuntu Linux PC. This works great but, there is one short fall, there is no DSP Noise Reduction (NR) in the software or hardware.

To fix this I recently invested in a BHI Dual In-Line Noise Eliminating Module. The unit itself is nicely put together and has a good combination of inputs and outputs making it easy to connect up to my MacBook Pro to record QSOs and connect my headphones at the same time.

M0AWS BHI Dual In-Line Noise Eliminating Module
M0AWS BHI Dual In-Line Noise Eliminating Module

At £189.95 plus postage from BHI direct it’s not cheap but, it is nicely put together and comes complete with a power lead and a couple of cheap audio cables. The quality of the knobs and mechanisms is good apart from the little grey DSP Filter Level knob that feels cheap and is very wobbly on the switch below. I’m not sure how long this is going to last with prolonged use and will most likely need replacing with something a little sturdier at some point in the future.

Overall noise reduction is good but, the audio amplifiers on the Audio Input Level and Line Out Level distort very early on in their range and you cannot get them much above level 5 before distortion starts to appear on the received signal. This is disappointing as my headphones are of reasonable quality and are let down by the distortion creeping in from the audio amplifier in the BHI unit.

I’ve tried altering the levels on the input from the IC-705 and no matter what I cannot get a good audio signal in my headphones without some distortion on the higher frequency ranges.

Overall the device does do what I want, it reduces the background “hash” considerably reducing the fatigue whilst chatting on the satellite. Below is a recording from a conversation on the satellite showing the noise reduction performance of the BHI module.

M0AWS Example BHI DSP NR Recording

The recording starts with the BHI DSP NR off, at 00:07 the DSP NR is switched on, you can clearly hear the difference. At 00:23 the DSP NR is turned off again and at 00:36 the DSP NR is turned on again. The BHI DSP NR Module is set with the DSP Filter Level set at 3 out of 8 which appears to be the best level to use. Switching to level 4 starts to introduce digital artefacts to the audio which only gets worse the higher the DSP Filter Level goes.

With a setting above level 3 there really isn’t much improvement in noise reduction and the audio becomes progressively more affected by the digital artefacts than it does from the background noise.

M0AWS BHI Dual In-Line Noise Eliminating Module with Icom IC-705 QO-100 Ground Station
M0AWS BHI Dual In-Line Noise Eliminating Module with Icom IC-705 QO-100 Ground Station

The only other problem I have with the BHI Dual In-Line Noise Eliminating Module is that is comes in a plastic case. The case itself is solid and of good quality however, it offers no RF shielding whatsoever and the unit is extremely susceptible to RF getting into the audio chain and then being heard during transmit in the headphones and via the line out connections. For the money I would had expected the unit to come in a metal case that provides proper RF shielding. This is a real shame as it lets the unit down considerably.

As setup in the photo above I am using 300mW O/P on 144Mhz from the IC-705 into a perfect 1:1 SWR presented by the DX Patrol 2.4Ghz Upconverter via some very high quality LMR-400 Coaxial cable from Barenco but, I get terrible RF interference via the BHI unit during the transmit cycle. Considering I am only using 300mW I dread to think what it may be like if I was using a 100w HF radio. This is something I need to investigate further as it really is very annoying.

Moving the unit to a different location in the radio room does help a bit but, doesn’t solve the problem completely. At 300mW RF O/P I really didn’t expect there to be a problem with RF getting into the BHI unit.

Having a proper line-out facility on the BHI unit really is nice as it makes it very easy to connect to my MacBook Pro to obtain good quality recordings of signals on the QO-100 satellite as can be listened to above.

Overall I am happy with the BHI Dual In-Line Noise Eliminating Module but, do wish that more care had been taken over using a metal case instead of a plastic case to protect the unit from RF ingress and better audio amplifiers within the unit that don’t distort/clip so early on in their O/P levels.

Is this the perfect noise reduction unit?

No but, overall it is better than nothing and does help to reduce the background noise to a more acceptable level reducing the overall fatigue during prolonged conversations on the QO-100 satellite.

UPDATE: I tried the BHI unit with my FTDX10 on the HF bands and the RF interference is horrendous, even when using QRP power levels! This device clearly hasn’t been designed to work in an RF environment and the total lack of shielding or isolation lets it down terribly. If you are an SWL then this unit is fine but, if like me you like to monitor your transmitted audio whilst on air through headphones then this isn’t the unit for you. To prove the problem isn’t in the radio shack I put the BHI unit in the house some 30m away powered by 12v battery with nothing connected but a pair of headphones and still the unit suffered from RF interference even at QRP levels.

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 …

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.

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)
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.


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

echo "STEP-1Hz"

/usr/bin/evtest /dev/input/powermate | while read LINE 
   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"

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

chmod 700 ./

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.


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 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 …

Funcube Dongle Pro+ / GQRX / Kubuntu

Many years ago I purchased a Funcube Dongle Pro+ (FCD) SDR. Since it’s arrival it has just been stored in my “Get round too it” drawer.

It’s been many years but, today is the day it comes out into the light and finally gets powered up.

Funcube Dongle Pro+ USB SDR

I’m hoping to be able to use the FCD as the receiver in my QO-100 satellite ground station setup.

The output from the 10Ghz dish mounted LNB is around 739Mhz, well within the FCD receiver range of 150khz to 2Ghz. This will save me from having to transvert from 739Mhz to 430Mhz (70cm band) on the receive path.

This will also give me full duplex operation as I will use my Icom IC-705 on the 2m band (144-146Mhz) to drive the 2.4Ghz transverter for the satellite uplink whilst listening to my own signal via the 10Ghz downlink fed into the FCD.

Before I can even start to build the QO-100 satellite ground station I need to get to grips with the FCD, get the software installed, configured, resolve audio routing via virtual audio cables and get it decoding FT8/JS8/WSPR etc.

Talking to G0DUB in the General Amateur Radio Chat room on Matrix he recommended trying the GQRX software to drive the FCD. GQRX is open source which fits perfectly as I want to control the FCD from my Kubuntu PC.

Checking the Ubuntu repo’s I found that GQRX v2.12 is available for installation.

sudo apt install gqrx-sdr

Once installed I fired up GQRX and set about configuring it. Initially it appeared to have automatically detected and configured the FCD however, when I started the FCD the software ran for 5 seconds and then just hung.

Diving into the configuration settings I found that the FCD actually appears twice in the list of available devices and all I had to do was select the other one in the list and start the software again and all was well.

I connected my 20m Band EFHW Vertical antenna and trawled up and down the band. The receiver performed well even with fairly strong signals so, I spent some time listening to a few of the stations coming in from the USA.

Next I wanted to sort out the configuration for digital modes. I already have a couple of virtual audio cables in the form of loopback audio devices configured on my Kubuntu PC as this is how I connect the audio between WFView for the IC-705 and WSJT-X/JS8CALL.

Sadly, GQRX doesn’t recognise the loopback audio devices that already exist and so I had to do a little further research to get to the bottom of the issue.

Digging deeper I discovered that GQRX requires loopback audio devices created using Pulse Audio and not the kind I had already created at the O/S level. A quick read of the pactl man page and some further searching online I found all the info I needed to create the correct kind of loopback audio devices.

Two commands are required to create the pulse audio server audio loopback devices:

pactl load-module module-null-sink sink_name=gq2jt sink_properties=device.description="gq2jt"

pactl load-module module-loopback latency_msec=1

Once I’d created the loopback audio devices I was able to select the gq2jt devices in both GQRX and WSJT-X/JS8CALL so that the audio was routed correctly.

GQRX SDR and WSJT-X working with the Funcube Dongle Pro+

The overall solution works well and doesn’t put much load on the CPU of my Kubuntu PC, leaving plenty of horse power for me to do other things at the same time.

So I now have the Funcube Dongle Pro+ working perfectly on my Kubuntu PC, all I need now is a 1.2m dish, a 10Ghz LNB and some high quality coax cable.

UPDATE: I decided to leave the FCD connected to the 20m Band EFHW Vertical overnight and monitor FT8 on the 40m band. The EFHW antenna isn’t anywhere near resonant on the 40m band and so I thought it would be interesting to see how well the FCD performed on a completely non-resonant antenna.

To my surprise it did exceptionally well, stations from all over the world were heard with ease, the FCD really is an excellent little SDR receiver.

Map showing stations heard on 40m Band FT8 over night 16/17 Jan 2023

If you’re looking for a relatively cheap but, effective receiver for FT8/WSPR monitoring then I can highly recommend the FCD. If paired with a RaspberryPi then it would be a really cheap to purchase/operate solution for any HAM operator or short wave listener (SWL).

More soon …

Getting chatty with JS8CALL

JS8CALL running on my MacBook Pro

I’ve been chasing the DX on the HF bands using FT8 for a while now and I have to say it’s been very successful however, it does get rather boring after a while just exchanging SNR reports and nothing else. I noticed that my time spent in the shack was getting less and less, not a good sign after all the work I’d put into building the new radio shack.

Since there’s not a lot of CW on the bands these days (everyone is on FT8) I thought I’d give JS8CALL a go.

Initially I started with trying to get JS8CALL working on my Kubuntu PC to my Icom IC-705 wirelessly. This turned out not to be as straight forward as I’d hoped but, I persevered.

I found that to communicate with the IC-705 via WFview wirelessly I needed to use FLRig as a go between. I installed FLRig from the Ubuntu repo’s only to find it’s an old version that doesn’t have support for the IC-705. Downloading the IC-705.xml file didn’t help either so I uninstalled it and headed to the source forge website to grab the source code for the latest version of FLRig.

Once I had the right development libraries installed compiling the code was easy enough and I soon had FLRig talking to the IC-705 via WFview wirelessly from my Kubuntu PC.

My first JS8 QSO was with Jonny, SM5COI in Sweden on the 20m band, using just 2.5w I had a very reliable link from my 20m band EFHW vertical antenna to his 20m band yagi antenna.

I also worked GM0DHD/P via OH8XAT using the relay capability built into JS8CALL, it works incredibly well and allows you to work the stations that you cannot hear directly, very useful!

Later in the morning Jonny, SM5COI emailed me asking for a sked on the 40m band later in the afternoon, of course I agreed and decided that I’d also get my MacBook Pro setup with JS8CALL so I could give my Yaesu FTDX10 a spin on JS8 mode.

Installing and configuring JS8CALL on my MacBook Pro was much easier and I had it fully operational in minutes.

The sked went well on 40m and it was good to get Jonny on another band.

With 3 JS8 QSOs in the log it’s great to be using a digital mode again that allows you to have a good chat with other radio HAMs around the world. I think this may become my preferred digital mode going forward.

More soon…