Monday, May 29, 2023

A Multi Frequency WSPRing (whispering) System using KA9Q-Radio

The "KA9Q Radio software suit" is a an ingenious sort of a SDR program suite. It is capable of receiving a huge number of frequencies simultaneously. I believe that this is a unique feature of this applications. It seems to go back to the original *nix philosophy of "small is beautiful" e.g. small well written applications that do one job and do this one job very well. Because there is no graphical ballast, it will perform its task on the most modest comput-hardware. Meaning it will run on a Raspberry Pi system starting with the Pi3. Note, that there is no need for an expensive GPU nor the need to use virtual audio cables or a Soundcard for that matter.

Because of the "multiple frequencies simultaneously" capability I've set up a WSPR receiver for my QTH so that during times that I do not operate I can at least monitor band activity and/or propagation. Initially I will monitor from LF (136kHz) to the end of HF (28MHz). If this is going to workout well I will also start building a system for VHF/UHF.  

Depending on the SDR one is going to use there is a requirement for a fast to really fast USB port. In my case I'm going to use the RX888M2, which needs a really fast USB3 port to stream 32 MHz of bandwidth in one go across the port. However, if I would use my Pluto or RSPdx and any of the TV-Dongles I can get away with a speedy USB2 port and for the SDR-IQ with it max 192kHz a slow USB port will do.

I can't stress this enough, the use of good usb cables is a requirement (not to long and it should have good shielding). Additionally, even though all my cables come with a molded choke, I do add additional choke(s) to all of my cables. I've had good success with that however, if that doesn't help reducing the noise from the USB/PC connection then "these" are apparently very good in suppressing CMC noise (EMI).

Below are the steps that I used to get the system up and running. And I believe that if you follow those steps you will be able to get a working "Multi Frequency WSPR receiving System" up and running in no time.

I've had a spare little PC (NUC) lying around (I7-4765) with 8GB of memory and a 250GB SSD which I bought second hand for about A$250. My installation is based on Debian Version 11.7 (Bullseye) and all following steps are based on this OS. The reason to use the NUC was to have both the SDR and the WSPR decoder running on a single host. The WSPR decoder is chewing up all the available CPU resources. 

If you go with the Pi solution I recommend at least a Pi4-4GB and to install Debian Bullseye.

WARNING: If you are going to use a Raspberry PI as the compute resource make absolutely sure that you have enough current available to support the Pi and the RX888! I use a home made 5V 10A Power-supply which is feed of the shacks 12V rail. I've tried with a powered USB-HUB to no avail!

INFO: I have highlighted text in bold, this is so one can copy and then paste the copied text into a terminal instead of typing everything into the terminal. Don't forget to press <Enter> at the end. Command returns are displayed in courier.

NOTE: sudo didn't work for me out of the box.

There are many ways to fix this issue however, I did it this way:
$ su -
 echo "$(who am i | awk '{print $1}') ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/$(who am i | awk '{print $1}')
chmod 440 /etc/sudoers.d/$(who am i | awk '{print $1}')
# ls /etc/sudoers.d/$(who am i | awk '{print $1}')
 -r--r----- 1 root root 27 May 28 20:21 /etc/sudoers.d/<your username>

So with that out of the way we can now get and install required libraries.

$ echo "
build-essential
libusb-1.0-0-dev
libusb-dev
libncurses5-dev
libfftw3-dev
libbsd-dev
libhackrf-dev
libopus-dev
libairspy-dev
libairspyhf-dev
librtlsdr-dev
libiniparser-dev
libavahi-client-dev
portaudio19-dev
libopus-dev" > /tmp/required

$ for _required in $(cat /tmp/required); do sudo apt install $_required -y; done

If you like to run the system for a while it helps if the stupid hibernation is switched off.

 $ sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

I find it much easier to work with names rather then with ip-addresses and port-numbers, as such I'd use the Multicast DNS function of the AVAHI Daemon. Your mileage may vary though! 

$ sudo systemctl start avahi-daemon.service
$ sudo systemctl status avahi-daemon.service
 avahi-daemon.service - Avahi mDNS/DNS-SD Stack
     Loaded: loaded (/lib/systemd/system/avahi-daemon.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2023-06-11 22:16:53 ACST; 3 days ago
TriggeredBy: ● avahi-daemon.socket
   Main PID: 548 (avahi-daemon)
     Status: "avahi-daemon 0.8 starting up."
      Tasks: 2 (limit: 9342)
     Memory: 1.3M
        CPU: 15.899s
     CGroup: /system.slice/avahi-daemon.service
             ├─548 avahi-daemon: running [sun.local]
             └─566 avahi-daemon: chroot helper

Not needed in the use case.

Check if en_US.UTF-8 language is installed.
First check:
$ locale -a
C
C.UTF-8
en_AU.utf8
POSIX

And if it is missing, run:
$ sudo dpkg-reconfigure locales

This will bring up a graphical-ui (ncurses) selection display. Scroll down until you see en_US_UTF-8, press spacebar to select and then <ok>

Generating locales (this might take a while...)
  en_AU.UTF-8... done
  en_US.UTF-8... done
Generation complete. 
 
$ locale -a
C
C.UTF-8
en_AU.utf8
en_US.utf8 <-- required
POSIX

Now download the source files for the KA9Q radio suit:
$ mkdir tmp
$ cd tmp
wget https://github.com/ka9q/ka9q-radio/archive/refs/heads/main.zip

Extract the downloaded file (main.zip):
$ unzip main.zip
$ ls -l
total 2.4M
drwxr-xr-x 4 hw hw 4.0K May 28 16:15 ka9q-radio-main
-rw-r--r-- 1 hw hw 2.4M May 28 18:16 main.zip

Compile and install KA9Q-Radio applications:
$ export LANG=en_US.UTF-8
$ cd ka9q-radio-main

NOTE: There are two (2) Makefiles, Makefile.linux and Makefile.pi. If you use a RaPi you need to link Makefile.pi to Makefile 

$ ln -s Makefile.linux Makefile 
$ sudo make install

Next we create a "wisdom" file. 

NOTE: Depending on your system this can take a while. Creating a wisdom file on a RaPi took a while. I cooked a meal, ate the meal, check the RaPi .... not yet .... went and watch a movie ... check again and voila done! So be patience grasshopper.

$ fftwf-wisdom -v -T 1 -o /tmp/wisdom rof500000 cof36480 cob1920 cob1200 cob960 cob800 cob600 cob480 cob320 cob300 cob200 cob160

Or if you are keen and like to know how long it took to create your wisdom file you could run the below.

$ time fftwf-wisdom -v -T 1 -o /tmp/wisdom rof500000 cof36480 cob1920 cob1200 cob960 cob800 cob600 cob480 cob320 cob300 cob200 cob160
fftw-wisdom: system-wisdom import failed
Planning transform: cob160
Planning transform: cob200
Planning transform: cob300
Planning transform: cob320
Planning transform: cob480
Planning transform: cob600
Planning transform: cob800
Planning transform: cob960
Planning transform: cob1200
Planning transform: cob1920
Planning transform: cof36480
Planning transform: rof500000

real    4m14.131s
user    4m8.088s
sys     0m0.048s

Move the generated wisdom file in to its rightful place.
$ test -s /var/lib/ka9q-radio/wisdom && sudo mv /var/lib/ka9q-radio/wisdom /var/lib/ka9q-radio/wisdom.old
$ sudo mv /tmp/wisdom /var/lib/ka9q-radio/wisdom
$ sudo chown $(who am i | awk '{print $1}').radio /var/lib/ka9q-radio/wisdom

Now its time to install the K1JT's WSPR Application.
$ sudo apt install wsjtx -y

After that is finished it's time ....  to configure/setup KA9Q-Radio for our intended purpose.

There are lots of config files and to work through all off them you'll want/need to read the documentation from here however, since I'm going to use the RX888 to do WSPR only as such I've created a new rx888.conf config file. The # and ; a comment markers. You can either modify this file with a text editor like vi or nano.

Before you copy and paste the next configuration item (below, you need to establish what the active network interface is being named! In the rx888.conf file we has a statement starting with iface. This value is system dependent and you need to find that name before you can progress any further.

On a RaPi it is most likely eth0, but on other systems it could be something else. E.g. on my system it is eno1
You'll be able to check using the following:
ip a | grep "mtu 1500" | grep UP | awk '{print $2}'
eno1: <- This is what the NIC is called on my system

Whatever the above command output shows, you'll might need to change the iface value in the below script. E.g. if it shows eth0 your iface line should read iface = eth0.

The below will create a backup of the /etc/radio/rx888d.conf file first, before creating a new /etc/radio/rx888d.conf file. 

$ sudo mv /etc/radio/rx888d.conf /etc/radio/rx888d.conf.bck
$ sudo cat << __EOF__ > /etc/radio/rx888d.conf
[rx888-loop]
# VK5HW customized
description = "RX888 40m Delta-Loop"
firmware = SDDC_FX3.img
samprate = 64800000    ;  2^8 * 3^4 * 5^5
iface = eth0               ; replace this with your iface name
status = rx888-status.local
data = rx888-pcm.local
ssrc = 10
;gain = 1.5 ; dB
gain = 10 ;dB - close to the Noise Floor, might have to increase
gainmode = high ; higher gain range
__EOF__

Next we need to configure the virtual receivers. These we do with the radiod@wspr.conf file. 
$ sudo mv /etc/radio/radiod@wspr.conf /etc/radio/radiod@wspr.conf.old
$ sudo cat << __EOF__ > /etc/radio/radiod@wspr.conf
[global]
overlap = 5
blocktime = 20
input = rx888-status.local
samprate = 12000
mode = usb
status = hf.local
fft-threads = 2

[WSPR]
# Bottom of 200 Hz WSPR segments on each band. Center is 1500 Hz higher
# sample rate must be 12 kHz as required by wsprd
data = wspr-pcm.local
freq = "136k000 474k200 1m836600 3m568600 5m287200 7m038600 10m138700 14m095600 18m104600 21m094600 24m924600 28m124600"
__EOF__

That's it folks, we are ready to start KA9Q-Radio! Make sure the RX888 is plug into the correct USB Port and then to be sure to be sure REBOOT the system.
$ sudo reboot

After the reboot, login to the system and start the rx888d(river) using the rx888-loop configuration.
/usr/local/sbin/rx888d rx888-loop &

NOTE: The & indicates that we would like the program (job) to run in the background.

If everything is OK the following output can be seen:
$ Using config file /etc/radio/rx888d.conf
Loading firmware file /usr/local/share/ka9q-radio//SDDC_FX3.img
Firmware already loaded
USB speed: 4
Successfully claimed interface
Samprate 64,800,000, Gain 10.0 dB, Attenuation 0.0 dB, Dithering 0, Randomizer 0, USB Queue depth 16, USB Request size 8 * pktsize 16384 = 131,072 bytes
service 'RX888 40m Delta-Loop._ka9q-ctl._udp' -> rx888-status.local (239.132.105.12) established
service 'RX888 40m Delta-Loop._rtp._udp' -> rx888-pcm.local (239.10.102.92) established
RX888 40m Delta-Loop: iface eno1; status -> 239.132.105.12:5006, data -> 239.10.102.92:5004 (TTL 0, TOS 48, 24576 samples/packet)

If this all looks ok the PC is talking to the SDR and it is time to start the demodulators.
$ /usr/local/sbin/radiod /etc/radio/radiod@wspr.conf &
$ KA9Q Multichannel SDR
Copyright 2018-2022 by Phil Karn, KA9Q; may be used under the terms of the GNU General Public License
Loading config file /etc/radio/radiod@wspr.conf...
Acquired front end control stream rx888-status.local (239.132.105.12)
Acquired front end data stream 239.10.102.92:5004 (239.10.102.92)
Front end sample rate 64,800,000 Hz, real; block time 20.0 ms, 50.0 Hz
fftwf_import_system_wisdom() failed
fftwf_import_wisdom_from_filename(/var/lib/ka9q-radio/wisdom) succeeded
service 'wspr._ka9q-ctl._udp' -> hf.local (239.83.95.156) established
Processing [wspr]
service 'wspr._rtp._udp' -> wspr-pcm.local (239.72.24.12) established
12 demodulators started
12 total demodulators started

Next start start the wspr-decoder:
$ wspr-decoded wspr-pcm.local

And voila we are starting to see decodes:
$ <DecodeFinished>
<DecodeFinished>
<DecodeFinished>
<DecodeFinished>
<DecodeFinished>
<DecodeFinished>
1518 -19  0.7   0.475683  0  VK6LX OF88 30
<DecodeFinished>
<DecodeFinished>
<DecodeFinished>
1518 -17  0.3   7.040113  0  RU0LL PN53 33
<DecodeFinished>
1518 -27  0.4  14.096975  0  WS5L EM13 37
1518 -12  0.2  14.096984  0  WB7AJP CN87 33
1518 -23  0.3  14.097017  0  <KR6RG> DM13EM 23
<DecodeFinished>
<DecodeFinished>

Looking at our home directory we can see that we have a few new directories. These are the directories of the individual virtual receivers where all the WSPR files go.
$ ls -l
total 104K
drwxr-xr-x 2 hw hw 4.0K May 29 00:54 10138700
drwxr-xr-x 2 hw hw 4.0K May 29 00:54 136000
drwxr-xr-x 2 hw hw 4.0K May 29 00:54 14095600
drwxr-xr-x 2 hw hw 4.0K May 29 00:54 18104600
drwxr-xr-x 2 hw hw 4.0K May 29 00:54 1836600
drwxr-xr-x 2 hw hw 4.0K May 29 00:54 21094600
drwxr-xr-x 2 hw hw 4.0K May 29 00:54 24924600
drwxr-xr-x 2 hw hw 4.0K May 29 00:54 28124600
drwxr-xr-x 2 hw hw 4.0K May 29 00:54 3568600
drwxr-xr-x 2 hw hw 4.0K May 29 00:54 474200
drwxr-xr-x 2 hw hw 4.0K May 29 00:54 5287200
drwxr-xr-x 2 hw hw 4.0K May 29 00:54 7038600

Lets have a look what's inside these directories:
$ ls -l 5287200
total 8.7M
-rwxr-xr-x 1 hw hw 2.1M May 28 00:01 230527_1430.wav
-rwxr-xr-x 1 hw hw 1.9M May 28 01:17 230527_1546.wav
-rwxr-xr-x 1 hw hw 1.4M May 28 09:05 230527_2334.wav
-rwxr-xr-x 1 hw hw 2.6M May 29 00:47 230528_1516.wav
-rwxr-xr-x 1 hw hw 2.1M May 29 00:57 230528_1526.wav
-rw-r--r-- 1 hw hw    0 May 28 00:33 ALL_WSPR.TXT
-rw-r--r-- 1 hw hw    0 May 29 00:55 hashtable.txt
-rw-r--r-- 1 hw hw    0 May 29 00:55 wspr_spots.txt
-rw-r--r-- 1 hw hw  452 May 29 00:55 wspr_timer.out
-rw-r--r-- 1 hw hw 2.0K May 29 00:55 wspr_wisdom.dat
$ ls -l 14095600
total 8.8M
-rwxr-xr-x 1 hw hw 2.1M May 28 00:01 230527_1430.wav
-rwxr-xr-x 1 hw hw 1.9M May 28 01:17 230527_1546.wav
-rwxr-xr-x 1 hw hw 1.4M May 28 09:05 230527_2334.wav
-rwxr-xr-x 1 hw hw 2.6M May 29 00:47 230528_1516.wav
-rwxr-xr-x 1 hw hw 2.1M May 29 00:59 230528_1528.wav
-rw-r--r-- 1 hw hw  36K May 28 23:34 all_wspr.bck
-rw-r--r-- 1 hw hw 3.0K May 29 00:57 ALL_WSPR.TXT
-rw-r--r-- 1 hw hw 3.6K May 29 00:57 hashtable.txt
-rw-r--r-- 1 hw hw  45K May 28 23:34 upload.log
-rw-r--r-- 1 hw hw   74 May 29 00:57 wspr_spots.txt
-rw-r--r-- 1 hw hw  452 May 29 00:57 wspr_timer.out
-rw-r--r-- 1 hw hw 2.0K May 29 00:57 wspr_wisdom.dat

In the 14095600 directory we find two additional files, all_wspr.bck and upload.log. These are files that my upload script is producing. The .bck file is an archive of ALL_WSPR.TXT and the .log file is for error checking.

And here is a snapshot view of a decoded dataset:

$ cat 14095600/ALL_WSPR.TXT
230528 1508 -18 -0.91  14.0969794  DP0POL JQ26 37          0  0.12  3  1    0  0  34    33  -120
230528 1508 -15  0.19  14.0969838  WB7AJP CN87 33          1  0.28  1  1    0  0  39    20    16

As it stands you now have a MULTI BAND WSPR DECODING SYSTEM

And now to upload the results to WSPRNet, that is also quite easy. It is  done with a one-liner:

$ curl -F allmept=@ALL_WSPR.TXT  -F call=<your call>  -F grid=<your grid>  http://wsprnet.org/meptspots.php

There is a very similar site, PSKREPORTER which not only has a database for WSPR but for a lot of other digital modes. However, I've not (yet) found a way how to upload my results to that repository.

I have automated this on my system using the *nix cron facility. I first created a script to archive the reports and create a log file for error checking. If you like to use the script, it can be found here

And here is my crontab: (copy the below to your crontab)
1,7,13,19,25,31,37,43,49,55 * * * * ~/scripts/upload_wspr_data.sh VK5HW PF94hk

It basically runs every 6 minutes, a minute after or before a WSPR decode.

Oh, and if you like to see if I received you go to WSPR rocks, which is an excellent tool for mapping, charting and other visualisation. 

So that's basically it. 
PLEASE NOTE, that this is NOT a how to use KA9Q-Radio, rather a quick way to show how easy it is to setup a multiple frequency WSPR receiving system using parts of the KA9Q-Radio suite. 
There are other modes that can be setup and monitored,  if you like to use other modes or even would like to manually tune through the bands and listen you'd need either a sound card or understand how to use "MULTICAST" streaming. The options are not quite endless but ...

Next on the list, get some horizontal antenna for a 2m/70cm/23cm installed and setup a WSPR VHF/UHF receive system. 

Oh and a little bragging ...





Appendix:

Wednesday, November 16, 2022

Why I chose to use an Audio Processor

I have been asked several times why I have chosen an external microphone processor. So, I thought it was time to put my reasons down on paper.

Some new amateur radio transceivers come with a reasonably good microphone and sound quite good when set up correctly. However, I'm not a hand-mic type of guy, and I'm also not a desktop kind of guy. When using a desktop mic, I either end up needing to go to the physio more often to get the knots out of my neck or it ends up becoming a "hand-mic".

Throughout my pursuit for a well-balanced SSB transmit audio, I have learned a little bit about audio bandwidth and how to squeeze my dulcet tones into less than a 3.3kHz audio bandwidth.

But I digress. To answer the question, I went with a dynamic studio microphone, and for that, I needed outbound amplification to drive the microphone. I also wanted/needed a bit of equalizing and compression to the audio signal. Additionally, I wanted to restrict some of the background noise that we all seem to endure at odd occasions. Therefore, my requirements became the following:

  1. It needed amplification.
  2. I also wanted rudimentary filtering (EQ).
  3. It needed noise gating.
  4. It required compression that is smooth.
  5. It should fit my hobby purse.

With my wishlist sorted, I looked at what was available at a reasonable price. There are a lot of processors available, but most of them break my hobby purse. However, I finally found that the dbx286s ticked all my requirements, including requirement #5, the cost.

Here is a quick rundown of how the dbx286s fulfills my requirements:

1. Amplification: The pre-amplifier gain control runs from 0dB to 60dB, has 48V PHANTOM POWER if a condenser microphone is being used, and an 80Hz High Pass Filter (rumble filter) to take care of any rumbling at low frequencies. This is a very steep 18dB/octave high-pass filter. This filter will also, to some extent, reduce the proximity effect one gets with directional microphones.
 
2. Filtering: The dbx286s has a two-stage enhancer, the LF DETAIL and the HF DETAIL. Most enhancers work by adding a controlled amount of distortion to the audio signal. However, the dbx286s functions like an equalizer. One interesting aspect is that the LF DETAIL control applies a boost at 80Hz and a cut at 250Hz simultaneously. Many of us are aware that boosting low frequencies will often make the sound quite muddy. However, this "muddiness" is usually due to boosting frequencies other than those that would subjectively add bottom end to the signal.

You might be wondering why the 80Hz boost frequency is the same as the frequency to cut in the mic preamp stage. Well, the preamp comes before the compressor, and by removing the 80Hz before the compressor, we eliminate the compressor acting on the low (rumble) of the audio signal. This is quite different from the way AR transceivers are using MIC-GAIN and COMPRESSION.

3.Expander/Gate: Gating the audio signal to reduce background noise is a bit of an art form, and it took me quite a while to get it right. On the 286, there are two adjustments we can apply: THRESHOLD and RATIO. The ratio is adjustable up to a level of 10:1, and the threshold is variable from OFF to +15dBu. This allows me to reduce low-level clutter in the audio signal, such as breaths, without affecting the vocal itself. It's important to remember that compression raises the noise floor of the audio signal. The expander has two LEDs, one red (-) and one green (+), indicating when the audio signal is below or above the threshold. However, I found setting the gate was easier by listening to my transmitted signal on a second receiver.

4.Compressor: The compressor has two adjustments: DRIVE and DENSITY. The compression is of the over-easy type, which means the ratio increases as the audio level gets higher. This means that the Drive control controls the degree of compression. With just these two controls, I can get a very smooth compression and apply it carefully to avoid sounding over-compressed. Additionally, the 8-stage LED bar-graph shows the amount of gain reduction occurring during compression. This is quite different from the compression used in AR transceivers.

5.Cost: Yes, I achieved this requirement. The microphone and microphone processor, at the time of purchase, set me back slightly over $0.6K.
 

Monday, October 31, 2022

A quick Standing Wave check on my antenna system (baselining)

A quick check of my antenna systems SWR (VSWR) tells me that I should be able to use the antenna system on five AR-Band without to much trouble. However a few quick note before heading of to the actual task.

I'm not going to talk about impedancesreactance or admittance. I'm simply checking the SWR to get a basic overview of the overall antenna-systems ability to be used with with my transceiver and/or being able to use a small ATU (Antenna Tuning Unit) to pretend the SWR is "good". It shouldn't really be known as an ATU as it really isn't tuning the Antenna. It is a device using lumped circuits (L's & C's) to present a match to the transceiver output stage. Which is not a constant 50Ω at any of the AR-Bands either. So this quick check of the SWR is enough information which tells me all I want to know (at this stage). 

An additional note. You might have noticed that I always say check and checking the SWR! Well I've never seen a SWR meter that measures SWR (how would we be able to measure a ratio). SWR is not a measurement it is a calculation! Generalised, a VSWR (Voltage Standing Wave Ratio) check is a Voltage measurement of the forward and reflected voltages at one frequency. From those two values the SWR is being calculated. 

So onto the antenna, it is a 40m horizontal loop, attached to two TV roof standoffs to clear the edge of the roof and than slopping into the backyard to a height of 2.3m 5m above the ground.
It is feed with about 3m commercial 450  ladderline to a 1:1 current balun. The rest of the feedline is about 20m of LMR400 and a short run of RG213 and RG8X for the interconnections between the ATU, AMP and the Transceiver. The feedline is heavily chokes with homebuilt chokes.
Measuring from the 213 I'd say I've got 23m of 50Ω feedline to the balun and about 3-4m of 450Ω feeder. My guess is (but I should really measure it) that I don't have to worry about too much loss through the feedline on the four HF-Bands and even on 6m the line should not be to lossy (not sure about the BALUN though, more checking/measuring required).
So how does the SWR look like. (NOTE: If I talk about the SWR from now on, I'm talking about the antenna-system SWR and not the antenna SWR.)
I do not use an inline SWR meter for this purpose, the inline SWR meter is, and that is my believe, only good for monitoring if a change in the antenna system has occured. 
For this tasks and long term comparisons (baselining) I'm using a RigExpert antenna analyser. 
Basically I'll check from after the ATU, i.e. from the end/beginning of the RG-213 upto the antenna.

Below is a picture of the result.

It only displays the five bands that have a reasonable SWR. So let's zoom in a bit.

1. 40m
Bit low in the band, my aim was 7.100 but I thought this wasn't to bad straight of. It shows the VSWR at 40m is good to very good, with an average SWR below 1.5:1.  

The other bands have their best  VSWR outside our allowed frequency allocations. And experience tells me that I'll be able to use my ATU to present an acceptable SWR to the transceiver for proper operation of the output-stage. But even on 40m I should use an ATU to keep the transceiver/amplifier happy as the above 40m SWR plot clearly shows.

2. 20m
On 20m the situation is not as bad as it looks, best SWR is around 13.9MHz. But we also can see that the SWR is not to bad across 14-14.35MHz. With max SWR of less than 4:1 at 14.35MHz. Yes, looking at the Z, e.g. the impedance, I would be able to see if my ATU would be able to tune that. But for now this is all I need.

3. 15m
On 15m the situation is very much the same.

4. 10m
On 10m however, the SWR bandwidth is quite broad and in most cases I'd not need to use an ATU unless I go into the FM spectrum.

5. 6m
And last but not least the bonus Band, 6m. The spectrum I'm mostly interested in, 50.1-50.4MHz has a VSWR greater than 2:1 and would need an ATU to keep the transceiver happy.

Now all this means is that I should be able to operate on these bands without to much trouble. The ATU's build into the newer type of Radios and Amplifiers with their 3:1 tuning range should find a suitable match without breaking sweat. And, m
y trusty old YAESU FC-901 ATU is able to tune the four HF bands easily without getting warm at 400W.

So now that I have this data "stored" I can say that I have baselined my antenna system. I can now refer back to this data to see if, over time changes have occurred.  

Last thoughts:
  • For an antenna SWR the SWR should be checked at the antenna itself rather than at the end of the feedline. The feedline will load the antenna and create an illusion of having a better antenna SWR.
  • To fully understand your antenna-system, feedlines (transmission lines) should have their attenuation (cable loss) measured or calculated (length measurement tape-measure  or TDR).
  • Knowing the above, one can calculate the SWR at the antenna feedpoint.
  • I would not use an inline SWR Meter for any of the above measurements however, using an inline SWR-meter is good insurance policy because connection problems usually show up as SWR spikes which can quickly be seen on those type of meters during operations.

Saturday, October 29, 2022

My transmitted signal analysed

 A quick look at a spectrograph to analyse my transmitted signal.

Setup:
Transceiver : ICOM IC-7610
Power       : 108W
Antenna     : 500W dry dummy-load with 40dB tap
Modulation  : SSB (LSB)
Audio setup : see here

Receiver    : RF-Space SDR-IQ
Software    : SpectraVue Ver.3.39
IF-Gain     : +6dB
RF-Gain     : -20dB


Lets analyse the signal.
The grey section shows the receiver audio bandwidth (BW), i.e. the SSB RX filter bw or the CHANNEL BW. 
The black area is the so called Video BW, in this case a 30kHz view of the spectrum. A frequency spectrum display from 7.160MHz to 7.190MHz .
The green line is the real-time capture and the blue line is the in-time capture, the memory of the previous capture. 
The display also shows some vertical lines with a distance (spacing) between two lines of 10dB and there are also some vertical dotted lines which are 3kHz apart. Additionally I have applied "smoothing" to quieten the real-time capture. (I'll show the same signal without smoothing further down below) 

Now let's look at the BLUE line (the Sideband envelope), as that line dipics my previous SSB transmission. The top of the signal is about -59dB (S9+14) a reasonable strong signal. We can also see that the width at the top of that line fits into the grey, the 3kHz bandwidth marker, and is about 2.9kHz wide (100-3000Hz). We can also see that the signal slowly spreads out towards the bottom, down to the about -90dB from were it then spreads between a bit more quickly to 7167.8kHz and 7182.8kHz. Since the carrier frequency is at 7175kHz, we can deduce that the signal is spreading -7.2kHz and +7.8. 

Struth, what a crappy wide signal ! 😇

BUT, wait! The WIDENING of the signal starts at approximately at -91dB (S6). Which would mean that from the peak of the transmitted channel BW the signal is "clean" for about 32dB. Now that is a pretty good NON pre-distorted signal. 

The following table shows how the signal from about the -90dB mark spread very quickly, but also drops very quickly in signal strength. 

FrequencySignal StrengthFrequencySignal Strength
7169kHz-100dBS4.57169kHz-100dBS4.5
7166kHz-114dBS2.27181kHz-114dBS2.2
7163kHz-124dBS0.57184kHz-124dBS0.5


This does help me to understand how wide my signal really is and when and how I would cause channel interference based on a 3kHz channel spacing. 


Below is the same signal without smoothing.


As we can see it is very easy to check our own transmitted signal. The requirements are not that strenuous. A  tap, dummy load and a SD-Receiver is all that is required to not only check our transmitted audio, but also our transmitted signal. Here are a couple of tap's that are easy to replicate, 40dB and a 50dB tap.

Tuesday, October 11, 2022

A Splitter/Combiner

A while back I build a combiner for some two tone tests on some older type transceivers. Well the transceivers have now gone and so I found new use for the combiner as a splitter. 
The combiner has pretty good port isolation of over 50dB and an insertion loss of about 6dB. To test some of my SD-Receivers I use the splitter to divide the receive signal from the antenna and feed two SDR's so I can compare rx-prowess. 

The toroid I used is my trusty old workhorse, a Jaycar Model LO1230 (with the dimensions of 18x10x6mm) which has very similar characteristics as Mix 43. A FT50(A)-43 might do a slightly better job (maybe), but the LO1230 is available locally at a reasonable price and does the trick nicely. The resistors are 50Ω resistors (green gold white white yellow) (I have a few left overs from other projects) but a 49.9 1% resistor should do the trick as well. 
Now, the 100nF capacitor is more or less an insurance policy, it is used as a DC blocker. You could leave it out if you so desire. I've put 12 bifilar windings around the toroid and that's it. Nothing to elaborate. 

Here is a quick sketch of the unit:


And here are some measurements of the unit.

1. Attenuation:

2. Port isolation:

As can be seen the isolation is very good from 80-6m (3.4MHz - 50MHz) but is still good enough for rx testing below 3.4MHz and above 50MHz. I might test again to see what the specs are for below and above frequencies. Anyway as it is it works for me at the current use, which is being used as a splitter and not a combiner.

3. Photo of build unit:


I currently have the unit setup for my SDR-IQ and RSPdx to compare rx prowess at ELF, VLF and HF using SDRConsole, SpectraVUE, SDRuno and HDSDR. The 6dB attenuation is only a problem at the higher end of the spectrum which I can compensate with an assortment of low noise amplifiers (LNA's) from Minicircuit and homebrewed units.

Saturday, June 11, 2022

Listen to the Music

Listen to the music, but not on SSB with a 3kHz bandwidth. What I mean is, listen to the Amateur Radio Bands, and you will quickly understand what I'm talking about. Some of the audio signals on our bands are appalling. Even worse are some of the reports that people are relaying back to these poor operators.

It's worth noting that many amateur radio operators strive to have a clean and pleasant signal. However, both the amateur radio community and society, in general, have become non-constructive regarding any form of insights or criticism. Therefore, the information below may help some operators check their transmission quality.

A little bit of research on the internet reveals that the human voice contains frequencies ranging from about 100Hz to 8000Hz. However, only the energy between about 300Hz and 3800Hz contributes to the intelligibility of speech. Vocal content below 400Hz provides "body" to the voice, which is great for singers and radio announcers. Speech content above 3000Hz provides presence and can aid communication, to some extent. However, the added bandwidth can introduce noise and other complications.

In my opinion, in a Single Side Band (SSB) communication system, it's crucial to achieve the highest Signal-to-Noise Ratio (SNR) at the receiving station under strenuous propagation conditions to get the message across. To achieve this goal, we should transmit the portion of the human speech that affects articulation the most, which research has shown to be the spectrum between 300Hz and 3300Hz.

These bandwidth limits have been established in the days of long distance telephone systems and have served the telecom industry of our world quite well.

The standard SSB TX filter in most SSB transceivers is 2.7kHz wide, and a well-adjusted SSB transceiver has this filter aligned so that it will pass audio between 300Hz and 3000Hz. Since SSB transmitters are peak power-limited, transmitted energy below approximately 250 Hz will show power on the power meter but will not contribute to the articulation at the receiving station. However, these days we often see signals with a "power-grab" dominating the bands. Many operators focus solely on increasing their power output, resulting in signals that are difficult to copy and interfering with other spectrum users on either side of the selected channel. These bass-heavy signals can swamp the AGC in a receiver, creating a low-frequency rumble that is unintelligible and potentially causing issues for other spectrum users.

Fortunately, with the availability of publicly accessible Web-SDR systems, it's now possible to monitor one's own transmissions quite easily. 
The way I do this is however, slightly different as described below. 

To set up a transmission check, I first record a test transmission and play it back through the transceiver which is connected to a dummy load/antenna. While transmitting the recording, I listen to the signal using a second receiver (in my case, an SDR-IQ) to adjust the TX-audio profile, including the TX Bass and TX Treble on the ICOM, MIC gain, and compression.

When adjusting compression, I make sure to adjust the MIC gain so as to avoid the compressor pumping up background noise during speech breaks. By listening to my own transmission, I can tailor the audio characteristics to ensure that all transmitted power remains inside the available SSB channel. This is particularly important for QRP stations or foundation license holders, as losing just 3dB to either side of the channel means that only a quarter of the peak power is transmitted inside the wanted SSB channel, potentially making it difficult for the receiving station to copy the signal.

Below is a display of a test I conducted to get a more balanced audio profile. The LSB signal within the top of the waterfall in the below picture is showing emphasis on the low end of the audio spectrum. Visible on the bright red right hand area. Below this signal we can clearly see that I have selected/created a more balanced audio profile.


Analysing those signals, we can see that the first signal has quite a lot of emphasis on the lows, at around 100-400Hz (on the right the big red line). This makes the signal sound rather bassy, and although it shows a lot of power on the power meter, it is not overdriven (like most of the signals on the bands today)
Operators who prefer to use wide-open audio filter might find this sounds okay. But for longer distances, were the receiving station only has a bit better than marginal reception, say S5, it would be difficult to copy.
The second signal shows much better-balanced audio and I would classify this as very good communication audio. However, the bandwidth of both signals is approximately 2.9kHz (100-3000Hz) which is still in the 3kHz channel bandwidth. I believe that the bottom signal would still sound rather nice at a 2.6, 2.4kHz bandwidth even in 2.1kHz with a lot less noise bandwidth this signal would still sound Q5.

Oh and ESSB enthusiast find my view of the use of narrow band audio for SSB harrowing. However, it would be nice if these OM's would find a space in our limited spectrum were they would NOT interfere with low power stations that they might not hear.
I've been seeing quite a few ESSB operators on 40m clobbering small signals due to their inability to hear those stations and make it difficult for others to make the contact with those stations. 
Also, I don't believe that ESSB should be used during a contest where bandwidth is limited, not even by a contest station.

Sunday, March 13, 2022

Receiver gain setup

I always setup my receiver(s) with just enough attenuation/gain to make sure that the AGC only acts on the signal I'm listening too. 
I have the preamps switched off on all band from 20m and above (14MHz and below). Depending on the band conditions I either use the build in attenuator or the RF-gain. Below are the steps that I use to achieve receiver bliss.
  1. Record the S-meter reading of the band noise. I tune off the signal I'm listening to and note the S-meter reading on band noise alone, for example the S-meter is reading S5 (a noisy day).
  2. I now apply attenuation until the S-meter reads as little as possible. On the IC-7610 I can select the attenuation in steps of 3dB. If you don't have that ability you can achieve a similar outcome with the RF-gain knob as well. 
  3. Next I tune the desired signal in again. The result is that now the band noise will not stimulate the AGC into action, i.e. the AGC will now only operate on the desired signal.
  4. I now have selected the sweet point for the receiver for the current band conditions.

The result is a very quite receiver which is very pleasant to listen to.


Sunday, February 13, 2022

NOISE COUNTER MEASURES, or how to make sure we can hear those new QRP stations!

I did live in a fairly, Amateur Radio Operator populated area (Canberra ACT) with quite a few Amateur Radio Operators close by. Some of them with the same transceiver outfit as me. There were of course slight differences. For instance, my antenna arsenal then comprised of a Multiband Vertical (Cushcraft R8), 40m horizontal loop, non-resonant dipole (ZS6BKW), a 1/2λ 80m inverted L, (RX/TX 80m and RX down to 200kHz) and then a few RX only E-Field and H-Field antennas (MiniWip clone and a Hermes Loop). Whereas most had rotary dipoles on 40m and some even had 2 element beam (Yagi/Uda) antennas. 
And yes, my QTH was on a small suburban block surrounded by houses, which were positioned higher than my Antennas at the back and to the right. To the left they started to climb up gradually and the only real take off was into the NNW at about 280 to 320 degree.
Yes, I've been lucky to be able to get these antennas into the air (I do do dishes and other chores around the house which does give me AR-brownie-points)
Anyway, what I've noticed is that some of my local Amateur Radio colleagues don't seem to hear as well as I do. The complaint is about NOISE i.e., a noisy receiver.  I do understand that there are differences in antennas, antenna patters, antenna angle of radiation etc. but, most of the time those stations are being heard a lot better than me. However, when it comes to receiving, I seem to be able to hear station on the end of the contact a lot better. Well, It can't be the radio, as some actually have the same radio, an ICOM IC-7610. 

So what could it be? Why would I be able to hear stations a lot better? And I mean most often a lot better. (It could be that I have a better HSP with more HIPS 😏)

Maybe it is the way I use my receivers reception improvement arsenal and so I thought I'll share the way I use the tools my receiver provides to improve my listening pleasure.

So lets have a quick look at the way I conquer some of the noise.
Please note, that these are some of the things I do to help me overcome QRN and even some QRM. This is not a blurb about technical specs, even though I might throw some into the mix. This is more a HOWTO get the best SIGNAL to NOISE (SNR) performance out of your system, i.e. the system made up of the receiver/transceiver, the antenna and not to forget the antenna cable. Being able to receive and understand a station that does not move the S-meter up to the S9 point but still has reasonable good recovered audio quality even if the signal strength is as high as the band noise floor.

First up a disclaimer, I do not talk about the "OH NICE SIGNAL 59+20", sounding like John Laws and are > 3 kHz wide, no I'm talking about stations that are in or just above your received noise floor. And second, I refer to Single Side Band (SSB) but will show the effects on a CW signal to make it easier for me to show the effects.

We know that our receivers have BIG EARS. For instance the Minimum Discernible Signal (MDS) of my ICOM IC-7610 starts at about -122dBm and goes to over -140dBm [1]. Basically what that means is, that the radio is capable of hearing the proverbial fly fart. 
I would like to see the ambient noise floor at my QTH go that low but according to ITU P.372-12 the noise floor at my QTH should be about -91 dBm at 7 MHz (S6) (Note: an accurate S-Meter is required to confirm this). At the new QTH, here in VK5 land it is slightly better, by about 9dB.
Which is still a far cry away from -122 or even -140 dBm of which the IC-7610 is capable of achieving (sorry about the technical digression).

To show you what I'm talking about I've been taking some screen shots which show what can be achieved by applying the following, let's call them receiver-improvement-tools, to improve our receiving pleasure. The setup for the demonstration comprises a SDR-IQ withand the following software SpectraVue Ver. 3.39 and SBSpectrum Ver. 1.31. 
To have a steady signal I'll be tuning the radio to our local NDB (ground wave) at this frequency the noise is still high and the signal will be at a constant strength for the duration of the test. This makes it easier to show the effects of the applied countermeasure. 

So here is a list of the Tool Set I've been talking about.
        • RF-GAIN control
        • RX-Attenuator
        • AGC
        • RX-filter bandwidth
If we apply any or all of the above appropriately we'll be able to dig out signals that are difficult/marginal to hear/understand. What we are doing is what is know in professional circles as the improvement of the Signal to Noise Ratio (SNR). It does not mean that the signal strength will increase, most likely the signal strength will be lowered. However, not only the signal strength will be lower but also the received noise. And, this is the aim of the game,  if we apply our toolset appropriately we will reduce the noise level more than the received signal! And as such we will have improved our SNR.

Let's start with our receiver bandwidth (RX-BW), some call it the channel bandwidth, e.g. the frequency span the receiver is listening too. Receivers have a basic RX-BW of about 3 kHz. And most Voice transmissions are with a 2.8kHz transmit bandwidth (TX-BW) (yes, yes I did say most).
Now if we look at those number we can see the we already have 200Hz unused RX-BW and this 200Hz is filling our receiver with noise (RX-BW3000-TX-BW2800=200Hz of noise) Imagine if the transmitted signal would have a TX-BW of 2.4kHz and we would receive the signal with a 3 kHz RX-BW. We would now receive 600Hz of additional noise. To improve the quality of the signal we would need to get rid of the 600Hz of noise. 
In the olden (Golden?) day's we added X-Tal filters to limit the ingress of additional noise (a quite expensive exercise let me tell you). However, this is were the new breed of SDR's shine, they use "software" to do the filtering and some of those software filters are exceptionally good. Additionally they are very flexible, with soft or hard skirts etc. You'll be able to adjust the RX-BW quite easily to adapt to the transmitted signal.
So by adjusting the RX-BW to the TX-BW we would improved the SNR by 600Hz.

On a good receiver S-Meter, one would be able to see that the noise floor has dropped and the signal has gone up. 

Let's have a look how that would look in real life.


The grey area is the noise that we are receiving. Looking at the bottom CW signal we see that we can see (hear) it but it is quite buried in the noise. Taking away the noise by limiting the RX-BW we are able to see that the signal becomes more darker, almost black. It is now popping out of the noise and listening to the signal it is more audible, e.g. clearer and more intelligible. If we widen the RX-BW again it becomes clearly visible that the signal loose's  its intelligibility, as it is fading back into the grey again (picture below).


For me reducing the RX-BW is one of the most effective ways to improve the received signal quality. Even if I receive a signal that does not limit its TX-BW to say 2.8kHz I always run 2.7 or even 2.1kHz RX-BW on SSB. I even go as low as 1.7 or 1.5kHz RX-BW if the going gets tough but that has mostly to do with adjacent channel QRM. 
If you tune above 7.2MHz at night you will find some US Amateur Radio Operators there between the big AM BC stations. And those narrow filters make it possible to hear those station without to much interference from those potent signals.
What we have done is we have limited the receivers SIGNAL+NOISE ingress e.g. we've improved the SNRThe net effect is that the SIGNAL we are interested in, SOUNDS clearer/louder.
 
Another tool in our receiver-improvement-tool is the Automatic Gain Control, the AGC. Most modern Amateur Radios have the ability to adjust the TIME CONSTANT (ATTACK TIME) of the AGC.
The below picture shows the AGC disabled and then enabling the AGC, the noise disappears and the signal pops up. It is worth while playing around with the AGC time constant. This is a bit of an art form and it is quite different between radios and the design of a radio. I have three different settings on my radio for different noise events/modes. I have a slightly faster AGC recovery time for thunderstorm/lightning QRN then I have for quite band conditions on 10m. Also I have different timing setups for different modes (SSB, CW, DIGI).



Switching the AGC off and riding the RF-gain can also improve our listening pleasure. Below you can see me adjusting the RF-gain manually (this is called riding the RF-Gain) to bring the signal out of the noise. However, as you can see from the above picture, a proper adjusted AGC does do a better job than I can do.



The next picture show a combination of AGC and manually adjusting the RF-gain.


I wish it would always be that easy.

Instead of ridding the RF-gain, most radios have the ability to add predefined attenuation. The below picture show similar results as using RX-BW limiting and predefined attenuation switched in and out.


Below is a good view of the AGC in action. As soon as there is no signal, the AGC increases the gain (darker grey), but as soon as the signal shows up the AGC reduces the gain enough for the signal to pop out of the noise.


So, as you can see we have a great arsenal of tools available to BETTER our receivers ability to get the desired signal out of the noise, or to phrase it more appropriately, to ease the HSP between our ears to only work on the SIGNAL and not needing to apply filters to remove the noise (remember the HSP has limited HIPS).

Please remember that I used a CW signal for display purposes only, this will work equally well for SSB and even for some DIGITAL modes.

On 7 MHz (40m) and below I use between 9dB and 24dB attenuation as atmospheric noise levels are high on these bands. Start with whatever you feel comfortable with. Next I'd setup the filter bandwidth to remove the higher pitched noises, the noise above 2.4kHz and then I adjust the filter to cut out the low rumbles, the noise below 100 kHz. My RX filters are set at 2.7 kHz, 2.1 kHz and 1.7 kHz for SSB, low cut at around 100 - 200 Hz for example, my 2.1 kHz filter bandwidth is setup as 200 - 2300 kHz. And last but not least, adjust the AGC to your liking. My preference SSB AGC settings are Fast 1.2, Mid 2.0 and Slow 6.0.

The AGC, RX-gain and RX-attenuation are basically controlling the overall system gain, which does includes the gain from your Antenna System (Antenna, Cable, ATT, LNA etc.).
The RX-gain/attenuation values will be different for a lot of situation it depends on a lot of factors i.e. the mode of operation, what antenna is being used, the frequency of operations, the operator mood, the time of day, band conditions etc. etc.
However, as you get more and more familiar with your radios rx-tool-set you will not only get more and more pleasure out of your receiver (station), you will also manage to finish more contacts with ease.

Remember, you will need to play around with the setting until you find a setting that sounds/feels right to you. The above are setting that work for me and should only be seen as a guide. Your environment, radio, antenna, HPS and HIPS are different. 

Let me mention a few more tools that some of the radios provide or are external items that would improve our listening pleasures. An additional AF filter (Equaliser) can help in reducing noise, Digital Noise Reduction Systems (NR), which most newer radios have built in. 
Note however, that some noise should be removed before it hits the AF stage of your receiver. Some of the digital (DSP) Noise Blankers are quite impressive and then there are the Notch Filters, either the automagic ones or the manual ones (the manual dual notch filter in the IC-7000 is quite amazing).
 
There is one (two) more thing(s) I would recommend and that is using a decent speaker or two if your transceiver has two receivers. And lets not forget a good set of headphones, which will bring the recovered signal directly, without any additional noise to the HPS. 

There are of course additional measures we could apply. Like the use of a low noise receiving antenna or the use of antenna diversity.

I worked my best DX with a noisy vertical as a TX antenna and a quieter RX antenna (see above my antenna arsenal).

73 and good DX.

Footnotes:

1. The sensitivity of the receiver is dependend on the size of it ears, e.g. the RX Channel Bandwidth. The smaller that bandwidth the higher the sensitivity, the better the SNR!

HSP  = Human Signal Processor (normally found between the ears)
HIPS =
Human Instructions Per Second (it has been said that a man can only do one HIPS
DX   = Normally used to refer to a station on another continent. From the old telegraphy  abbreviation for Distance eXchange.


SBSpectrum V.1.31 by Peter Martinez G3PLX
SpectraVue V. 3.39 by RFSPACE Inc.
SDR-IQ by RFSPACE Inc.
DXing

NOTE: This has been reposted from my old VK1HW web page and was initially written in 2018.
© ¼ ½ ¾ ⅜ ⅝ @ π ω µ Ω ε η λ °