Creating a Custom WSPR Spot Server

WSPRNet is a great free service and resource for aggregating WSPR spot data. It provides archives of the data which can be downloaded and analysed, and I have done this to some success previously (see here and here). However one thing this approach lacks, is the ability to view and analyse spot data in real-time. The existing method is inherently limited to the schedule at which I can download the data from WSPRNet.org, which in the interests of politeness is 1 month (when I remember).

Unfortunately, there is no publish api I could subscribe to get a feed of spots in real time. If you know of one, drop me an email. This left me with a couple options, download the data frequently from WSPRNet, which is not very polite and generally in poor form. Or try and stand up my own spot aggregation service.

Modifying WSJTX

To make this work I modified the original WSJTX and WSPR applications to upload to my spot service. Ideally this would be done in addition to uploading to WSPRNet, but in the interest to time, and to see something work. I made the existing code take an extra parameter of where to upload the spots too. This involved building WSJTX from source as outlined here, editing the code which does the uploading, as well as adding an extra field to the configuration menus to allow for setting where to send the spots to. Below is a screenshot of the additional field

Screenshot of the modified WSJTX with additional field for the Spot URL

Saving the spots

I made use of Googles Cloud functions and Data store to create the service to store the spots, now that I had the ability to upload them where ever I wanted. These tools were chosen, as I didn't have to worry about infrastructure or servers, and more importantly they had a generous free tier which should do nicely for this.

WSJTX makes a simple HTTP GET request to the service, with the data for each spot as query parameters. When I get some time, I might modify WSJTX to batch up spots as it makes a request for every station heard which is a little excessive in my opinion. But for now I just wanted something which worked. I also ensured that I made a request out to WSPRNet.org for each spot, to ensure that everything was counted correctly.

Putting it all together

To make use of this, you will need to build WSJTX from scratch, following the instructions here, with one small change. Once the code for WSJTX has been checked out apply this patch file, before continuing the build.

Once WSJTX is built and configured, simply set the spot upload URL to: http://us-central1-wsprstats-163301.cloudfunctions.net/wsprGET?

and that's it. You shouldn't notice any difference, and spots should still appear on WSPRNet as usual. Once I've created a way of viewing them I'll update these instructions.