Tuesday, November 25, 2025

Listening to WSPRs

Listening to WSPR
Listening to WSPR

Last month I talked a bit about an interesting little side bar in amateur radio called WSPR which allows amateur radio operators and earth scientists to check out what's going on in the earth's atmosphere when it comes to radio propagation.   

Obviously I am quite intrigued by the idea of being able to tap into this myself, both in the sense that I wanted to listen in and report on what I was hearing, but I also want to contribute to the general WSPR beacon network and do some transmitting myself.

To start getting my feet wet on this, I decided to take this step by step and start by focusing on just listening in on what's going on over the airwaves.  


So, How Do You Listen In? 

To simply listen in, I could use a fairly simple Software Defined Radio (SDR) dongle, much like the one that I used for my ACARS project, but since I do want to be able to do some transmitting at some point, I needed something that could be able to receive and transmit. 

Thankfully there are a number of low powered transceivers out there that do behave in a similar way as a SDR. After some investigation, I decided to try out a couple of possible candidates, a HackRF One and a QRP Labs QDX. 

During my experiments, I found both receivers to be very well constructed, had a very well established support communities and fairly easy to set up. 

One issue that I had was with the QDX. When I tried to receive signals on it. I found that the signal levels coming in was at a fairly low signal level, which is not an ideal situation when you are trying to receive weak signals.

 On a more positive note, the QDX was easier to set up for transmitting than the HackRF.  Based on the online community comments for the QDX, I am sure that there is some sort of adjustments that I need to do on the QDX to make it more sensitive to signals. However since the HackRF was receiving signals almost as soon as I plugged it in, I settled on setting up my WSPR station with the HackRF. I do fully recognize that the setting the HackRF to transmit WSPR might be a bit of a challenge, but we take a look what we can do there at some point down the road. 

HackRF One
HackRF One

 
Setting up a HackRF to Receive WSPR

To get things started, we needed to have the following items on hand: 

  • A HackRF One SDR
  • A Windows computer with USB port
  • An internet connection
  • An antenna suitable for HF frequencies (I'll chat about the antenna when I start looking at transmitting WSPR, but for now I've found using a length of wire hanging up in a tree will do a good job of receiving WSPR)

As part of this process we will be installing the following software applications:
  • SDR# - Which the computer will use to directly interface with the HackRF
  • WSJT-X - Which will be used to decode the WSPR transmissions and post them up on the WSPR database
  • VB-Audio Virtual Cable - Which will be used to connect SDR# and WSJT-X


Install HackRF Drivers

Zadig
Zadig

First, I needed to get the HackRF recognized by Windows. To accomplish this I completed the following steps:

  1. I downloaded and installed the Zadig driver installation tool (a quick internet search will give you an install link). 
  2. I connected the HackRF to one of my computer's USB ports
  3. I opened Zadig
  4. Went to OptionsList All Devices
  5. Selected HackRF One from the dropdown menu
  6. Selected WinUSB as the target driver (should show in the box with the green arrow)
  7. Clicked Replace Driver or Install Driver
  8. Waited for the installation to complete

Installing SDR#

One of the main drawbacks of using a HackRF versus the QDX is that I can't directly access the transceiver directly through WSJT-X. In order to access the HackRF itself , we need to use a SDR control program like SDR# (SDRSharp).

To install SDR#, I needed to do the following steps:

  1. Download the SDR# package from https://airspy.com/download/
  2. Extract the ZIP file to a folder (e.g., C:\SDR)
  3. Open the extracted folder and run install-rtlsdr.bat (this installs additional drivers)
  4. Download the HackRF plugin for SDR# if not included
  5. Launch SDRSharp.exe

Configure SDR# for HackRF

One the program has been installed, I needed to configure SDR# to talk to the radio. 

SDR#
SDR#

To do that, in SDR#, I clicked the Source dropdown at the top and did the following:

  1. Select HackRF
  2. Click the gear/configure icon next to the Source dropdown
  3. Set the sample rate (2.5 MSPS or higher works well)
  4. Enable RF Amp and adjust LNA Gain and VGA Gain as needed (I started with moderate settings and adjusted as needed)
  5. Click the play button to start the SDR

Installing WSJT-X

As I mentioned before, WSJT-X is the software that will decode WSPR signals. Installation is fairly straight forward:

  1. Download WSJT-X from https://wsjt.sourceforge.io/
  2. Run the installer and follow the prompts
  3. Launch WSJT-X after installation


Installing  Virtual 
Audio Cable


When in operation, WSJT-X reads in the audio signal from a transceiver in order to do it's decoding. In order to make that happen, we need to fool the computer into thinking that the transceiver is a sound card source. With my main transceiver I use an external USB sound card that feeds in the audio signals, however, I don't really have the desire to hook up another box to my set up. 

After some browsing around I found a software based solution from VB-Audio which will do the same thing as my USB sound card

I installed the VB-Audio thusly:.

  1. Downloaded and install VB-Audio Virtual Cable from https://vb-audio.com/Cable/
  2. Installed the software (you may need to restart your computer)
  3. After installation, I now had a new audio device called "CABLE Input" and "CABLE Output" on my PC

Once I successfully installed the virtual cable, it was time to hook everything up

Hooking Everything Up

Configure SDR# Audio Output

  1. Back into SDR#, I clicked the audio settings icon (speaker icon)
  2. I then set the Output device to CABLE Input (VB-Audio Virtual Cable)
  3. And set the audio output to around 48000 Hz sample rate

Configure SDR# for WSPR Reception

  1. Still in SDR#, I set the mode to  USB (Upper Sideband) mode
  2. Set the filter bandwidth to approximately 3000 Hz
  3. Tuned to a WSPR frequency (in my case I set it for the 20 meter band, but I've included a list of  common frequencies below)
  4. And adjusted the RF gain settings for good signal without overload

Common WSPR Frequencies (dial frequencies in USB mode):

  • 160m: 1.836600 MHz
  • 80m: 3.568600 MHz
  • 40m: 7.038600 MHz
  • 30m: 10.138700 MHz
  • 20m: 14.095600 MHz
  • 17m: 18.104600 MHz
  • 15m: 21.094600 MHz
  • 12m: 24.924600 MHz
  • 10m: 28.124600 MHz

Configuring WSJT-X

Swinging back to WSJT-X I selected FileSettings and did the following:

Audio Tab:

  • Soundcard Input: Select CABLE Output (VB-Audio Virtual Cable)
  • Soundcard Output: Select your regular speakers/headphones (for monitoring)
  • Set both to 48000 Hz sample rate

Radio Tab:

  • Mode: None (we're using SDR# as the radio)
  • Leave other settings at defaults

Reporting Tab:

  • Entered I entered my callsign and grid square 
  • Checked  Enable spotting to WSPRnet on the application desktop (This allows me to send my received signals to the WSPR database)

General Tab:

  • Selected WSPR as the mode.


Start Monitoring!

Finally I'm ready to start listening to WSPR signals, to make that happen I had to do the following:

  1. In SDR#, tuned to a WSPR frequency (in my case 14.095600 MHz)  in USB mode
  2. In WSJT-X, clicked Enable Rx (the green button)
  3. After a while I started seeing decoded WSPR signals appear in WSJT-X and more importantly, my station started showing up on the WSPR reporting site! 



Some Things To Consider

Time Synchronization (This is Critical!)

WSPR requires accurate time synchronization within 1-2 seconds. To keep things in sync I set up a Scheduled Task to resync the time on the computer each day.

I set that up by doing this:

  1. Opened Task Scheduler (you can search for it in the Start menu)
  2. Click "Create Basic Task" in the right panel
  3. I named it "Time Resync"
  4. I then set the trigger to run daily. 
  5. Selected "Start a program" as the action
  6. In the Program/script field, I entered: w32tm
  7. In the Arguments field, I put: /resync
  8. Clicked Finish

Listening In

So now I've got a WSPR receiving station that looks to be working quite well. While the majority of the stations I've been hearing have been primarily based in North America, I have  caught a few stations from Europe and South America, pretty impressive considering that these stations are running at a very low level power. 

The next thing to tackle is how to transmit WSPR out to the world. 

Tuesday, October 21, 2025

Whispers On The Air


A New Toy For A Radio Nerd

If you've been a long time reader of the blog, you know that I've always been a bit interested in all things radio. While I do hold an amateur radio license, I've found myself drawn more towards picking up the strange and interesting things that are found on the air, be it my more recent experiments in ACARS, or hunting for weather balloons and gliders, There was one thing that was a common thread in all of this - I was merely listening and reporting on the signals that I was hearing. 

While I definitely enjoy listening in on what's going on, as a Ham radio operator, I am also keen on being "heard" out there. While I still manage to get on the air (though not nearly as much as I would like) I need to be physically at the controls of my radio while transmitting. While being in physical control of the radio is a mandatory requirement of being a ham radio operator, I started to get a bit intrigued by an area of the hobby where I don't necessarily need to be at the controls during transmitting. That part of the hobby revolves around the concept of running low powered beacons, which are primarily used as a service to fellow amateur radio operators for them to map out current radio propagation. 

Amateur radio operators have long chased distant contacts and rare signal paths but for the longest time that was always a bit of a challenge since radio propagation is always something that is continuously changing.

In recent years there has been a huge explosion in the use of new digital modes, with FT8 being the most popular mode, and is on track (if not already) to surpass the more traditional amateur radio communication modes of morse code and single side band voice communication. As part of this boom of digital modes there was introduced a new digital mode, which turned the traditional pursuit of one on one conversation into something that is more akin to scientific exploration. This new mode, called WSPR (pronounced appropriately "whisper") represented a fascinating intersection of cutting-edge digital signal processing, global collaboration, and the age-old fascination with how radio waves travel around the world.

What Is WSPR?

WSPR, which stands for Weak Signal Propagation Reporter, is the perfect name for what it does. This digital radio protocol was specifically designed to test and map radio propagation conditions across the globe using signals so faint they would be completely inaudible to the human ear.

Unlike traditional amateur radio modes where operators engage in conversations with one another, WSPR stations act as automated beacons, continuously transmitting and receiving brief messages that contain just three pieces of information: (callsign, location, and transmission power level). Though simple, these transmissions create something far more valuable than individual contacts - they generate a living map of how radio waves are travelling around the Earth at any given moment in time.

The Power of Weakness

What makes WSPR truly remarkable is its ability to decode signals that exist far below the noise floor. While a human ear might hear nothing but static, WSPR can successfully decode signals that are far weaker than the background noise. This extraordinary sensitivity means that stations can achieve global communication using transmitter powers as low as one watt - something comparable to a small LED flashlight.

This capability opens up possibilities that would have seemed like science fiction just a few decades ago. Ham radio operators, using tiny transmitters with nothing more than a simple wire antenna in their backyards can have their signals detected on the other side of the planet.

It's All About The Timing 

WSPR stations alternate between transmitting and receiving on even and odd minutes, creating a global network where everyone takes turns speaking and listening. This coordinated dance allows thousands of stations to share the same frequencies without interfering with each other, while maximizing the chances of successful signal reception.

The technical specifications are equally impressive. WSPR uses an extremely narrow bandwidth of about 6 Hz, roughly the width of a single piano key's frequency range. This narrow focus is what enables the protocol to extract coherent signals from what appears to be pure noise. 

When a WSPR station successfully decodes a transmission, the receiving station typically uploads this information to a central database at wsprnet.org. This crowdsourced data collection creates a real-time, global map of radio propagation. This allows amateur radio operators to see which paths are open, which frequencies are working the best, and how conditions are changing throughout the day.

The applications of this data extend beyond amateur radio. Scientists study WSPR data to understand ionospheric behavior, solar effects on radio propagation, and other atmospheric phenomena. The protocol has become a valuable tool for research that might of otherwise required expensive specialized equipment.

Thinking Up A Plan 

The main thing that appealed to me is that WSPR requires minimal operator attention. Unlike the traditional modes that I mentioned earlier, which require someone be present at the radio, WSPR stations can run fully unattended. The fact that it only requires very low power to work also meant that I didn't need to tie up my main transceiver, only a fairly small transmitter was needed. 

Since I had some experience with Software Defined Radio (SDR) USB dongles on my other radio projects, I wanted to do something similar for my proposed WSPR beacon, since this allow me to have everything run off an old laptop or Raspberry Pi that would look after all duties (transmitting, receiving and posting results to the central database). 

The issue is that the majority of the more common SDR's are receiver only, with a lot of the SDR's that can transmit being fairly high powered (Flexradio for example), and expensive. Thankfully there are a handful of USB based SDR transceivers that are actually pretty cheap and provided the power I needed. 

Three in particular that I looked at where:

  • HackRF One (~$300) - 1 MHz to 6 GHz, half-duplex, 20 MHz bandwidth, 8-bit ADC
  • LimeSDR Mini (~$159) - 10 MHz to 3.5 GHz, full-duplex, 30.72 MHz bandwidth, 12-bit ADC
  • ADALM-PLUTO (PlutoSDR) (~$150-200) - 325 MHz to 3.8 GHz, full-duplex, 20 MHz bandwidth, 12-bit ADC

After reading some reviews and looking up what the current availability was on Amazon for a reasonable price, I settled on ordering the HackRF One, since I found one on Amazon on sale for 40% off. 

So, after laying down my money, I now need to wait for it to arrive (currently it's in some warehouse in China). Since I am now playing a bit of a waiting game, I'll finish off here, but my plan is to have a working WSPR station up and running which I hope to be able to tell you about next month. 

Monday, September 29, 2025

Thrift Store Archeology

 

Optimus CTR-112

One thing that I seem to have gotten into the habit as of late is popping into a thrift store whenever I make a trip into the big city - these trips are usually made under the guise of tagging along with the better half whenever she needs something from the craft store or she's taking a card making class, which translates into a guaranteed hour or two of free time on my part.

Usually I treat these trips as a scouting mission for the raw ingrediants I need for the various YouTube channels that I've sparked up in the past couple of years (I mentioned these channels back in my December 2024 post).  

From the standpoint of my thrift store trips, this usually meant spending a lot of time hunched over a bottom shelf leafing through old record albums looking for off beat recordings to feature on my music channel. 

Since I am more or less migrating into old man status, I hope you can permit me an old man rant 😆.  Why on earth do thrift stores put the kids videos on the top shelf - which are more or less out of reach of most kids, and put the records on the bottom shelf, of which the key demographic can be charitably described as "experienced". This seems to be designed to make frustrated kids and have older folks look like they are auditioning for Quasimodo when they leave the store. Alright, I'm done ranting (for now). 

Since the other channels rely heavily on VHS tapes for their source material, I'm also always on the look out for any cast away VCR's that may be lurking in the electronics section. I find that VCR's are starting to become extremely rare these days, which I completely understand and it seems that it's all part of the natural progression for vintage electronics. For example, if I could take a bit of a casual poll of the current inhabitants of the thrift store electronics shelf, I would predict that DVD player are now on the endangered species list.  

Regardless, whenever I see a VCR, I always grab it since I do have a real need to always have a stash of them on hand - if they are working, that's great, but if they don't, they are always a great source of parts for projects.

While the bulk of the electronic items that I find on the shelves are what I could consider to be "junk", you do find some very interesting stuff hidden on the shelves. 

Argus Slide Trays

Sometimes I find things that make me stop and think it has been probably more than a few decades since I last saw an item that's on the shelf in front of me. 

It could almost be anything like a box of 35mm film slide trays for a slide projector (but oddly, no slide projector nearby?) or a Radio Shack branded Walkman clone tape player (I don't think I haven't seem a portable tape player like this since the early 1990's). 


Sometimes you do come across some more "modern" cast off, which if you gave it a quick glance, you would immediately dismiss just as another e-waste candidate, but a second look often reveals something a bit unique, such as the Tiger Electronics VuGo shown above. While it had the look of a cheap handheld game, it was actually an early digital video recorder, and portable video player. 


Since I've become more aware of these little nuggets of gold, I am starting to film these items as I come across them. My plan is to add these up to this blogs YouTube channel to as short videos that showcases the item that I found along with a short history of the item. A bit of a short history of forgotten electronics, if you will....   

At the moment I'm just in the compiling stage of this project. Once I've got a critical mass of items to talk about, I'll start making this a regular item for the site. 

Stay Tuned. 

Wednesday, August 27, 2025

Finishing Up The Color Thermometer

 

Finished Color Thermometer

In the last post I looked at building a thermometer that showed the temperature and humidity of a room through the use of a color display that indicated the relative comfort level of the room, using an Arduino and a couple of extra components. 

While the thermometer worked quite well, it really did just look like just a bunch of wires that glowed. To have it be part of polite society, it needed to be dressed in more appropriate attire. 

Since the circuit is a fairly compact design, the thermometer would lend itself well to being housed a fancy box that could look pretty sitting on a shelf. On a recent clean-up of the shop I noticed that I had few pieces of red cedar and popular sitting in the scrap bin.  I always liked the look (and the smell!) of red cedar so I always try to avoid throwing of it out on the off chance I had use for it. As luck should have it, the scrap pieces looked to be a good size to house the Arduino. 

Designing The Case  

With my source materials acquired, I set about designing my enclosure. Basically the enclosure had to:

  • Of course contain the Arduino, Temperature sensor and the LED strip.
  • Have a way to mount the LED strip so that it seamlessly integrates into the case
    • To do that I decided that the case should have a slot cut into it to mount the LED.
    • To add a bit of a diffusion to the LED's the slot would also be cut to accommodate a plastic strip to mount in front of the LED's 
  • Provide proper air flow so that the temperature sensor can properly detect the room conditions
  • Be simple, basically the case should just be a your basic box.
With the criteria defined and based on the wood I had on hand, I sketched out a quick design



Bill of Materials 

  • Two 1x4x6.5 inch pieces of popular
  • Two 1/4x4x6.5 pieces of red cedar
  • One 1/8x3/4x6.5 piece of clear acrylic 
  • Frosted glass paint
  • Wood glue
  • Furniture felts
  • Small rubber grommet

Tools Required
  • Table saw
  • Router with a 3/4 inch straight bit
  • Wood clamps
  • Drill Press
  • Glue

Case Assembly

I started off by cutting out the 4 pieces of wood that will be used to make up the case

Wood parts

Next I marked out the cavity that will be used to house the Arduino and sensor on the two popular pieces and routed out the cavities

Marking out the cavity

Cutting out the cavity

Cut out cavities

Once everything was cut out, I then glued the two Poplar pieces together along with one of the Red Cedar pieces (which will serve as the top for our case)

Gluing things together

Gluing the top

Gluing things together

 Once the glue hard dried. I next had to put in a grove near the top of the case. To do that I took a 3/4 inch straight bit on my router and I cut a 1/2 inch deep groove about one inch down from the top of the case along the front. This groove needs to be deep enough to accommodate the LED strip and the 1/8 inch thick acrylic strip. 

Routing the strip

Routing the strip

LED Test Fit

Completed Groove

One problem that I found with the groove is that I did have it come out of the sides of the case which didn't really look very good as far as I was concerned so I really wanted to have it look a little bit better.

To solve that I cut out and glued in a couple of red cedar "plugs" to fill the ends of the grooves but still left some space on the end for the acrylic strip to be flush against the front of the case. 

Acrylic strip test fit

Cutting out plugs

Plugs installed

At this point, the main part of the case is now assembled. 

Perfect time to give every a quick sanding to neat everything up. 

Quick Sanding

With the groove in place I next cut a 3/4 inch wide strip of acrylic and cut it to the length of the case.

After a quick test fit to the case (and some trimming to make it fit better) I then gave the strip a coat of glass frosting paint to get a more diffused look when the LED's are lit. 

Cutting  acrylic

Doing a test fit

painting the strip

To complete the construction of the top part of the case I finished off by drilling in a few vent holes so that I could have some air flow for the temperature sensor.

Top of the case

Drilling out the vent



Installing the Innards 


The next step in the process was to put all the electronic bits into the case. I started off by looking at what would be best way to mount the Arduino.  To do this, I decided on mounting it to the remaining piece of red cedar that I hadn't yet glued to the case. 

After doing a test fit of the Arduino to the bottom plate I determined what would be the best place to mount the Arduino I then cut out and glued a couple of wooden rails to the red cedar, which would serve as a mounting point for the Arduino. 

Mounting the Arduino

Gluing in the Rails

Once the glue dried, I then mounted the Arduino to the base with a few screws.

Mounting the Arduino

The next thing to do was to mount the temperature sensor into the case. Since I drilled the ventilation holes into the top of the case, it makes the most sense to have the sensor mounted as close as possible to the vent. To do this I glued another small wood block to the top of the case and attached the sensor to the block.

Sensor Mount

Sensor Mounted


Finally I mounted the LED's into the groove that I had earlier cut, luckily the groove also opened up an access to the internals of the case, so the wiring for the LED was pretty easy to feed through 

I glued the LED strip in place followed by the acrylic strip 

Installing the LED strip

Installing the LED strip

Installing the acrylic strip



With all the various components mounted the next step was to wire everything up and buttoning up the case. 
Wiring up the circuit

Wiring up the circuit


One thing I failed to note was how I planned to power up the Arduino once it was sealed up. 

To power the Arduino, I chose to power it through the Arduino's USB connector, which will also give me an opportunity to do any tweaks to the programming that I might want to do in the future. 

To provide power access, I usually would drill a half inch hole into the back of the case, but as a lucky coincidence, one of my popular pieces had a knot that popped out that was the ideal size. So I fed the USB cable through the knot hole and used a rubber grommet to neatly cover the hole.

Installing the USB cable

Finishing the wiring

 Finally I glued the rest of the case together

Gluing it all together

Gluing it all together

I finished up the job with some varnish and after installing some felt pads on the bottom, the project is done!

Varnishing

Felt pads

At the moment the thermometer is still on my desk here at work giving my a nice visual interpretation on the office climate.  It's certainly been a bit of a conversation piece. 

Next month, I going to revisit a topic that I first posted about a few years ago.