SparkSDR meets GridTracker (and more)

714 views
Skip to first unread message

AndyZ K1RA

unread,
Nov 22, 2020, 9:46:20 PM11/22/20
to SparkSDR
On my quest to make SparkSDR more versatile and compatible with apps that already run with the original WSJT-X software, I've written an app to convert websockets to the WSJT-X UDP message protocol.

My main goal was to have a local and more real-time mapping feature for SparkSDR spots.  The built-in map is OK, though small and not interactive.  PSKreporter is great, interactive and filter rich, but is slow and not always available.  Bring in GridTracker


This has MANY features, including many map types, color coded band spots with hover over spot text, band/mode filtering, country, grid, county tracking and more!

To see SparkSDR working in conjunction with my SparkSDR2WSJTX-UDP app and GridTracker, see a short video I ran here


You can download my app here


It is a standalone Windows executable which can be copied and run from any folder.  I've tested this with SparkSDR v 2.0.4.2. 

To run my app, first go to SparkSDR and General Settings > Station and ensure Websockets are Enabled.  Next open a CMD prompt and navigate to the directory/folder of the SparkSDR2WSJTX-UDP.EXE app.  It is run as follows using the following command line options

sparksdr2wsjtx-udp YOURCALL GRID6 SPARKIP UDP_IP UDP_PORT [CACHETIME]

where

YOURCALL = your call sign (ex: W1XYZ)
SPARKIP = IP address of SparkSDR server (ex: 192.168.0.234)
UDP_IP = IP address of client app (ex: 127.0.0.1)
UDP_PORT = UDP listener port of client app (ex : 2237)
CACHETIME = optional # (>=0) minutes to expire calls, default = 5

Technically my app should work with other programs like JTAlert that can ingest the WSJT-X UDP message stream, but I've not used that app before.

Comments, questions, suggestions, successes, or failures please follow up here.

Thanks & 73

andyz - K1RA

Josh Logan

unread,
Nov 22, 2020, 11:15:22 PM11/22/20
to AndyZ K1RA, SparkSDR

Looking good again!

image.png

I did learn if you have WSJT-x running it helps to click the arrows to pick the new source:
image.png
image.png

73, KD7HGL
Josh



--
You received this message because you are subscribed to the Google Groups "SparkSDR" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sparksdr+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/sparksdr/777a541a-8e88-4a23-bad4-da2a8997687cn%40googlegroups.com.

f6ehp

unread,
Nov 24, 2020, 4:44:53 PM11/24/20
to SparkSDR
Hi All,
I tried with sparksdr 2.0.3.6 , gridtracker connects to WSJT-X, but doesn't see sparksdr2wsjtx-udp
I couldn't find the link for the 2.0.4.2 release That maybe necessary.
73.

ahop...@googlemail.com

unread,
Nov 24, 2020, 5:04:05 PM11/24/20
to SparkSDR

f6ehp

unread,
Nov 24, 2020, 5:29:20 PM11/24/20
to SparkSDR
Thanks Alan, With this release, gridtracker receives sparksdr ! wonderfull ! Thanks to Andy also.
73 Pascal

AndyZ K1RA

unread,
Dec 28, 2020, 10:55:32 PM12/28/20
to SparkSDR
I've updated my SparkSDR2WSJTX-UDP program that interfaces with GridTracker and other similar programs that accept the WSJT-X UDP stream.  You can download here


I've fixed an UNDEFINED ARRAY error that caused the program to stop after a period of time.  Usage is as follows:

sparksdr2wsjtx-udp MYCALL GRID6 SPARKSDR_IP UDP_IP UDP_PORT [CACHETIME]

where

MYCALL = your callsign
GRID6 = your 6 digit grid square
SPARKSDR_IP = IP address of SparkSDR software (127.0.0.1 if on local PC)
UDP_IP = IP address of GridTracker client (could be 127.0.0.1 if on local PC)
UDP_PORT = IP address of GridTracker client (example: 2239 - see GridTracker settings)
CACHETIME = optional minutes before cache expires (defaults to 5)

73

andyz - K1RA

IV3DXW Claudio

unread,
Dec 29, 2020, 7:06:58 PM12/29/20
to SparkSDR
Hi Andy,
it works! Good
Also together sparksdr2dxc.

Tried also JTalert but no success.

Thanks
73 Claudio iv3dxw

IV3DXW Claudio

unread,
Dec 30, 2020, 6:47:10 AM12/30/20
to SparkSDR
Hi Andy,
in a long run (about 4hours) I see server get stuck.
After close and open GridTracker is again functional.
I don't find interesting log in \m0nnb\SparkSDR2\errorlogs folder to understand if the issue in SparkSDR side.

73 Claudio iv3dxw

server stuck.png

AndyZ K1RA

unread,
Oct 23, 2022, 8:59:48 PM10/23/22
to SparkSDR

For release SparkSDR2WSJTX-UDP v2.00, an application for taking FT8, FT4 and WSPR spots received over  SparkSDR  Websockets and formatting and forwarding them over the UDP network via the WSJT-X protocol to GridTracker (and possibly other similar apps). Download my app from my web site here:

https://k1ra.us/wp-content/uploads/sites/5/download/sparksdr2wsjtx-udp-v2.0.0.zip

Please let me know if you have any issues accessing it.

This new version is written in Python and the downloaded ZIP contains both a standalone executable tested on Windows 10, as well as the Python source code and requirements.txt file. The later could be used with the Python interpreter and should run under Linux or MacOSX.  I've not tried that on my Ubuntu system, so I'm looking for any feedback for those who try using the source code directly.

> sparksdr2wsjtx-udp.exe -h                                    
Usage: sparksdr2wsjtx-udp.py -m MYCALL -g MYGRID6 [-c cache_expire] [-s sparksdr_ip] [-b broadcast_ip] [-p broadcast_port] [-d] [-v] [-h]
-m MYCALL (mandatory, ex: -m K1RA)
-g MYGRID6 (mandatory, ex: -g FM18cr)
-c cache_expire (optional, minutes, ex: -c 5) [default=5]
-s sparksdr_ip (optional, ip address, ex: -s 192.168.1.123) [default=127.0.0.1]
-b broadcast_ip (optional, ip address, ex: -b 192.168.1.234) [default=239.1.1.1]
-p broadcast_port (optional, udp port, ex: -p 2239) [default=2237]
-d (turns on debug messages)
-v (prints version)
-h (prints this help)


The only mandatory command line options are -m followed by your call and -g for your 6 digit grid.  

By default the app looks for the SparkSDR Websocket on same computer, localhost at 127.0.0.1. If your SparkSDR is running somewhere else on the network use the -s command line option to specify its IP address.  Also by default the app is set to use multicast to IP 239.1.1.1 and UDP port # 2237 to broadcast WSJT-X-like spot information over the network.  I've set my GridTracker up to use multicast as follows, see circled in red here:


You could also use the -b option to redirect the spot info broadcast to a specific IP address.  -p can be used to change the broadcast port number.

I've enabled Push Pins within GridTracker to give its look and feel a local and more speedy PSKreporter map style view, see circled in red:


The -d command line option is useful to show SparkSDR Websocket data and decoded messages sent as well as any rejected decodes.  

The app should handle reconnecting to SparkSDR and handle other tuning or band/mode changes, though I've not tested all possible combinations. Once a call is spotted on a frequency (kHz) it will not be resent over the network to GridTracker until the cache timer (5 minutes default) has expired for that hashed call+frequency.  

Ctrl-C should exit the program.

> sparksdr2wsjtx-udp.exe -m K1RA -g FM18CR -d -s 192.168.2.148
sparkdxc2wsjtx-udp version 2.0.0 by K1RA
Opening Connection
Message Received: {"cmd":"spotResponse","spots":[{"time":"2022-10-24T00:32:30Z","frequency":7075494.0,"tunedfrequency":7074000.0,"power":0,"drift":0,"snr":9,"dt":0.1,"msg":"W3MEB W0LEN -11","mode":"FT8"
,"submode":"","distance":null,"call":"W0LEN","color":0,"locator":"","valid":true,"offsetFrequency":1494.0,"rxid":11}, ...
003230   7074.0  FT8       W0LEN 1494   9       W3MEB W0LEN -11
003230   7074.0  FT8        NG8Y 2110  16 EM79  CQ NG8Y EM79
003230   7074.0  FT8        N5RN  715   5 EM34  TY0RU N5RN EM34
003230   7074.0  FT8      KC9IZF 1567  -9 EN54  KE8RS KC9IZF EN54
003230   7074.0  FT8        KB8V  814   5       EC3A KB8V R-20
003230   7074.0  FT8       N2YCH 2395   6 FN31  CQ AK N2YCH FN31


Here's a screenshot of my GridTracker with my SparkSDR being fed by 2 Redpitaya's where map spots can be viewed here:


There you can see how I setup and use the Map View Filters on the right side of that main screen page. This is for viewing all modes, bands and live.  

By clicking on the RX Calls section on the right of the main screen you view Live Decode details, time stamp, band. mode call, etc. as seen here:


Please let me know if you have any issues and comments, questions, feedback welcome.

73

andyz - K1RA

RD Powers

unread,
Feb 23, 2023, 8:53:31 PM2/23/23
to SparkSDR
Wow!  Thanks, Andy.  Somehow I missed the Oct '22 announcement!

I pulled down the zip file, and it too (like the DX Cluster app) is working flawlessly on Linux (Debian Bullsye).

I'm really enjoying looking at four bands worth of FT8 spots in real time using GridTracker.  

It's something I've been wanting to have for a real long time. 

Now, if I could only work everyone I hear, lol! 

Not likely with the two watts from the Hermes Lite 2 and my simple wire antenna, but I'll keep plugging!

Regards,
RDP

PE3ES / F4VTQ

unread,
Feb 24, 2023, 10:40:49 AM2/24/23
to SparkSDR
Very interesting and helpful software. Today I found this older post and installed Gridtracker v1.23.026 first. It sees and plots my JTDX wspr spots coming from a band hopping QDX on the same computer.
Then I unzipped the  sparksdr2wsjtx-udp.exe and now run it with my Call / Grid and -d
It sees the spots from my first SparkSDR 2.0.8.17 connected to a multiband Hermes Lite v2. It does not connect to Gridtracker.
It does not see the spots from my second SparkSDR 2.0.943.0 connected to a multiband SDRplay RSP1a decoding wspr happily.

UDP is rather new to me (practically that is), I have only used it in combination  with WSJTx/DXKeeper/HAMspots JTAlert when I am actively transmitting (mostly FT8, not WSPR).

So I am not sure how it would handle multiple UDP streams coming from different software running in parallel, sometimes only different in version number.

Should I set all sources of spots to the UDP settings you are showing and then set Gridtracker to the same UDP ip + port ?
In my case set JTDX and Gridtracker to  IP 239.1.1.1 and UDP port # 2237 and Multicast ?

Should your software see both my SparkSDR spots ?

I will experiment a bit and new questions might crop up.
Thanks
Erwin

Op vrijdag 24 februari 2023 om 02:53:31 UTC+1 schreef pro...@yahoo.com:

RD Powers

unread,
Feb 25, 2023, 7:33:06 AM2/25/23
to SparkSDR
Should I set all sources of spots to the UDP settings you are showing and then set Gridtracker to the same UDP ip + port ?

Well, the first setup I would try is just one copy of sparksdr, sparksdr2wsjtx and gridtracker on one computer one at a time, to make sure that is working for you.   I would do that for each SDR you want to support (QDX, HL2, RSP1A). 

I would also ask you to say if all these programs are running on one computer or on different computers.  Using 239.1.1.1 suggests you are using more than one computer, since this is a multicast address.  Maybe make a table of saying what program is running on what computer if you are using more than one.  That might help people understand if it will work or not.

I'm not sure if running more than one copy of sparksdr on one computer works or not.  Each copy will try to become a websocket server.  I don't know if that is supported.  As the setup screen says, this is an experimental feature so it might not.

If you are trying to get multicast to work across multiple computers, it might help to try a simpler configuration. First make gridtracker work with multiple copies of wsjt-x feeding spots to it, to prove your basic networking configuration (multicast IP addresses and ports) is correct.  Then, replace each wsjt-x with (sparksdr + sparksdr2wsjtx) configured with the same multicast IP addresses and ports and see if that works. 

Regards,
RDP

AndyZ K1RA

unread,
Feb 25, 2023, 4:35:42 PM2/25/23
to SparkSDR
Hi Erwin

As currently written, SparkSDR2WSJTX can only connect to only one SparkSDR websocket instance using the "-s IP_ADDRESS" command line option when starting the program.  By default it connects to 127.0.0.1, localhost/PC on which SparkSDR2WSJTX is running.  This assumes most people run SparkSDR on the same PC.  If not, you can divide the two application across 2 PCs as noted above using the "-s" option to define the IP LAN address of the PC running SparkSDR.

SparkSDR2SWSJTX broadcasts WSJT-X like messages for consumption by GridTracker (and maybe other apps) that understand the UDP mechanism for sharing reception data as defined here:


By default SparkSDR2WSJTX will receive (FTn, WSPR, JS8) decodes from SparkSDR over websockets and convert and resend those messages in WSJT-X UDP formed packets to the multicast IP address 239.1.1.1.  This will send to your localhost/PC and every host on your LAN.  You must setup all hosts wishing to receive the packets to listen to IP address 239.1.1.1 port 2237. The "-b" and "-p" command line options can be used to change these numbers to something more suitable to your software or network.  To choose multicast IP you must pick in the range from 224.0.0.0 through 239.255. 255.255.

If you choose any other IP address outside the range above, using the "-b" command that implies SparkSDR2WSJTX will be send to one and only one IP address of a PC running GridTracker.  I believe GridTracker can relay that data onto another host, but using Multicast where available and broadcasting to many is the preferred way to share WSJTX data decodes.

If you have two instances of SparkSDR, running on two separate PCs, you should be able to run a SparkSDR2WSJTX instance on each PC, using the info above and send all the data to one other PC or multiple PCs, depending on how you use the "-b" option.

Hope this helps and please refer the the screenshots I posted earlier on my GridTracker setup


By the way I did receive an email from Nathan MM3NDH about my program and he provided me information to allow SparkSDR2WSJTX to interact with and support other apps beyond GridTracker.  I hope to post an update here in the coming weeks.

73

andyz - K1RA

On Friday, February 24, 2023 at 10:40:49 AM UTC-5 PE3ES / F4VTQ wrote:

PE3ES / F4VTQ

unread,
Feb 27, 2023, 11:47:41 AM2/27/23
to SparkSDR
Run it now with 2 radios from 1 SparkSDR and that is marvelous. Thanks Andy.

Op zaterdag 25 februari 2023 om 22:35:42 UTC+1 schreef AndyZ K1RA:

Malcolm Warwick

unread,
Mar 14, 2024, 12:46:07 AMMar 14
to SparkSDR
Has anyone got SparkSDR talking to JTAlert?

JTAlert won't run unless it sees an active instance of JTDX or WSJT-X.

Josh Logan

unread,
Mar 14, 2024, 10:58:14 AMMar 14
to Malcolm Warwick, SparkSDR

Yes, but not directly.  I run a 3 band skimmer with Sparksdr into DXLab "Spot Collector" with spardsdr2dxc.py , the 1st slot uses VB audio cable into wsjt-x and that feeds JTAlert.

I can then pick which (or both) programs I want to make announcements.  I like the coloring JTAlert adds to wsjt-x, so I use that to make all of my contacts.

The same developer of spardsdr2dxc.py also has a program to feed grid tracker, but I did not find that as helpful as the above setup.

73, KD7HGL
Josh


Reply all
Reply to author
Forward
0 new messages