The 5 things that have revolutionised my Radio Shack

The articles I write for the blog are mostly technical but, I thought it was about time that I wrote this article as it’s been buzzing around inside my head for some time now.

So, what are the 5 things that I have found revolutionary in my shack that have brought new, exciting ideas and projects to life making amateur radio more enjoyable.

1: A RaspberryPi Single Board Computer

RaspberryPi 5 Single Board Computer
RaspberryPi 5 Single Board Computer

Ever since the first RaspberryPi Single Board Computer (SBC) was released I’ve been a huge fan. This little credit card sized number cruncher has been the base for so many projects, it has to be the first on my list.

The RaspberryPi SBC has been through a few iterations since its initial conception and is now powerful enough to take on most tasks that any radio HAM is going to throw at it.

So, what have I done with them?

Well I’ve used them to run Node-Red services for my many web app dashboards that control things like my QO-100 Satellite Ground Station, UPS power monitoring, Internet speed graphs, server and virtual machine monitoring, AllStarLink nodes, hosting websites, building an SDR shortwave receiver, running HAM Clock / Open HAM Clock, developing my own software, hosting virtual machines and a whole host of other fun and interesting things. I’m even writing this article using my RaspberryPi 500+ computer that is my daily desktop PC.

There are an endless number of things you can do with a RaspberryPi to bring new life and functionality to your radio hobby.

Want to get into Amateur TV?
Want to decode digital modes real time?
Want to track aircraft in the sky real time on a virtual radar screen?
Want to search the shortwave bands for stations of interest?
Want to host your own blog and website?

All these things and a lot more are easily within reach with a RaspberryPi.

The RaspberryPi is only limited by your imagination, the more imaginative you are the more your number crunching little friend will do.

2: A 3D Printer

Bambu Lab A1 Combo 3D Printer
Bambu Lab A1 Combo 3D Printer

Every HAM should have a 3D printer. These manufacturing marvels bring a new level of quality, design and simplicity to your HAM radio projects. I’ve found it incredibly useful since venturing into the rabbit hole that is 3D printing. When I think back to the weeks and months of my life I’ve spent making cabinets and boxes out of sheet metal, aluminium or wood for the numerous projects I’ve built over the years, a 3D printer would had made my life so much easier. 3D printing has revolutionised the making of things for the Amateur Radio home brewer.

There’s a multitude of useful things on websites like Printables, Thingiverse , Makerworld and others where you can just download the files and print high quality designs for all those things you’ve wanted to do but, don’t have the time or inclination to craft by hand.

The real satisfaction with 3D printing comes from designing your own things and making them. My first project was to design and print a fan cooling system for my Xiegu XPA125B amplifier.

From the factory the amp is passively cooled and doesn’t take long for the heat-sink to become saturated resulting in a high operating temperature. I was never happy with this and so was determined to resolve the problem.

Getting to grips with TinkerCAD was a bit of a vertical learning curve but, after a few mistakes and design mishaps I soon had it under my belt and pressed on with designing the cooler unit.

Designing the Xiegu XPA125b cooling system using tinkerCAD.
Designing the Xiegu XPA125b cooling system using tinkerCAD.

It’s not until you start designing and manufacturing things that you suddenly realise how much effort goes into them but, I persevered and over the period of about a week or so I had a perfectly fitting, operational cooling system that kept the amp super cool regardless of how long I waffled on for on the HF bands.

Once you’ve got your first design made you suddenly find yourself wanting to improve it and add things. In my case this was adding a Hermes Lite 2 holder to the top of the amp cooler and then a top shelf to hold my cross needle SWR and power meter.

Since then I’ve progressed massively with my designs and have even designed and printed things for other HAMs and family members, it’s totally addictive!

I can highly recommend the Bambu Lab A1 Combo (As shown above). It’s a quality piece of equipment that has operated faultlessly since purchase. Right now it’s printing a case for my RaspberryPi 4, just one of the many projects I’ve used it for since becoming a happy owner.

RaspberryPi 4 case from printables.com
RaspberryPi 4 case from printables.com

Go on, release your inner creativity and treat yourself to a 3D printer, you won’t regret it and it’ll help you bring to life all of those radio projects you’ve dreamt of doing but, never got round to starting.

3: An AllStarLink Node

M0AW AllStarLink Node 61928 sitting on the equipment rack
M0AW AllStarLink Node 61928 sitting on the equipment rack

Many people say that using VOIP over the internet isn’t real radio, I know because I used to be one of those people however, it has become an invaluable resource for keeping in touch with people all over the world.

Being part of an online HAM Radio Community it’s important that as a group we are able to talk to each other regardless of where we live, what bands we have access to and whether there is any propagation.

The AllStarLink (ASL) network gives global FM quality audio no matter where you are in the world. We use it daily for our breakfast net, general chatter throughout the day and even hold a weekly Matrix ASL Net on a Thursday evening.

Using our VHF/UHF handhelds (Real Radios!) and an easy to make AllStarLink Node we’re able to join in with the conversation regardless of propagation, licence type or distance, it really is great for bringing people together.

With devices like the SHARI and AIOC board now being readily available for minimal cost it really is very easy to get onto the AllStarLink network and talk to people even if you live in an antenna restricted location.

Why be alone when you can use the Matrix ASL node ( 642332 ) and join in the conversation.

4: Node-Red

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

Node-Red is a low-code programming tool for event-driven applications.

Node-RED’s goal is to enable anyone to build applications that collect, transform and visualise their data; building flows that can automate their world. Its low-code nature makes it accessible to users of any background, whether for home automation, industrial control systems or anything in between.

I’ve been using Node-Red for a number of years now and have developed a suite of web app’s that control and monitor just about every aspect of my Amateur Radio hobby and IT infrastructure.

Node-Red forms an integral part of my QO-100 Satellite Ground Station providing control of both the uplink and down link radios whilst synchronising the VFO’s, controlling filter selection and more, all from one simple to use interface using nothing more than a web browser.

It doesn’t stop there, my AllStarLink (ASL) nodes are also managed through a user friendly Node-Red Dashboard that removes all the need for technical know how and makes ASL node management as simple as clicking on a button to connect or disconnect to the many global networks.

Much of this functionality is achieved without writing a single line of code. If you can use a mouse, drag and drop objects on the screen you can develop Node-Red web app’s, it really is that easy.

M0AWS Interactive Log Flow
M0AWS Interactive Log Flow

It doesn’t end there, Node-Red is great for presenting data in easy to digest formats.

Whether it be HAM Radio Log data presented on an interactive world map or monitoring of your server, RaspberryPi, virtual machine or UPS using gauges and graphs, this can all be achieved easily with nothing more than a mouse. There’s no need to spend hours writing thousands of lines of code, just drag and drop a few nodes onto the screen and join them up. You’ll be amazed how easy it is.

I believe every Amateur Radio enthusiast should have Node-Red available in their radio shack. It’s easy to install on your RaspberryPi 4 or 5, Linux or Windows PC and Apple Mac with the same great functionality available on all platforms.

Once you’ve developed your first web app you’ll suddenly find a million more ideas will come into your head and before you know it, you’ll be where I am today with Node-Red at the centre of your radio hobby.

5: A Hermes Lite 2 HF SDR Transceiver

For years I used black box HF radios from the big 3 manufacturers along with the odd radio from the smaller enterprises like TenTec but, they all had their foibles and there was often nothing I could do about it.

My last acquisition from the big 3 was a Yaesu FTDX10, a competent hybrid SDR radio with a good receiver however, the menu system is terrible, the button layout not much better and the user experience not as good as it could be. Of course the software is closed source so there is nothing you can do about it. The radio did its job but, it wasn’t fun to use, it wasn’t what I really wanted and it didn’t put a smile on my face.

I looked at moving to software defined radios (SDR) but, with prices in the many thousands of pounds bracket and the software being closed source I came to the conclusion that they wouldn’t give me what I really wanted either.

So what was it that I was searching for?

Thinking long and hard about it I came to the conclusion that what I really wanted was a radio that gave me the same satisfaction that OpenSource software has given me for decades, namely an HF radio that I have complete control over, from the hardware through to the software and everything in between.

I wanted something that I could tailor to my exact needs. Something that was built using open hardware and open software, something where if I wasn’t happy with it I could change it, improve it and do the things I wanted with it.

At this point my search for the ideal radio headed in a completely different direction.

Xiegu XPA125b Cooler with Hermes Lite 2 cradle - front view
Xiegu XPA125b Cooler with Hermes Lite 2 cradle – front view

The Hermes Lite 2 SDR HF Transceiver (HL2) has been around for a number of years. I was first introduced to it by Michael, DK1MI and then Roger, G8VLR via the Matrix. Both Michael and Roger use the HL2 on a regular basis and have often waxed lyrical about how good it is.

Being designed by radio amateurs for radio amateurs it’s based on an open architecture from the ground up. Being an OpenSource junky this really appealed to me and as I looked deeper into it from both a hardware and software point of view I soon realised that it had the potential to be exactly what I was looking for.

It wasn’t long before I found myself on the Makerfabs website placing an order for the HL2 mainboard, filter board, I/O board and case. A couple of weeks later it arrived and I dived head first into the SDR rabbit hole.

2 years later and the HL2 has become my main HF radio in the shack. Partnered with a Xiegu XPA125B amplifier and PiHPSDR software running on my Kubuntu Linux PC it is everything I have been looking for in an HF radio.

I’ve made modifications to the software to suit my operating style and needs with the user interface being exactly how I want it, no unnecessary buttons or knobs, just the controls that I use on a daily basis cleanly placed in a logical, easy to use layout, the way I want it.

My understanding of software defined radio and how it works has improved a hundred fold. Having access to the software and being able to go through the code and understand the architecture has been an interesting journey and one that has enhanced my radio enjoyment considerably. I now have a smile on my face every time I go on air.

Do I miss the FTDX10?

No, not in the slightest!

So, those are the 5 things that I feel have revolutionised my radio amateur hobby and made it a more enjoyable experience. I’m sure over time I will add to this list as I venture down future rabbit holes in our wonderful radio hobby.

More soon …

FreeDV audio routing with PiHPSDR and Hermes Lite 2

I’ve recently been trying out the FreeDV RADEv1 digital voice mode on the HF bands with great success. The audio quality is astounding when compared to the normal analog SSB mode. Using only 20w I’ve been surprised how successful I’ve been talking to stations in the UK and Europe as can be seen in my FreeDV Log.

FreeDV has been around for quite a few years with development being funded by an ARDC grant and financial sponsorship from the Software Freedom Conservancy.

So what is FreeDV?

To quote the FreeDV website:

FreeDV is a suite of digital voice modes for HF radio. Our flagship mode is the Radio Autoencoder (RADE). You can run RADE using a free GUI application for Windows, Linux and macOS that allows any SSB radio to be used for high quality digital voice.

And the most important part:

All software is open source, released under the (a) GNU Lesser Public License version 2.1 (GUI and legacy FreeDV modes) and two-clause BSD license (RADE).

FreeDV running under KDE-Plasma on Kubuntu PC
FreeDV running under KDE-Plasma on Kubuntu PC

Looking at the digital voice (DV) community in the HAM Radio world, it’s stuffed full with proprietary DV modes from small software houses and black box transceiver manufacturers with no real OpenSource alternatives, until now.

Installing FreeDV is pretty simple regardless of which operating system (O/S) you use. Being a Linux user I grabbed the AppImage from the website and set about reading up on how it works and how it is configured.

I decided to take the two sound card approach since I have 2 USB sound cards connected to my shack Kubuntu Linux PC.

Configuring the audio routing isn’t straight forward as both the receive and transmit audio to/from the radio needs to be routed via the FreeDV app. To make this even more complicated I am using my Hermes Lite 2 SDR transceiver and PiHPSDR software, a complete OpenSource/OpenHardware Amateur Radio Station.

M0AWS FreeDV and PiHPSDR Audio Routing Diagram
M0AWS FreeDV and PiHPSDR Audio Routing Diagram

Trying to clearly describe the audio routing using words alone would be impossible and very confusing so, I put together the diagram above.

Using two USB sound cards I’ve configured the system such that USB Sound Card 1 (an old Griffin iMic USB sound device) handles just the audio from/to the headphones and microphone. All the audio at this point in the system is analogue.

The second USB sound card, a cheap Plug and Play (PNP) USB audio device from Amazon, handles all the digitised signals from/to FreeDV and PiHPSDR.

Taking this 2 sound card approach keeps confusion to a minimum and separates the analogue and digital components of the audio routing.

So, how does this translate to the FreeDV and PiHPSDR audio settings?

Transmit Audio Chain

FreeDV Transmit Audio Settings

Starting at the beginning of the transmit audio chain, let’s look at the transmit audio settings in FreeDV.

Looking at the FreeDV Transmit audio settings screenshot below we can see that the
Input From Microphone to Computer device is set to:

alsa_input.usb-Griffin_Technology_Inc_iMic_USB_audio_system-00.analog-stereo

This is the microphone connection on the iMic USB device (USB Sound Card 1) and is the analogue transmit audio input to FreeDV.

The Output From Computer to Radio device is set to:

alsa_output.usb-0c76_USB_PnP_Audio_Device-00.analog-stereo

This is the digitised audio output from FreeDV (via USB Sound Card 2) to PiHPSDR and is used as the transmit audio that is sent to the Hermes Lite 2 transceiver.

FreeDV Transmit Audio Settings
FreeDV Transmit Audio Settings

PiHPSDR Transmit Audio Setting

To complete the transmit audio path we next need to look at the PiHPSDR transmit audio setting.

PiHPSDR Transmit Audio Settings
PiHPSDR Transmit Audio Settings

As can be seen in the screenshot above, the Local Microphone device in PiHPSDR is set to the Monitor of USB PnP Audio Device Analogue Stereo.

This effectively routes the digitised output audio from FreeDV (Output From Computer to Radio device) to the Input audio of PiHPSDR.

The reason for using the Monitor audio feed is because FreeDV does not recognise the Mic Input in PiHPSDR as a valid output device for FreeDV to use, hence we just need to monitor the FreeDV output device and use it as our input audio device in PiHPSDR.

This completes the transmit audio chain.

Receive Audio Chain

PiHPSDR Receive Audio Setting

Starting at the beginning of the receive audio chain we first look at the PiHPSDR receive audio setting.

PiHPSDR Receive Audio Setting
PiHPSDR Receive Audio Setting

In the screenshot above we can see that the receive audio output from PiHPSDR is set to
USB PnP Audio Device Analogue Stereo (USB Sound Card2). This is the DX station’s digitised audio as received by the Hermes Lite 2.

FreeDV Receive Audio Settings

Next let’s look at the receive audio setting in FreeDV.

FreeDV Receive Audio Settings
FreeDV Receive Audio Settings

The Input To Computer from Radio device is set to the monitor of the
USB PnP Audio Output Device:

alsa_output_usb_0c76_USB_PnP_Audio_Device-00.analog-stereo.monitor

This effectively routes the digitised audio output from the PiHPSDR receiver to the digitised audio input of FreeDV.

Once again we have to use the monitor of the USB PnP Audio Output device as FreeDV does not recognise the PiHPSDR output as a valid input device.

Next, the Output From Computer To Speaker/Headphones device is set to:

alsa_output.usb-Griffin_Technology_Inc_iMic_USB_audio_system-00.analog-stereo

This is the analogue audio output on the iMic USB Sound card (Sound Card 1) that routes the analogue audio to the headphones and completes the receive audio chain.

Summary

The audio routing required by FreeDV can appear very daunting when first attempting to configure it on the Linux platform but, hopefully the diagram and screenshots above will help in understanding the complete end-to-end audio chain that is required to make this mode work.

PiHPSDR can of course be replaced by your black box radio CODEC entries that will appear in the device lists shown above if you have your radio connected via USB. The config is basically the same but, just uses a different device instead of USB sound card 2 shown in the diagram above.

I hope this article is useful to those wanting to try FreeDV on the Linux platform and I look forward to hearing you on RADEv1.

More soon …

Trialing DeskHPSDR

For sometime I’ve been using PiHPSDR software to drive my Hermes Lite 2 (HL2) SDR transceiver. It’s a great piece of OpenSource software for SDR transceivers and has the best documentation that I have ever seen from an OpenSource project.

I must admit, I’ve had to make a few changes to get the software how I like it but, that’s the great thing about OpenSource software, you get the source code and can do what you like to it.

Following in this thread I recently decided to give DeskHPSDR a try.
DeskHPSDR is a fork of the original PiHPSDR but, with some changes mainly aimed at larger display computers.

After compiling DeskHPSDR on my Kubuntu Linux PC in the radio shack, I found there were a few issues, mainly the colours were hard on the eyes and band/channel markers wrong/missing on a few of bands.

DeskHPSDR default colour scheme on Kubuntu 22.04LTS (KDE-Plasma)
DeskHPSDR default colour scheme on Kubuntu 22.04LTS (KDE-Plasma)

I decided to dive in and take a look at the source code and try and sort out the colour issues as blue writing on dark buttons made them almost impossible to read under a KDE-Plasma desktop.

Delving through the appearance.c and css.c files I found that there were many changes required to get the end result I wanted. The biggest pain is that you have to recompile the source code after each change to see if the code change had worked, this results in many recompiles, a tedious task.

After spending many hours making changes I decided to email Heiko, DL1BZ who is the developer of DeskHPSDR. Over a number of emails we discussed getting the colour management code changed such that it was read in at start time from a separate css file rather than having to be compiled into the main program.

After a few emails back and forth, Heiko changed the code so that a separate CSS file could be read in at start up instead of the hard coded CSS in the C code files, this worked great and made it much easier to make colour changes without constant compilations of the code.

Next I needed to edit the bands.c file to change some of the band edge markers to show the UK band plan as, by default they are incorrect even though I have the region set to UK.

Editing the appearance.c file once more I was able to change the colour of the rather bright green panadapter signal display to a much more pleasing blue fading to red as the signal gets stronger.

One thing I really like about PiHPSDR was the channel markers on the 60m band. Anyone that uses the 60m band will know that the UK allocation is split into 11 different channels separated by spaces used by the primary user of the band. The channel markers make it just that bit easier to ensure you don’t stray out of the allocated channels however, this code had been removed from DeskHPSDR as Heiko didn’t consider it necessary.

Once again I pinged an email over to Heiko explaining how useful it is to UK HAMs and he very kindly put the code back into DeskHPSDR so that the 60m channels are once more clearly visible on the panadapter.

DeskHPSDR modified colour scheme on Kubuntu 22.04LTS (KDE-Plasma)
DeskHPSDR modified colour scheme on Kubuntu 22.04LTS (KDE-Plasma)

Feeling happy with the new colour configuration I decided to test it out on Linuxmint Cinnamon. Sadly the scheme that looked so nice under Kubuntu 22.04LTS didn’t look the same under Linuxmint and so I had to set about coming up with a version of the CSS file for this platform too.

After quite a few hours tinkering with CSS code I found it to be impossible to get the colour scheme on Linuxmint Cinnamon Edition identical to that I’d created under Kubuntu KDE-Plasma so, I settled for a look that was as close as possible.

DeskHPSDR on Linuxmint Cinnamon Edition with colour modifications.
DeskHPSDR on Linuxmint Cinnamon Edition with colour modifications.

Chatting with Steve, M0XVT we thought it would be a good idea to test it on his Kubuntu Linux and Linuxmint PCs. He is using a later version of Kubuntu than I am (24.04LTS) and so, it would be a good test to see if the colour scheme looked the same.

Sadly it turns out that for some bizarre reason the colours come out different in the later version of Kubuntu. This is a real nuisance as it means we’d need a separate colour scheme defining for each version of the O/S. Perhaps using CSS isn’t the best way to define a colour scheme in applications.

For some very strange reason the colours were also rendered differently on his Linuxmint PC even though he was using the same version of the O/S as I am.

DeskHPSDR running on Kubuntu 24.04LTS with colour scheme not rendering correctly
DeskHPSDR running on Kubuntu 24.04LTS with colour scheme not rendering correctly

Another issue was found whilst testing on Steve’s computers which seems to be caused by the fact he uses an Anan 200D SDR.

Looking at the documentation on github in theory DeskHPSDR should support the Anan range of SDR transceivers however, we found that it’s impossible to select the sample rate as the drop down selection list is completely missing from the Radio menu with the radio defaulting to its lowest sample rate of 48k resulting in not being able to see the full spectrum of frequency ranges on the bands.

DeskHPSDR Sample Rate drop down missing when using an Anan SDR
DeskHPSDR Sample Rate drop down missing when using an Anan SDR

The other thing to note is that the Remote Server functionality has also been removed from the code by Heiko as he feels it’s not necessary. This may be a deal breaker for some and so they may choose not to use DeskHPSDR and to continue using PiHPSDR instead.

I will at some point make the O/S specific CSS files and source code available for download for those that want to use DeskHPSDR with my colour scheme changes.

I’m not sure at the moment whether I will continue using DeskHPSDR or go back to PiHPSDR, time will tell.

More soon…

Linux – Wandering USB devices

As I detailed in my QO-100 Satellite Ground Station Complete Build article I use a Griffin Powermate VFO knob to control the receive VFO frequency when in split mode or needing to RIT a DX station to get on frequency with them. Since building the ground station this setup has worked perfectly and without error however, for the last couple of days every time I start my Kubuntu Linux PC the USB VFO knob appears on a different USB event queue.

For the last two years the VFO knob has always appeared on /dev/input/event11 but, after connecting a Pluto+ SDR transceiver to the PC via USB the VFO knob now appears randomly on the /dev/input/events tree. This normally doesn’t cause any problems but, my Node-Red QO-100 Ground Station Control Dashboard expects the device to always be on /dev/input/event11.

Griffin Technology Powermate VFO
Griffin Technology Powermate VFO

Initially I tried to find a way to lock the USB VFO knob to /dev/input/event11 however, there doesn’t appear to be a way to do this as the event tree is built at boot time by udev.

Digging deeper into udev I discovered that it’s possible to create a udev rule that is read at boot time, that will search for the device and then create a symlink to it with the same name each time making the USB VFO Knob appear as if it’s always in the same place. This is exactly what I need so I set about writing the udev rule.

To find out what event the USB VFO knob is currently on I ran evtest on the Linux command-line and got the following output.

No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0:      Sleep Button
/dev/input/event1:      Power Button
/dev/input/event2:      Power Button
/dev/input/event3:      Video Bus
/dev/input/event4:      Telink Wireless Receiver Mouse
/dev/input/event5:      Telink Wireless Receiver Consumer Control
/dev/input/event6:      Telink Wireless Receiver System Control
/dev/input/event7:      Telink Wireless Receiver
/dev/input/event8:      Kensington USB/PS2 Orbit
/dev/input/event9:      PixArt USB Optical Mouse
/dev/input/event10:     USB PnP Audio Device
/dev/input/event11:     HDA Intel PCH Front Mic
/dev/input/event12:     HDA Intel PCH Rear Mic
/dev/input/event13:     HDA Intel PCH Line
/dev/input/event14:     HDA Intel PCH Line Out Front
/dev/input/event15:     HDA Intel PCH Line Out Surround
/dev/input/event16:     HDA Intel PCH Line Out CLFE
/dev/input/event17:     HDA Intel PCH Line Out Side
/dev/input/event18:     HDA Intel PCH Front Headphone
/dev/input/event19:     HDA Intel PCH HDMI/DP,pcm=3
/dev/input/event20:     HDA Intel PCH HDMI/DP,pcm=7
/dev/input/event21:     HDA Intel PCH HDMI/DP,pcm=8
/dev/input/event22:     HDA Intel PCH HDMI/DP,pcm=9
/dev/input/event23:     HDA Intel PCH HDMI/DP,pcm=10
/dev/input/event24:     Griffin PowerMate
/dev/input/event25:     Realtek RTL2832U reference design

This shows that currently the Griffin Powermate VFO knob is on event 24.

Having this information I now needed to use the udevadm command to obtain the Vendor and Product ID of the USB VFO knob.

udevadm info -a /dev/input/event24

This returns a lot of information about the USB device, more than I was expecting but, upon close inspection I found the Vendor and Product IDs.

ATTRS{id/product}=="0410"
ATTRS{id/vendor}=="077d"

Now that I have the Vendor and Product IDs I could start writing the udev rule.

Using the vi text editor on the command-line I created the necessary file in the
/etc/udev/rules.d/ directory.rule

vi /etc/udev/rules.d/90-powermate.rules

Into the file I wrote the following udev rule.

SUBSYSTEMS=="input", ATTRS{id/product}=="0410", ATTRS{id/vendor}=="077d", SYMLINK += "powermate"

Note: That should all be on one line in the file not wrapped as shown above.

This one line rule sets the subsystem to input events, sets the Product and Vendor IDs to that of the Griffin Powermate USB VFO knob and then creates the symlink /dev/powermate

Once I’d completed the rule, I saved the file and exited the vi text editor.

Next I needed to use udevadm to get it to re-read the udev rules as if it were boot time and check that it created the symlink.

udevadm control -R

Once the udevadm command completed I used the ls command to see if the symlink had been created.

ls -la /dev/powermate
lrwxrwxrwx 1 root root 13 Jul  3 15:32 /dev/powermate -> input/event24

As shown above the symlink had been created and I could now enter
/dev/powermate into my Node-Red code so that it always finds the VFO knob regardless of what event number it appears on.

Just to make sure it worked correctly at boot time, I shutdown my Kubuntu linux PC and started it from a cold boot. Sure enough the
/dev/powermate symlink was created and pointed to the new event number in the /dev/input tree, problem solved!

I hope this information is useful to Linux users especially as it can be used for any USB input device.

It’s worth noting that you will need to be root user to run most of the commands or use sudo from your regular user account.

More soon ….

Updates to my install-pihpsdr.sh script

Over the last few weeks I’ve been working on my install-pihpsdr script to build a version of the DL1YCF PiHPSDR fork that will work with the Adalm Pluo, Pluto+ and LibreSDR transceivers.

Since I don’t own any of these devices, Steve M0XVT has loaned me his Adalm Pluto and LibreSDR devices to test with.

Initially neither of the devices would work with the PiHPSDR build that my script was creating. After some investigation I found this was due to the fact that the developer build script was only building the SOAPYSDR library, it wasn’t building the modules for each device type.

This was easily fixed by adding some extra code that would build the necessary SOAPYSDR modules so that the devices were discovered on the local LAN.

Since I had the devices to hand I took the opportunity to test the updated build script on a number of Linux Distro’s that I have to hand.

PiHPSDR running on Linuxmint 22.1 Cinnamon Edition using the LibreSDR transceiver
PiHPSDR running on Linuxmint 22.1 Cinnamon Edition using the LibreSDR transceiver

I tested the updated build script on Kubuntu 22.04LTS, Linuxmint 22.1 Cinnamon Edition and RaspberryPi 4/5 running the latest RaspberryPi OS 64bit version.

These all worked great with the transceivers and will now make a great platform for QO-100 stations that use either the Adalm Pluto, Pluto+ or LibreSDR devices.

Of course this build of PiHPSDR will also work with the Hermes Lite 2 and RadioBerry devices that I use most of the time in my own radio shack.

The updated PiHPSDR install script can be downloaded from my original blog article on the subject that is located here: https://m0aws.co.uk/?p=3686

The updated build script will most likely work on most Debian based Linux distro’s and build a working version of PiHPSDR. If you find a distro where you have problems please email me and let me know the details and I’ll happily look at the issue and try to resolve it.

Thanks to Steve for the loan of his precious SDR transceivers, I had a lot of fun with them!

More soon …

Hermes Lite 2 and Xiegu XPA125B Auto Band Switching

Since I’ve had my Hermes Lite 2 (HL2) and Xiegu XPA125B amplifier combo I’ve had to manually change the band setting on the amp as I never purchased the HL2 I/O board when I initially purchased the kit.

At the time I didn’t think I would need it but, changing band manually on the amp (and sometimes forgetting causing tuning issues) is a nuisance and so I put my hand in my pocket once again and ordered the I/O board for the HL2.

Hermes Lite 2 I/O Board
Hermes Lite 2 I/O Board

The HL2 I/O board is a small RaspberryPi Pico controlled device that can be used for a multitude of functions depending on the software loaded. Many people are writing their own software for the Pico to do things like control transverters, remote antenna switches, amplifiers and just about anything else you can think of. It’s a really versatile little add on board for the HL2.

The I/O board arrived after about 10 days from Makerfabs, all nicely packaged as always. Unfortunately due to Christmas, New year and other priorities it’s sat in the box since it arrived.

A couple of days ago I finally got round to getting it out of the box and set about configuring it to control the Xiegu amp.

The Xiegu amp needs three connections from the I/O board. They are PTT, Band Switching Voltage and Ground. These are easily accessed from the I/O board via 3 jumper wires to connect to the DB9 connector on the rear of the board.

The other thing that is required is some software for the RaspberryPi Pico to control the whole process. Steve, M0XVT has kindly supplied me with a copy of the software.

Soldering the jumpers from the relevant points on the circuit board to the DB9 connector was pretty straight forward. You can use any of the pins on the DB9 connector that you like as from the factory the DB9 connector isn’t connected to anything. I decided to use pins 2, 6 and 8 and so will refer to those pins from this point forward.

HL2 I/O Board Jumpers
HL2 I/O Board Jumpers

I used a different colour for each of the jumpers so that I knew which jumper was for which connection. The colours used also match the colours of the wire in the old RS232 serial lead that I cannibalized to make the connection between the I/O board and the amp thus making it easy to ensure continuity.

The colours are as follows:

Black Jumper - Ground - Pin 2 on DB9 Connector
White Jumper - PTT - Pin 6 on DB9 Connector
Red Jumper   - Band Control - Pin 8 on DB9 Connector

The I/O board gets its power feed directly from the HL2 main board however, the 3 pins it needs to connect to don’t have any headers in place and so, it’s necessary to solder a short row of 3 header pins onto the HL2 main board.

I found the easiest way to do this was to put the 3 header pins into the correct position and then use the HL2 to N2ADR filter board connector to hold them in place whilst soldering. This worked perfectly and I soon had the header pins soldered onto the main board.

Extra 3 header pins soldered to the main HL2 board
Extra 3 header pins soldered to the main HL2 board

It’s important to note that the 3 extra header pins need to be placed 2 holes away from existing header pins as shown above. Take care to get these pins in the right position so as not to cause any damage to the 3 circuit boards once all are connected and powered up.

Note: The HL2 main board must be removed from the case to solder the extra 3 header pins in place. Take care to ensure the correct fitting of the PA heatsink when when refitting the HL2 main board into the case.

At this point I refitted the N2ADR Filter board back into the HL2 case so that the two sets of header pins aligned correctly ready for the placement of the new I/O board that would connect all 3 circuit boards together.

Preparing the N2ADR Filter board for reconnection
Preparing the N2ADR Filter board for reconnection

Once the filter board was in place I fitted the new I/O board taking care to ensure all pins aligned with the socket and then gently pushed it home.

Close up of the HL2 I/O board fitted to the main HL2 board and N2ADR Filter board
Close up of the HL2 I/O board fitted to the main HL2 board and N2ADR Filter board

The close up of the I/O board connector above shows how the extra 3 header pins connect to the last 3 sockets in the I/O board connector. It’s a snug fit with the N2ADR filter board below it.

View of the fitted HL2 I/O board from above
View of the fitted HL2 I/O board from above

Before the HL2 case can be put back together it’s necessary to load the software onto the RaspberryPi Pico (top left in photo above) that controls the I/O board.

This is accomplished by pressing the tiny button on the Pico whilst connecting a USB lead to the USB socket on the board that had already been plugged into my PC. Once connected the Pico appeared as a USB drive on my Kubuntu Linux desktop. All I then had to do was to copy the software file onto the drive. Once the software file is on the drive the Pico will reboot automatically and the little LED on the board will start to flash to show it has booted successfully. At this point I could safely unplug the USB cable.

The software for the RaspberryPi Pico is available for download below.


The I/O board comes with a new back panel for the HL2 to accommodate the extra connectors on the rear. Refit the top of the HL2 case and then attach the new rear panel using the original 4 counter sunk screws.

Supplied HL2 I/O board replacement rear panel fitted to the HL2 case
Supplied HL2 I/O board replacement rear panel fitted to the case

The final part of this project is to make the lead that will go from the HL2 rear DB9 ACC connector to the Xiegu XPA125B mini din ACC socket.

For this you will need a 6 pin mini din plug (AKA PS2 plug), (these are readily available on Amazon) and an old fashioned DB9 female connector from the days of RS232 serial leads..

The connections are as follows:

DB9 Pin 2 (BLACK) to Mini Din Pin 6 (GND)
DB9 Pin 6 (WHITE) to mini Din Pin 2 (PTT)
DB9 Pin 8 (RED) to Mini Din Pin 3 (Band Switching Voltage)

Below are a couple of screenshots from the Xiegu XPA125B user manual showing the Mini Din pin layout and the data interface connections for the amplifier.

Xiegu XPA125B Amplifier ACC Interface Connections
Xiegu XPA125B Amplifier ACC Interface Connections
Xiegu XPA125B Amplifier ACC Connector Pin Information
Xiegu XPA125B Amplifier ACC Connector Pin Information

Before I connected the lead to the two devices, I tested the end-to-end continuity of the lead to ensure all pins were correctly connected and that there were no shorts between any of the pins.

It’s important that the wires are connected to the correct pins on each end of the lead. Failure to ensure correct connection could cause damage to your HL2 and/or amplifier.

Once the lead had been tested, I connected it to both the Hermes Lite 2 and the Xiegu XPA125B amplifier. I also had to switch the amplifier band switching to AUTO.

Now when I change band on my HL2 in the PiHPSDR software the amplifier also changes band at the same time keeping the two devices in sync. No more manual band changing for me!

I hope this article is of use to other Hermes Lite 2 users who have purchased the Xiegu XPA125B but, have yet to setup auto band switching between the two devices.

Thanks to Steve, M0XVT for all the jumper information and the RaspberryPi Pico Software to get this all working.

UPDATE:
The RaspberryPi Pico software originally came from Ramon, KP4RX. More information can found in this Google Groups article where he released the binary into the wild.

A full table of I/O resources available on the HL2 I/O board can be found on the KP4RX Guthub page.

The source code for the main.uf2 file above can be found at KP4RX.com

More soon …

Building a new Desktop Environment for the RaspberryPi 5

Regular readers of my blog will already know that I am a huge fan of the Linux operating system, it’s clearly evident in most of the content on this website.

I am also a very enthusiastic user of one of the first credit card sized computers that came to be, namely the RaspberryPi. I own all the iterations of this wonderful little computer from the very first version to the latest and greatest, RaspberryPi 5.

This little computer has done more for computing in education than Microsoft and Apple will ever achieve and it’s done it at an incredibly low price making it more accessible to schools, colleges and students than any other platform.

The RaspberryPi has what most consider to be the best support on the planet when it comes to single board computers (SBCs). From the dedicated team that build Raspberry Pi OS, to all the amazing projects and forums that are available, for free on the internet today.

The RaspberryPi computer really has revolutionised computing for the masses.

My RaspberryPi 5 that I am writing this article on
My RaspberryPi 5 that I am using to write this article.

Raspberry Pi OS really is very good. It’s based on the great Debian distro’ that many of us seasoned Linux users dearly love. It’s light weight, fast and meets the needs of everyone that is venturing into the exciting world of Linux and SBCs for the first time.

Overtime as we all become more experienced with Linux on the RaspberryPi we become more demanding and start to find the Raspberry Pi OS desktop environment lacking. Sure it can be enhanced by adding more and more to it however, it never quite reaches the point of satisfaction and we are always wishing for something more.

With the Pi-5, the latest iteration of this great credit card sized computer, users are now able to seriously think about building a more powerful desktop environment for their little berry flavoured computers.

On my desktop PCs dotted around the house I have used Kubuntu for decades. It’s a slick and powerful desktop environment that has met my needs for many years and I love it more than any other Linux desktop. Sadly Kubuntu isn’t easily available out the box for the RaspberryPi and so I decided that it was time to replicate it as closely as possible on my new, super powerful RaspberryPi 5.

When I ordered my RaspberryPi 5 from Pimoroni I added the NVMe base and 250GB M.2 SSD drive to the order. Up until now I’d always used SD cards however, they are slow and unreliable and so I decided that since the Pi-5 has PCIe it was time to take the step away from SD cards and start using SSD technology.

Getting the OS onto the SSD is a two stage affair. First you have to create a bootable SD card to boot the Pi-5 from and then use it via the RaspberryPi Imager to install the OS onto the SSD. It’s a bit long winded but, easy enough.

Since I’m a huge Kubuntu fan I decided my desktop of choice for my new Pi-5 was going to be KDE-Plasma. I had tried to install this desktop before on older model Pi’s however, it ran so slow that it was unusable. With the new Pi-5’s increased computing power and the speed of the SSD I was confident that this was now possible.

I started out installing the Lite version of Raspberry Pi OS on the SSD. This is a command line only version of Linux that doesn’t include any desktop environment, a nice clean slate to start from.

RaspberryPi Imager showing Pi OS Liite (64bit)
RaspberryPi Imager showing Pi OS Lite (64bit)

Once the Lite version of the OS was installed on the SSD I shutdown the Pi-5 and removed the SD card and then powered the Pi-5 back up again so that it booted from the SSD.

Upon booting I was presented with the simple Linux Login prompt. After entering my username and password as setup during OS install I landed at the Linux command prompt.

sudo su -

I used sudo to become root user as shown above and then set about building my new KDE based super computer. First I needed to update the operating system with all the latest patches and security fixes.

apt update && apt dist-upgrade

The update and upgrade process ran for a while but, it was soon complete.

reboot

I issued the reboot command and then logged back in again, I was now ready to start building the KDE desktop environment.

sudo su -
apt install kde-plasma-desktop gldriver-test

Becoming root again I type the command to install the KDE-Plasma desktop and the graphics-related config services. There’s a lot of packages to download and install so, I left it to do its thing.

A little while later all the packages were installed and ready to go. I now needed to tell the system to boot into the new graphical user interface instead of the command prompt using systemctl.

systemctl set-default graphical.target

Once this was done I needed to make a change to the display settings using the raspi-config program.

raspi-config

Selecting No.2 on the menu, Display Options and then D2 Screen Blanking, I disabled screen blanking so that I got the full 4K support for my KDE Desktop.

Once the system had been configured for a graphical user interface there was only one thing left to do and that was to shutdown the RaspberryPi.

shutdown -h now
The beautiful KDE-Plasma Desktop on RaspberryPi 5
The beautiful KDE-Plasma Desktop on RaspberryPi 5

Powering the Pi-5 back up again I was greeted by the standard KDE Plasma login screen and then, after logging in I was transported to the beautiful KDE desktop. I was now smiling like a Cheshire cat!

The KDE desktop is incredibly snappy on the Pi-5 with an SSD, app’s open instantly and run with minimum CPU exertion. It was now time to load the rest of the KDE application suite to complete the build. Popping open a terminal I hit the command line once more.

sudo su -
apt install kde-full vim yakuake vlc firefox rsyslog

This loads the full set of KDE applications adding just about everything you’ll ever need to the desktop environment. It’s about 1GB of packages and so depending on your internet speed it could take a while but, it’s well worth the wait.

Once complete you are ready to go with a fully functional, snappy, powerful desktop.

I’m extremely pleased with the performance of the Pi-5. KDE is super fast, snappy and responsive. With 8GB of RAM on tap the RaspberryPi has no problem with performance. The Pi-5 and KDE-Plasma really do make a great desktop computer at an incredible cheap price.

Looking for a new computer?

Add a cheap USB sound card and a pair of speakers and this little setup will meet the needs of 90% of the population with ease and go on to satisfy the more seasoned, demanding Linux user or programmer without breaking the bank.

More soon …

Using the DL1YCF version of PiHPSDR with the RadioBerry

(This information is also for the Hermes Lite 2, Adalm Pluto, Pluto+ and LibreSDR)

During my RadioBerry build I started out using the version of PiHPSDR that was created just for the RadioBerry. The problem with this is that it is hard coded for a very small screen making it hard to use on a big screen since the user cannot resize the window dynamically.

I decided to look for a forked version of the PiHPSDR software that had the ability to change the window size to suit all use cases. During my search I stumbled across the DL1YCF fork of the source code that has some enhancements, one of which is the ability to change the display size.

In no time at all I had the source code downloaded and compiled only to find that it didn’t work with the RadioBerry. After some investigation I found that this was due to the fact that the RadioBerry software has compiled into it code that is used to access the GPIO pins on the RaspberryPi so that it can communicate with the RadioBerry HAT. This is fine except that the DL1YCF version of PiHPSDR also has code in it to use the GPIO pins. This of course causes a conflict and the net result is that nothing works.

Reading through the source code and Makefile I found that all I needed to do was to compile a version of PiHPSDR without GPIO support. This would then remove the conflict and allow the RadioBerry software to operate correctly.

To this end I put together a download/compile/install script for the DL1YCF version of PiHPSDR that will work on a RaspberryPi with a RadioBerry HAT and give the ability to resize the window to fit any size screen.

The script also works on a Linux Desktop PC running Ubuntu/Kubuntu/Linuxmint/Debian operating systems. (It will most likely work on other distro’s too but, these are all I have to hand currently). You can of course also use this software with a Hermes Lite 2 transceiver.

DL1YCF PiHPSDR running on RaspberryPi 4 with RadioBerry HAT on a large monitor
DL1YCF PiHPSDR running on RaspberryPi 4 with RadioBerry HAT on a large monitor

To install this enhanced version of PiHPSDR on your RaspberryPi/Desktop PC with GPIO support disabled, download the installation script below, unzip it and run it in a terminal on your RaspberryPi/Desktop PC in your home directory. (/home/<your-username>).

The script will download the latest source code from the DL1YCF github, disable the GPIO code and then compile and install it to your computer. If installing on a RaspberryPi it will create an icon on the desktop for you to use to start the software.

If installing on a PC then you will need to create your own desktop icon as the one created only works on a RaspberryPi. You can of course just start the software from the command line in a terminal. (My preferred method).

If you have a RaspberryPi 5 then I highly recommend that you run this version of PiHPSDR on it as it has a lot more computing power and handles using dual receive with ease. It will run on a Pi4 but, you will load the CPU more as it’s not as powerful as the later model Pi5.

The script will ask if you want to compile in SOAPYSDR support so that PiHPSDR will work with RTL-SDR, Adalm-Pluto, Pluto+ and LibreSDR. Enter Y to compile in support or N if you don’t need it.


I hope this proves useful to all the RadioBerry, Hermes Lite 2 and Pluto users out there who want to use PiHPSDR on a big screen.

More soon …

Another new radio!

Many years ago when I lived in France I had a Flex-3000 transceiver, one of the first fully SDR transceivers on the market. It was paired with a proprietary Windows XP application called PowerSDR (now Opensource and called Thetis) and connected via a firewire connection.

17 years later I am once again venturing into the world of SDR transceivers in the form of a Hermes Lite 2. (HL2)

The HL2 hardware is available via the Makerfabs website in kit form. I ordered the HL2 motherboard, the N2ADR Filter Board to ensure a clean signal from the transceiver and the enclosure. Total cost for all the parts and shipping was £288.00 including all taxes.

The kit took about 10 or so days to arrive and was very easy to put together making sure to fit the PA transistor heat sink the right way round so that it doesn’t short out the main board. (There are many videos about this on YouTube)

Once the hardware was put together I needed to install some software to control/drive the HL2. Being a heavy weight Linux user my software choice had to come from the Opensource world.

M0AWS Hermes Lite 2 SDR Trasnceiver and Xiegu XPA125B Amplifier
M0AWS Hermes Lite 2 SDR Trasnceiver and Xiegu XPA125B Amplifier

After much research and chatting with other HAMs on the Matrix who have the HL2 I found that most people use the closed source SDR Console software to control the transceiver. Since this software is for Windows it’s not something I can use as I don’t have any Windows PCs, they’re all Linux only.

To this end I started researching Linux SDR software for the HL2 and decided that PiHPSDR was the one I was going to try first.

PiHPSDR was originally written for the RaspberryPi 3/4/5 single board computers (SBCs) but, I wanted to have a go at compiling it on my Kubunu Linux desktop PC. I found it straight forward to follow the instructions in the pihpsdr-install.pdf file and in no time at all I had the software compiled and running.

PiHPSDT running on Kubuntu Linux 22.04LTS
PiHPSDR running on Kubuntu Linux 22.04LTS

PiHPSDR is infinitely configurable and thus it feels like it has an infinite number of menus and options. Since the HL2 has two separate receivers, it’s possible to listen to two bands at the same time. This is the one feature I really missed more than anything with my FTDX10 so, I’m glad to have dual receive capability back once more!

Going through all the settings I realised that the A and B VFOs have individual settings. Initially I setup the software using just VFO A but, when I switched over to VFO B none of my settings were there. I then had the realisation that the settings apply only to the active VFO. I quickly went through all the settings again for VFO B and all was well.

In no time at all I was on the air with just 5w as my Xiegu amp hadn’t arrived. Not being perturbed I tuned up on the 15m band and started searching for stations. Interestingly it was CQWW SSB weekend and the band was full of contest stations. Working my way along the spectrum I found I was able to work quite a few stations with ease using my vertical and inverted-L antennas.

Contacts of note were VE3KG at 3406 Miles, VE3JM at 3382 Miles, RW9DX at 2380 Miles, KC1XX at 3331 Miles and N1DE at 3600 Miles. I also worked a bunch of European stations and had a great time giving away points with my little QRP rig.

Contests are a good time to try out new radios as all the big stations with good ears are on the bands and make the effort to get us QRP guys in their logs.

I have been extremely impressed with the receivers in the HL2 radio. It handles both strong and weak stations exceptionally well. PiHPSDR really does have brick-wall filtering and I was able to work the weaker stations right next to large contest stations with ease. At no time did the front-end of the receiver get overloaded.

Below is a short video clip of a conversation on the 80m band. The band was quite noisy however, with a reduction of the AGC gain and the 2700Hz filter it’s possible to remove almost all the noise.

Hermes Lite 2 SSB reception on the 80m Band

On CW the radio is a real delight. With the filtering and AGC gain control I am able to use extremely narrow receive filters without any ringing whatsoever. I would say that on CW the HL2 is as good as my FTDX10 when it comes to receiving even the weakest of stations.

I’m sure on paper the FTDX10 receiver has better numbers however, to the ear there really is no discernible difference.

Below is a short video clip of D4DX on CW on the 80m band. The band was noisy but, with the 100Hz filter enabled and clever use of the AGC Gain I was able to remove almost all the noise completely, reducing fatigue on the ears and making reception very easy even though there was some fairly deep QSB at times.

Receiving D4DX on CW on the 80m band using 100Hz filter and reduced AGC gain

A few days later my Xiegu XPA125B amplifier arrived. Unfortunately the amp didn’t come with the normal PTT lead that comes from the factory and is detailed in the user manual. For some bizarre reason this is a chargeable option when you buy the amp from Martin Lynch and Sons even though it is included from the factory.

This meant I had to make a lead which was a problem as I didn’t have one of the mini DIN plugs required for the connection to the amplifier. Jumping onto Amazon I ordered a packet of two and sat back and waited for their arrival.

A couple of days later the DIN plugs arrived and I quickly made up the necessary phono/RCA to mini DIN lead and got the amp operational.

The Xiegu XPA125B isn’t cheap but, it’s a really nice bit of kit. The neat little LCD display keeps you informed of power O/P, I/P and O/P SWR, voltage, current draw, temperature and band selected.

With just 0.7w of input from the HL2 I’m able to get a full 100w O/P from the amp. On the lower bands I have to reduce the O/P from the Hermes Lite 2 even further so that I don’t over drive the amp.

Being an avid Short Wave Listener (SWL) I wanted to see how the HL2 performed when listening to the big AM broadcast stations. To my surprise it makes an excellent SWL receiver with better AM demodulation than many of the more expensive radios. Having the option to select receive filters up to 16Khz wide I found I was able to get the best audio possible from many of the broadcast stations including Radio Caroline on 648Khz. It’s quite an improvement over the 12Khz maximum on the FTDX10.

Listening to AM Broadcast stations

What makes this project even more exciting is that both the hardware and software are from the OpenHardware/OpenSource world. The complete circuit diagram, PCB layout and information is available for all to download, something you don’t often see these days!

PiHPSDR is one of the nicest SDR applications I’ve seen in the Linux world and even comes with a 200 page downloadable user manual. Something you don’t see in many Opensource projects. The source code for the application is downloadable and you are able to make your own changes to it without restriction.

Overall I am really pleased with the Hermes Lite 2 SDR transceiver.
It has two excellent receivers, is infinitely configurable via the PiHPSDR software and performs extremely well under all conditions. Since getting the radio I haven’t even switched on the FTDX10.

More soon …

AllStarLink Control Dashboard

Ever since I built my RaspberryPi/SHARI AllStarLink node I’ve had to manage connecting/disconnecting to/from other nodes using the Allmon2 or Supermon web admin interfaces. These work fairly well albeit, a bit clunky and buggy. It’s impossible to use from a mobile device though and so I have to get my Macbook out each time I want to connect/disconnect nodes.

Being a Node-RED fanatic I decided that I should put something together that was more portable, mobile friendly and much easier to use. A simple user interface is all that is required and can be achieved very easily using the standard Node-RED dashboard nodes.

Initially I started investigating the Linux command-line interface for Asterisk, the VOIP system that underpins AllStarLink (ASL). I very quickly discovered that the ASL node can be very easily controlled directly from the command-line and that this would be an ideal interface to use to enable node management via a Node-RED dashboard.

In very little time at all I had an experimental control dashboard working with the ASL node and was able to connect/disconnect to/from a single node. All that was required now was to extend this so that I could connect to a number of nodes with nothing more than a push of a button.

AllStarLink Control Dashboard - Node-RED Flow
Completed v1.0 AllStarLink Control Dashboard – Node-RED Flow

The resultant flow consists of 3 sections, Connect/Disconnect Main Flow, Manage Node Subflow and /var/log/asterisk/connectlog Subflow.

The Connect/Disconnect Main Flow handles all the input from the buttons on the dashboard and the communication to the underlying Asterisk VOIP system.

The button status is denoted by 3 colours, green (Ready to connect), orange (Transitioning to/from connect) and red (Connected). Each button is updated automatically by the button refresh function that is triggered every 2 seconds.

The Manage Node Subflow provides a simple interface to restart the Asterisk VOIP system, reboot the RaspberryPi and shutdown the RaspberryPi. The node status is automatically updated every 45 seconds and will show when the Asterisk subsystem is being restarted or the node is being rebooted or shutdown.

Finally the var/log/asterisk/connectlog Subflow monitors the Asterisk connectlog looking for connect/disconnect messages so that it can signal to update each button status.

Node-RED AllStarLink Dashboard
Node-RED AllStarLink Dashboard

Each section of the dashboard can be collapsed/opened by touching/clicking the little blue arrows on the right of the dashboard. The dashboard works fine on Android, iOS, Windows, MacOS and Linux.

If you’re not familiar with Node-RED and haven’t yet installed it to your PC, take a look at the Node-RED Getting Started Page. The information takes you through installing Node-RED onto a multitude of devices including PC and RaspberryPi devices.

Once you have Node-RED installed all you need to do is download the AllStarLink Control Dashboard Flow and import it to your Node-RED flow editor.

Note: The link above is now for v1.2 of the flow which includes some critical bug fixes. You can read about the bug fixes in the v1.2 release article.

Once downloaded, select Import from the burger menu icon on the right-hand side of the flow editor as shown below and import the flow file.

Node-RED Flow Editor import Menu Item
Node-RED Flow Editor import Menu Item

Once imported you will find that some of the nodes in the flow are not available. This is because you need to add them to the flow editor palette before being able to deploy the flow.

Drop down the same menu as shown above but, this time select Manage Palette. This will open another window where you will need to select the Install tab as shown below.

Node-RED Flow Editor Palette Install Tab
Node-RED Flow Editor Palette Install Tab

You need to install two node sets to complete the flow, node-red-contrib-bigssh and node-red-dashboard. Type in the name of each package one at a time in the search bar and then click the Install button.
Once the two packages are installed you then need to configure the credentials for logging into your RaspberryPi. This is simply done by double clicking the blue Send Command to ASL node at the top of the main flow and then clicking the Pencil button at the end of the Credentials field. This will open another window where you will need to type in the IP Address of your ASL RaspberryPi into the Host field, then enter 22 into the port field, add repeater into the Username field (repeater is the default username, if you have changed this then you will need to add the new username name in instead) and then the password associated with the repeater login into the Password field. (Normally allstarlink)

Once this is done, do the same on the other blue nodes, namely “Get Node Uptime“, “Command =>> RaspberryPi” and “Tail ConnectLog”.

The final thing to setup is the dashboard size. Click on the downward pointing triangle at the top right of the menu bar (under the burger menu) and select dashboard. Check that the sizes are set the same as in the image below. For some reason, these settings aren’t always imported (Possible bug?) so, if your dashboard layout isn’t like shown above it will be because these settings failed to import.

ASL Dashboard Settings
ASL Dashboard Settings

You are now ready to deploy your AllStarLink Control Dashboard!
Press the red Deploy button at the top of the flow editor window.

To access the dashboard from any device, open your favourite web browser and enter the following URL: http://IP-Address-of-Node-RED-Computer:1880/ui

Finally, if you want to change the nodes that each button connects/disconnects you will need to edit the set flow var’s function at the top of the main flow. All you will need to do is replace the existing node numbers taking care not to alter the rest of the code in any way otherwise, it could stop the flow from working.

Once you’ve edited the node numbers, double click on the associated button node and change its Label to show the new node name.

Once your changes are complete, Deploy the flow again and your changes will be live.

This is version 1 of the ASL Dashboard, I already have ideas for version 2 that will also have the ability to enter a node number into a field and connect to it without the need to program it into a button.

More soon …