SparkSDR2 to DXcluster, GridTracker, ALL.TXT

113 views
Skip to first unread message

AndyZ K1RA

unread,
Apr 28, 2024, 2:00:38 PMApr 28
to SparkSDR
I've updated all my SparkSDR2XXX apps to work with the latest 2.0.985 versions of SparkSDR.  Please let me know if you use these, have any issues or successes.  They can be downloaded from here:





These work as command line apps on Windows as EXEs or Linux, provided you have Python and know how to load a "requirements.txt" file.

An overview of what they do and how they are used as follows:

# DXcluster like telnet server providing spots from SparkSDR https://sparksdr.com/
# Websocket data for FT8, FT4, WSPR, FST4, FST4W, JS8 decodes across multiple bands.

> sparksdr2dxc.exe -v
sparkdxc2dxc version 2.0.9 by AndyZ K1RA
> sparksdr2dxc.exe -h
Usage: sparksdr2dxc.py -m MYCALL [-c cache_expire] [-s sparksdr_ip] [-t telnet_port] [-d] [-v] [-h]
-m MYCALL (mandatory, ex: -m K1RA)
-c cache_expire (optional, minutes, ex: -c 5) [default=5]
-s sparksdr_ip (optional, ip address, ex: -s 192.168.1.234) [default=127.0.0.1]
-t telnet_port (optional, tcp port, ex: -t 2323) [default=7373]
-d (turns on debug messages)
-v (prints version)
-h (prints this help)
>

# A WSJT-X UDP broadcaster providing spots from SparkSDR https://sparksdr.com/
# Websocket data for FT8, FT4, WSPR, FST4W, JS8 decodes across multiple bands
# to a multicast or direct UDP port for apps like GridTracker
#
# sends WSJT-X UDP packets per definition
# https://sourceforge.net/p/wsjt/wsjtx/ci/master/tree/Network/NetworkMessage.hpp

> sparksdr2wsjtx-udp.exe -v
sparksdr2wsjtx-udp version 2.0.7 by AndyZ K1RA
> 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)

# Create a WSJT-X ALL.txt file in the standard WSJT-X data directory
# ex: C:\Users\k1ra\AppData\Local\WSJT-X\ALL.TXT pulling spots from SparkSDR 
# https://sparksdr.com/ Websocket  data for FT8, FT4, WSPR, FST4W, JS8 decodes 
# on all bands for programs like Qlog SPOTS to utilize see:
# https://groups.io/g/QLogusers/files/Spots/spots-2.50-package.exe

> sparksdr2all.exe -v
sparksdr2all version 2.0.3 by AndyZ K1RA
> sparksdr2all.exe -h
sparksdr2all.py -f MHz[,MHz,...] [-s sparksdr_ip] [-d] [-v] [-h]
-f MHz (mandatory: MHz bands, ex: -f 24,28)
-s sparksdr_ip (optional: ip address, ex: -s 192.168.1.123) [default=127.0.0.1]
-d (turns on debug messages)
-v (prints version)
-h (prints this help)


73

andyz - K1RA

Josh Logan

unread,
May 1, 2024, 3:34:57 PMMay 1
to AndyZ K1RA, SparkSDR

I'm trying out the new version and I get this error in both the sparksdr2wsjtx-udp.exe and .\sparksdr2dxc.exe
PS C:\Users\Logan> .\sparksdr2wsjtx-udp.exe -m KD7HGL -g CN87ts -p 2230
sparksdr2wsjtx-udp version 2.0.7 by K1RA
Traceback (most recent call last):
  File "main.py", line 667, in <module>
  File "main.py", line 296, in parse_message
KeyError: 'watts'
[6468] Failed to execute script 'main' due to unhandled exception!

PS C:\Users\Logan> .\sparksdr2dxc.exe -m KD7HGL
sparkdxc2dxc version 2.0.9 by K1RA
Traceback (most recent call last):
  File "main.py", line 444, in <module>
  File "main.py", line 257, in parse_message
KeyError: 'watts'
[29080] Failed to execute script 'main' due to unhandled exception!

When that error occurs then the client program has this error:
Winsock Error # 10061 - Connection is forcefully rejected @ 5/1/2024 1840
Winsock Error # 10061 - Connection is forcefully rejected @ 5/1/2024 1841
Winsock Error # 10061 - Connection is forcefully rejected @ 5/1/2024 1842

Here is my current SparkSDR receiver setup
image.png

I tried to run with the -d option, here is the output:
Message Received: {"cmd":"spotResponse","spots":[{"time":"2024-05-01T18:49:30Z","frequency":14076202,"tunedfrequency":14074000,"power":0,"drift":0,"snr":4,"dt":-1.7,"msg":"DL5QY KM6LBW DM04","mode":"FT8","submode":"","distance":1501.1360397634232,"call":"KM6LBW","locator":"DM04","rxid":3},{"time":"2024-05-01T18:49:30Z","frequency":14075703,"tunedfrequency":14074000,"power":0,"drift":0,"snr":-5,"dt":0.2,"msg":"W5CTL VA6ARI 73","mode":"FT8","submode":"","distance":null,"call":"VA6ARI","locator":"","rxid":3},{"time":"2024-05-01T18:49:30Z","frequency":14076104,"tunedfrequency":14074000,"power":0,"drift":0,"snr":-11,"dt":0.3,"msg":"KC1FNM KZ5A DM73","mode":"FT8","submode":"","distance":2149.19217989083,"call":"KZ5A","locator":"DM73","rxid":3},{"time":"2024-05-01T18:49:30Z","frequency":14074623,"tunedfrequency":14074000,"power":0,"drift":0,"snr":0,"dt":0.2,"msg":"KE8NKV W6DPM 73","mode":"FT8","submode":"","distance":null,"call":"W6DPM","locator":"","rxid":3},{"time":"2024-05-01T18:49:30Z","frequency":14075258,"tunedfrequency":14074000,"power":0,"drift":0,"snr":-15,"dt":0.1,"msg":"CQ IQ5PJ JN53","mode":"FT8","submode":"","distance":8882.0128966434,"call":"IQ5PJ","locator":"JN53","rxid":3},{"time":"2024-05-01T18:49:30Z","frequency":14075336,"tunedfrequency":14074000,"power":0,"drift":0,"snr":-13,"dt":0.4,"msg":"CQ VE5PMG DO70","mode":"FT8","submode":"","distance":1295.8826221263682,"call":"VE5PMG","locator":"DO70","rxid":3},{"time":"2024-05-01T18:49:30Z","frequency":14076008,"tunedfrequency":14074000,"power":0,"drift":0,"snr":-15,"dt":0.2,"msg":"N0GTO N6AJR DM14","mode":"FT8","submode":"","distance":1540.8214076098855,"call":"N6AJR","locator":"DM14","rxid":3},{"time":"2024-05-01T18:49:30Z","frequency":14076166,"tunedfrequency":14074000,"power":0,"drift":0,"snr":-14,"dt":0.1,"msg":"R1BGY K0IDX -08","mode":"FT8","submode":"","distance":null,"call":"K0IDX","locator":"","rxid":3},{"time":"2024-05-01T18:49:30Z","frequency":14074621,"tunedfrequency":14074000,"power":0,"drift":0,"snr":-13,"dt":0.6,"msg":"KE8NKV WB0LQW DN70","mode":"FT8","submode":"","distance":1598.7617905114062,"call":"WB0LQW","locator":"DN70","rxid":3},{"time":"2024-05-01T18:49:30Z","frequency":14076100,"tunedfrequency":14074000,"power":0,"drift":0,"snr":-19,"dt":0.1,"msg":"N3IOR WY0V RR73","mode":"FT8","submode":"","distance":null,"call":"WY0V","locator":"","rxid":3}]}
184930  14074.0   FT8      KM6LBW 2202   4 DM04  DL5QY KM6LBW DM04
184930  14074.0   FT8      VA6ARI 1703  -5       W5CTL VA6ARI 73
184930  14074.0   FT8        KZ5A 2104 -11 DM73  KC1FNM KZ5A DM73
184930  14074.0   FT8       W6DPM  623   0       KE8NKV W6DPM 73
184930  14074.0   FT8       IQ5PJ 1258 -15 JN53  CQ IQ5PJ JN53
184930  14074.0   FT8      VE5PMG 1336 -13 DO70  CQ VE5PMG DO70
184930  14074.0   FT8       N6AJR 2008 -15 DM14  N0GTO N6AJR DM14
184930  14074.0   FT8       K0IDX 2166 -14       R1BGY K0IDX -08
184930  14074.0   FT8      WB0LQW  621 -13 DN70  KE8NKV WB0LQW DN70
184930  14074.0   FT8        WY0V 2100 -19       N3IOR WY0V RR73

Message Received: {"cmd":"spotResponse","spots":[{"time":"2024-05-01T18:49:45Z","frequency":14081285,"tunedfrequency":14080000,"power":0,"drift":0,"snr":-15,"dt":-0,"msg":"CQ K9ZW EN64","mode":"FT4","submode":"","distance":2723.9784641079646,"call":"K9ZW","locator":"EN64","rxid":22}]}
184945  14080.0   FT4        K9ZW 1285 -15 EN64  CQ K9ZW EN64

Message Received: {"cmd":"spotResponse","spots":[{"time":"2024-05-01T18:48:00Z","frequency":21096033,"tunedfrequency":21094600,"power":23,"drift":0,"snr":-20,"dt":-0.3,"msg":"","mode":"WSPR","submode":"","distance":55.64235220564721,"call":"N3HFS","locator":"CN87","rxid":19}]}
Traceback (most recent call last):
  File "main.py", line 667, in <module>
  File "main.py", line 296, in parse_message
KeyError: 'watts'
[3112] Failed to execute script 'main' due to unhandled exception!
Message Received: {"cmd":"spotResponse","spots":[{"time":"2024-05-01T18:49:45Z","frequency":14075136,"tunedfrequency":14074000,"power":0,"drift":0,"snr":-7,"dt":0,"msg":"\u003C...\u003E DA2KC/VE6","mode":"FT8","submode":"","distance":null,"call":"DA2KC/VE6","locator":"","rxid":3}]}
Message Received: {"cmd":"spotResponse","spots":[{"time":"2024-05-01T18:48:00Z","frequency":14097058,"tunedfrequency":14095600,"power":23,"drift":0,"snr":-18,"dt":0,"msg":"","mode":"WSPR","submode":"","distance":null,"call":"VE6ATS/2","locator":"","rxid":17},{"time":"2024-05-01T18:48:00Z","frequency":14097116,"tunedfrequency":14095600,"power":20,"drift":1,"snr":-17,"dt":0.2,"msg":"","mode":"WSPR","submode":"","distance":916.1705399193024,"call":"VE6CLE","locator":"DO33","rxid":17},{"time":"2024-05-01T18:48:00Z","frequency":14097187,"tunedfrequency":14095600,"power":33,"drift":0,"snr":-20,"dt":0.1,"msg":"","mode":"WSPR","submode":"","distance":916.1705399193024,"call":"VE6DAI","locator":"DO33","rxid":17}]}
Message Received: {"cmd":"spotResponse","spots":[{"time":"2024-05-01T18:50:00Z","frequency":18101492,"tunedfrequency":18100000,"power":0,"drift":0,"snr":-5,"dt":0.2,"msg":"SP5TE KA2MGE R\u002B01","mode":"FT8","submode":"","distance":null,"call":"KA2MGE","locator":"","rxid":4},{"time":"2024-05-01T18:50:00Z","frequency":18100833,"tunedfrequency":18100000,"power":0,"drift":0,"snr":-14,"dt":-0,"msg":"CQ N2PGJ FN01","mode":"FT8","submode":"","distance":3452.710797330842,"call":"N2PGJ","locator":"FN01","rxid":4},{"time":"2024-05-01T18:50:00Z","frequency":18102680,"tunedfrequency":18100000,"power":0,"drift":0,"snr":-15,"dt":0,"msg":"YB1OVY KB8NEV EN91","mode":"FT8","submode":"","distance":3303.7111362024752,"call":"KB8NEV","locator":"EN91","rxid":4}]}
Message Received: {"cmd":"spotResponse","spots":[{"time":"2024-05-01T18:50:00Z","frequency":14074621,"tunedfrequency":14074000,"power":0,"drift":0,"snr":-14,"dt":0.6,"msg":"KE8NKV WB0LQW R-16","mode":"FT8","submode":"","distance":null,"call":"WB0LQW","locator":"","rxid":3},{"time":"2024-05-01T18:50:00Z","frequency":14075644,"tunedfrequency":14074000,"power":0,"drift":0,"snr":-11,"dt":-0,"msg":"R8CCC KD7YOX DM41","mode":"FT8","submode":"","distance":2048.417372899395,"call":"KD7YOX","locator":"DM41","rxid":3},{"time":"2024-05-01T18:50:00Z","frequency":14075334,"tunedfrequency":14074000,"power":0,"drift":0,"snr":-16,"dt":0.3,"msg":"CQ VE5PMG DO70","mode":"FT8","submode":"","distance":1295.8826221263682,"call":"VE5PMG","locator":"DO70","rxid":3}]}
Message Received: {"cmd":"spotResponse","spots":[{"time":"2024-05-01T18:50:15Z","frequency":14081379,"tunedfrequency":14080000,"power":0,"drift":0,"snr":-15,"dt":0.1,"msg":"OZ2B N9MT EN71","mode":"FT4","submode":"","distance":3005.174591467234,"call":"N9MT","locator":"EN71","rxid":22},{"time":"2024-05-01T18:50:15Z","frequency":14081910,"tunedfrequency":14080000,"power":0,"drift":0,"snr":-12,"dt":0.1,"msg":"UR4QFP VE3FF \u002B07","mode":"FT4","submode":"","distance":null,"call":"VE3FF","locator":"","rxid":22}]}
Message Received: {"cmd":"spotResponse","spots":[{"time":"2024-05-01T18:50:15Z","frequency":21075715,"tunedfrequency":21074000,"power":0,"drift":0,"snr":4,"dt":0,"msg":"WB3FYR K7TCH CN87","mode":"FT8","submode":"","distance":55.64235220564721,"call":"K7TCH","locator":"CN87","rxid":5},{"time":"2024-05-01T18:50:15Z","frequency":21075809,"tunedfrequency":21074000,"power":0,"drift":0,"snr":-1,"dt":0,"msg":"W4IHQ W7MD 73","mode":"FT8","submode":"","distance":null,"call":"W7MD","locator":"","rxid":5},{"time":"2024-05-01T18:50:15Z","frequency":21075313,"tunedfrequency":21074000,"power":0,"drift":0,"snr":-15,"dt":-0.2,"msg":"CQ CO8LY FL20","mode":"FT8","submode":"","distance":5191.148281975902,"call":"CO8LY","locator":"FL20","rxid":5}]}
Message Received: {"cmd":"spotResponse","spots":[{"time":"2024-05-01T18:50:15Z","frequency":18100643,"tunedfrequency":18100000,"power":0,"drift":0,"snr":-4,"dt":0.2,"msg":"GB8VED K7NN DM42","mode":"FT8","submode":"","distance":1948.0661970177587,"call":"K7NN","locator":"DM42","rxid":4},{"time":"2024-05-01T18:50:15Z","frequency":18100885,"tunedfrequency":18100000,"power":0,"drift":0,"snr":-8,"dt":0.1,"msg":"\u003C...\u003E VA3TPS FN04","mode":"FT8","submode":"","distance":3315.673802542285,"call":"VA3TPS","locator":"FN04","rxid":4},{"time":"2024-05-01T18:50:15Z","frequency":18101789,"tunedfrequency":18100000,"power":0,"drift":0,"snr":-12,"dt":0.3,"msg":"\u003C...\u003E W1AUT FN42","mode":"FT8","submode":"","distance":3994.5698719117427,"call":"W1AUT","locator":"FN42","rxid":4},{"time":"2024-05-01T18:50:15Z","frequency":18100564,"tunedfrequency":18100000,"power":0,"drift":0,"snr":-12,"dt":0.2,"msg":"2E0OOM WA9SUG DM33","mode":"FT8","submode":"","distance":1768.8810521740265,"call":"WA9SUG","locator":"DM33","rxid":4},{"time":"2024-05-01T18:50:15Z","frequency":18101194,"tunedfrequency":18100000,"power":0,"drift":0,"snr":-15,"dt":1.2,"msg":"PA5KS WA3NSM EN91","mode":"FT8","submode":"","distance":3303.7111362024752,"call":"WA3NSM","locator":"EN91","rxid":4},{"time":"2024-05-01T18:50:15Z","frequency":18102104,"tunedfrequency":18100000,"power":0,"drift":0,"snr":-18,"dt":0.1,"msg":"CQ NM1G FN41","mode":"FT8","submode":"","distance":4045.31595997716,"call":"NM1G","locator":"FN41","rxid":4},{"time":"2024-05-01T18:50:15Z","frequency":18102913,"tunedfrequency":18100000,"power":0,"drift":0,"snr":-18,"dt":0.3,"msg":"R3LC VE3FAC \u002B07","mode":"FT8","submode":"","distance":null,"call":"VE3FAC","locator":"","rxid":4},{"time":"2024-05-01T18:50:15Z","frequency":18101593,"tunedfrequency":18100000,"power":0,"drift":0,"snr":-13,"dt":0.2,"msg":"CQ N1MIE FN41","mode":"FT8","submode":"","distance":4045.31595997716,"call":"N1MIE","locator":"FN41","rxid":4},{"time":"2024-05-01T18:50:15Z","frequency":18101481,"tunedfrequency":18100000,"power":0,"drift":0,"snr":-16,"dt":0.1,"msg":"\u003C...\u003E BD7NSK OL63","mode":"FT8","submode":"","distance":10351.336843765732,"call":"BD7NSK","locator":"OL63","rxid":4}]}
Message Received: {"cmd":"spotResponse","spots":[{"time":"2024-05-01T18:50:15Z","frequency":14075876,"tunedfrequency":14074000,"power":0,"drift":0,"snr":17,"dt":0,"msg":"VA6ARI KD7MA R-17","mode":"FT8","submode":"","distance":null,"call":"KD7MA","locator":"","rxid":3},{"time":"2024-05-01T18:50:15Z","frequency":14075253,"tunedfrequency":14074000,"power":0,"drift":0,"snr":-3,"dt":0,"msg":"BG4UCZ K7UV DN31","mode":"FT8","submode":"","distance":1016.0773744518483,"call":"K7UV","locator":"DN31","rxid":3},{"time":"2024-05-01T18:50:15Z","frequency":14076682,"tunedfrequency":14074000,"power":0,"drift":0,"snr":-10,"dt":0,"msg":"W4ER W7STS DM33","mode":"FT8","submode":"","distance":1768.8810521740265,"call":"W7STS","locator":"DM33","rxid":3},{"time":"2024-05-01T18:50:15Z","frequency":14074723,"tunedfrequency":14074000,"power":0,"drift":0,"snr":-6,"dt":0.1,"msg":"WF0B KB6CIO CM95","mode":"FT8","submode":"","distance":1368.30966756989,"call":"KB6CIO","locator":"CM95","rxid":3},{"time":"2024-05-01T18:50:15Z","frequency":14075555,"tunedfrequency":14074000,"power":0,"drift":0,"snr":-10,"dt":0.3,"msg":"N6AJR N0GTO RR73","mode":"FT8","submode":"","distance":null,"call":"N0GTO","locator":"","rxid":3},{"time":"2024-05-01T18:50:15Z","frequency":14076158,"tunedfrequency":14074000,"power":0,"drift":0,"snr":-10,"dt":-1,"msg":"W4ER KN6KI R-22","mode":"FT8","submode":"","distance":null,"call":"KN6KI","locator":"","rxid":3},{"time":"2024-05-01T18:50:15Z","frequency":14075192,"tunedfrequency":14074000,"power":0,"drift":0,"snr":-15,"dt":0,"msg":"KC8ZKS N7URH CN87","mode":"FT8","submode":"","distance":55.64235220564721,"call":"N7URH","locator":"CN87","rxid":3},{"time":"2024-05-01T18:50:15Z","frequency":14074663,"tunedfrequency":14074000,"power":0,"drift":0,"snr":-14,"dt":0.1,"msg":"KC8ZKS K6NCC CN80","mode":"FT8","submode":"","distance":809.500412152657,"call":"K6NCC","locator":"CN80","rxid":3},{"time":"2024-05-01T18:50:15Z","frequency":14076633,"tunedfrequency":14074000,"power":0,"drift":0,"snr":-15,"dt":0.1,"msg":"VE3UQZ AE0YE EN35","mode":"FT8","submode":"","distance":2241.8857416108835,"call":"AE0YE","locator":"EN35","rxid":3},{"time":"2024-05-01T18:50:15Z","frequency":14075142,"tunedfrequency":14074000,"power":0,"drift":0,"snr":-18,"dt":0.1,"msg":"CQ EA1L IN73","mode":"FT8","submode":"","distance":8157.622370054765,"call":"EA1L","locator":"IN73","rxid":3},{"time":"2024-05-01T18:50:15Z","frequency":14074464,"tunedfrequency":14074000,"power":0,"drift":0,"snr":-17,"dt":0.1,"msg":"CQ K0HMZ DN88","mode":"FT8","submode":"","distance":1435.3151039762674,"call":"K0HMZ","locator":"DN88","rxid":3},{"time":"2024-05-01T18:50:15Z","frequency":14075998,"tunedfrequency":14074000,"power":0,"drift":0,"snr":-12,"dt":0.4,"msg":"W4ER AA9GR EM79","mode":"FT8","submode":"","distance":3109.1842358441577,"call":"AA9GR","locator":"EM79","rxid":3},{"time":"2024-05-01T18:50:15Z","frequency":14075899,"tunedfrequency":14074000,"power":0,"drift":0,"snr":-9,"dt":0.4,"msg":"CQ DL5QY JO42","mode":"FT8","submode":"","distance":7947.4335626963175,"call":"DL5QY","locator":"JO42","rxid":3}]}

I disabled the WSJT decoders and now I'm having good success with the scripts not crashing.

Please let me know if there is any other testing you want me to try.

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/21d9bdc7-a6b6-49ad-a705-ad775b745afdn%40googlegroups.com.

Andy Zwirko

unread,
May 1, 2024, 4:22:32 PMMay 1
to Josh Logan, SparkSDR
Hi Josh

  And thanks for testing!  I failed to watch WSPR in the past and only waited for FT4, FT8, JS8. I did find that apparently I had some old code that looked for the WSPR "watts" websocket data variable which no longer exists in SparkSDR.  I've modified all my apps to remove this data check and waited for a few WSPR decodes and it seems to be working OK without throwing an error.  Please try again.


Please report back.

73

andyz - K1RA

Josh Logan

unread,
May 1, 2024, 5:20:44 PMMay 1
to Andy Zwirko, SparkSDR

Thanks for the quick fix.  That has made it stable for me!

73, KD7HGL
Josh

Reply all
Reply to author
Forward
0 new messages