SparkSDR Version 126.96.36.199
- First steps
- Virtual Receivers
- NTP frequency compensation
- Gateware Upload
- Cat Control
- Midi Controllers
- Discovery over vpn
- Command Line
- Release notes
The first thing to do on initial startup is to enter your callsign and locator in the settings ( click the cog button ), these are needed by many of the digital modes to do things like calculate distance and send reports to wsprnet and psk reporter.
Many of the digital modes require WSJTX to be installed in its default location.
The main window should list all detected and supported radios, if not try clicking the refresh button in the title bar. This version only supports Hermes Lite for receive and transmit, other HPSDR compatible radios should work for receive only. Radios are started by clicking the power button, multiple radios can be run at the same time with one instance of Spark.
Error Log files are saved at c:\users\## your name ##\appdata\roaming\m0nnb\sparksdr2\errorlogs on windows , ~/.config/m0nnb/SparkSDR2/errorlogs on linux and ~/Library/Application Support/SparkSDR/errorlogs OSX. They are human readable and may give some clue to any problems. If run from a terminal on linux extra logging maybe displayed in the terminal. If the program fails to run on linux the most likely cause is a missing dependency of sparkcore.so, ldd sparkcore.so may give some clues. Please report errors to the Google group and include log files. Posting a screen shot can also help diagnose a surprising number of issues.
If the radio is discovered but no signal comes up when run this indicates a network or firewall issue. Protocol 2 is particularly sensitive to firewall settings.
The frequency control responds to the mouse scroll wheel over the digits, cursor keys and touch and drag over the digits. Double clicking in the panascope will retune. Moving the mouse with the left button down over the panafall will retune, the tuning increment depends on the vertical position of the pointer. The scrollwheel will also tune if the mouse is over the panafall, again the increment depends on the vertical position. Moving the mouse with the right button down pans the display without retuning A single click will set tx frequency in some digital modes. If you pan or zoom outside the receiver bandwidth the gaps are filled with data from the bandscope feed, this is of much lower resolution so can look a bit odd.
There are separate volume settings for transmit and receive, the transmit monitor volume defaults to zero, to hear your own transmissions increase the volume whilst transmitting.
There are separate dialogs for radio and receiver settings, both are marked '...'. The radio settings are for things that apply to the radio as a whole and will affect all receivers.
Once a radio is started you can start extra receivers by clicking the '+' button on the top line of the radio display or by selecting the 'start in new receiver' option in the favourites. You can create as many of these as you like irrespective of the number of receivers supported by the hardware. If you try and cover a total bandwidth that the hardware is not capable of, some receivers will simply go blank.
A common use of SparkSDR is skimming multiple digital modes at once, virtual receivers make this possible but they are not magic, typically you can only cover as many bands as you have hardware/firmware receivers. To reduce cpu load it is good to use as low a sample rate as possible however on some bands the digital modes are far enough apart that 48Khz is not enough.
The ep6 value displayed is a count of the number of times the udp packets from the radio arrive with non sequential sequence numbers, this indicates dropped or swapped packets. It is called ep6 because that is the name of the receiver data packet in the original HPSDR protocol docs from the original usb days (endpoint 6 I believe ). It only increments when a packet is received so is not a count of missed packets, just a count of unexpected sequence numbers.
For this to work you either must have wsjtx 2.0+ installed in the default location or only use decode level 0. To use wspr you must first enter your callsign and locator in the settings page, To start a wspr session either tune to the wspr dial frequency and select wspr from the modulation dropdown or simply select the wspr band from the favourtes menu (the star button). The wspr mode will decode your own transmissions but does not try to upload them. You can open multiple wspr receivers, setting more than one to transmit is allowed but only one will transmit at a time for a given radio. On selecting wspr the panascope zooms and pans to the wspr traces. Transmit frequency can be set by a single click on the waterfall. There is a dropdown for decode level, the higher levels use significant cpu, so for multi band skimming using lower levels may help if cpu is over loaded.
WSPR relies on the computer clock being correct, this is best done with utilities like Meinberg ntp. If the clock is wrong by more than a couple of seconds you are unlikely to spot anything. The frequency calibration also has to be correct, the wspr band is only 200hz wide so you don't have to be far off to miss a chunk of it.
For this to work you must have wsjtx 2.0+ installed in the default location. Like wspr you must first enter your callsign and locator in the settings page. Clicking a received CQ message will fill in the reply macros and start the transmission. Clicking any other message will fill the macros to continue your CQ and will send the second message. Clicking send next to any macro will send it on the next 15second slot. Transmit frequency can be set by a single click on the waterfall. Simplex mode automatically uses the frequency of the cq you are replying to, otherwise your selected tx frequency is used.
This software will allow you to set frequencies well above the normal clockrate/2 limit of the radio. The actual frequency sent to the radio will be within its normal range, but will be selected to capture any signals in the higher Nyquist zones that the front end filters allow through. The reversed even zones are corrected so usb stays as usb. With the Hermes Lite you might well be able to hear broadcast fm stations by tuning to their advertised frequency. This assumes you have the higher frequency clock, if not you can set the clock frequency by editing C:\Users\##Your name\AppData\Roaming\m0nnb\sparksdr2\settings\hpsdr##Your Mac##.json.
This again is not magic and with standard filters you will probably not be hearing the frequency tuned to but something in the normal range of the radio.
NTP frequency compensation
If you click the FCal button in the radio settings, the software will try to adjust for error in the radio clock using the pc clock. It assumes you have something like Meinberg ntp installed. Once enabled nothing will happen for about 12 minutes and then the frequency calibration will be updated every 2 minutes. The updates are timed so as not to interfere with wspr and jt65/9 messages. The correction is intended to compensate for long term drift, it is not fast enough to correct for drift caused by tx/rx transitions.
This allows iq data to be sent to Multipsk directly without any virtual audio cables. This only works for Multipsk 4.34.1 onwards. In this release only receive works. Simply select Multipsk from the modulation dropdown. A port number will be shown. In the Multipsk configuration screen click the 'SdR TCP/IP' button and check the port number matches and click 'connection', you can then close the TCP/IP dialog and 'Exit to RX/TX screen'. Once in the normal screen the waterfall should show the data from Spark, the 'forward' buttons allow you to control the frequency alternatively tuning in spark should cause the frequency to change in Multipsk. You can h2 multiple instances of Multipsk with each connected to a different virtual receiver in Spark, Spark will select a differnt port number for each Multipsk receiver.
cw mode is enabled by selecting 'Enable Experimental Features' in the settings dialog, you need to restart after changing this. cw can be sent in a number of ways
- keyboard - simply set the wpm slider and type into the bottom text box, tx will stop after either the sw hang time or if you press the return key.
- A keyer or straight key connected to midi via Sparkey or anything else that generates midi. The midi settings need setting so your chosen device triggers the 'key' action.
- A keyer or straight key connected to the HL2 jack.
- From other software using cwdaemon or rigcntrl. Spark pretends to be cwdaemon. For rigcntrl no server is needed and Spark responds to the 'b' , 'KEYSPD', and 'CWPITCH' commands.
There is a separate sidetone volume slider which produdes much lower delay between key and tone, this works for all means of keying.
On windows 64 the audio output device drop down has optiond with an 'L' sufix these should reduce the latency for all means of monitoring.
Best results will be had with the latest gateware in the radio.
There is a cw decoder but it is far from finished.
The cwx checkbox is meant to test another way of generating cw, I don't think this is working properly at the moment so please ignore it.
This feature should used with caution or not at all if you are not comfortable using bootloader or usb blaster. This works for both Protocol 1 (hermes lite) and Protocol 2 radios. The upload must be done with the radio not running. Right click on the radio in the top bar and select upload gateware from the menu. Simply select the rbf file with the browse button and click program. The erase phase can take a while so be patient. If it fails, it is recommended to click program again without powering down the radio. If the radio is powered down after an incomplete programming it will need recovering with a usb blaster (hermes lite) or the bootloader(hpsdr radios). For Hermes Lite2 with gateware >= 70 you should be able to recover from a failure by restarting the radio.
All modes have a basic implementation of the tcp rigctl protocol used by hamlib. This can be enabled in the virtual receiver settings (or directly in the DigiL and didgiU modes). There is a separate connection for each virtual receiver. The port used is displayed on screen. To setup with wsjtx, js8call or fldigi select Hamlib NET rigctl as the rig type and ptt by cat. Enter you computer ip or name and port in the device box eg i5:51111
This feature allows midi devices to control various aspects of the active radio. There is a Midi tab in the main settings page that allows mapping of midi commands to Spark actions. Once enabled any midi activity should be shown at the bottom of the dialog. To connect a command to an action click the + button, pick an action from the dropdown and in the control field enter the number shown for the the control when changed. The scale and offset can be used to map the raw values to the range needed by the Spark action. The final value is (rawValue + offset) * scale. If inc is selected the value will be added to the existing value, this is useful for things like connecting encoders to vfo. For on/off actions like ptt the inc will switch between toggling the value or not e.g. press and hold for ptt or press and release to start tx and press again to stop.
Discovery over vpn
Settings/Station has an option to enter a range of ip addresses to search for a Hermes Lite 2 radio. This will only work with recent HL2 gateware. To just use a single ip, enter the same number in both boxes.
A profile can be automatically loaded by appending the profile filename to the launch command eg 'SparkSDR Last_Session'. There is a 10 second delay after startup before the profile is loaded.
Decode levels added to WSPR.
Built in low cpu wspr decoder (level 0).
Request access to microphone on mac.
Fixed bug saving favourites for experimental modes.
Initial FST4-15 rx and tx support.
Initial FST4W-120 rx and tx support.
FT4 tx added.
FT8 tx waveform improved.
All message types supported in FT4/FT8 level 0 decoders.
Current, temp and power displays updated without ep4 packet for radioberry.
Delete context menu for profiles and favourites added.
Midi error capture bug that caused program exit fixed.
Bug on computers with > 32 cores fixed.
Initial client server mode added.
Level 0 added to FT8 and FT4.
Virtual recievers that don't fit in available bandwidth show red cross.
Receiver id added to websocket spot data.
Discovery looks for networks added after start.
Valid hw receiver width control added.
Initial IQ and filter over websocket.
Initial spectrum over websocket.
Initial audio over websocket.
Fix mac flicker.
Enable independent instances with -ixxx command line.
Watchdog disable added.
Hermes lite ptt hang time and tx buffer latency controls added.
ATU tune bit setable.
Websocket enable option added.
FT8,JT9,JT65 tx fixed.
Start of websocket interface.
Console window removed on windows.
Settings directory changed on mac, try 2.
Fix j16 check boxes on light theme.
Settings directory changed on mac.
Mic eq added.
am mic gain/compression added.
Tx filter bug fixed.
Net5.0 rc2 build.
Save favourites and profiles fixed.
Audio devices stored by name in profiles so should be remembered correctly even if devices change.
Waterfall speed slowed/capped at high sample rates.
Manual agc mode added.
NET5.0 rc1 build.
TX freq line removed from panadapter for analog modes.
NR fixed for fm.
Minimum bandwidth limit removed from nfm mode.
Red line at waterfall start removed.
Occasional lost of tx audio fixed.
NFM mode improved and CTCSS and repeater offset added.
Rigctrl should start when loading profile.
Filter limits increased for digiu and digil modes.
Favorites for mode added to display.
Panafall double click snapping added.
Zoom freeze fixed.
Spark displayed in mac menu.
Macro editor text wrapping fixed.
Faster theme switching.
Match WSJTX PskReporter timings.
Use full screen space for spot lists.
Possible fix for gateware upload on mac.
Tweak rf agc to reduce time spent in overload.
Possibly fix profile restore order on linux.
Decode % and reserve cores added to help with extreme skimming.
Prevent lockup if profile selected and radio not connected.
Try to restore original rigctrl ports on loading profile.
Peak display added to meters.
Profile loading made faster and mystery missing audio devices fixed.
Antenna and snr added to PSK Reporter uploads.
Fix levels on rf gain change (broken since hl2 separate tx/rx lna gain mod).
Noise reduction level control added.
Sliders replaced with thumb wheels.
Dark and light theme option added to settings.
Fixed crash encoding ft8, jt9 and jt65 with recent wsjtx.
Reverted rigctrl tweak for wsjtx that broke fldigi.
Fix ui lockup with two cw receivers.
Fix gateware upload for protocol 1 Orion and possibly other non Hermes Lite HPSDR radios.
Profiles and Last Session fixed for protocol 2 HPSDR radios.
Setting Mac and fixed IP added for Hermes Lite.
Initial adc selection and coherent operation for Protocol 1 Orion.
Initial Alex support for protocol2 HPSDR radios.
Initial Diversity support for protocol1 HPSDR radios.
Default audio gain on ssb and digi modes increased so full range audio should be full power with no compression.
Rigctl cat tweaked for WSJTX 2.2 rc1
Full screen button added.
Hide toolbar option added.
UI tweaks to allow use on rpi 7" 800x480 screen.
Sidetone volume slider fixed.
Initial tweaks to improve things on small screens.
Serial midi added.
Add macro fixed for cw and psk.
Drive range extended to 0 .. -25.6 db for HL2.
ATU tune bit set on tune.
Mic input fixed on some platforms
RigCtl setting remembered correctly
Linux gateware upload crash fixed.
HL2 cw hang time fixed.
Mac black tooltips, discovery and clicking on executable fixed
External PA bias added
Initial Mac support
Gateware upload warnings added and additional logging.
Tune button added (still needs level control and alex io).
Initial Midi cw Key input added and sidetone generation for midi key.
Transverter tx bug fixed.
Temp fix to vfo display to allow 2m transverter use
win64 version slightly more robust to network errors.
cat traffic logged if Extended logging selected.
Transceiver Offset added.
Drive made to work on a per virtual transceiver basis.
Basic cat control available in all modes.
cwdaemon interface on cw mode.
Command line load profile option added
HL2 hardware ptt signal respected.
Keyboard cw frequency matches hardware cw.
Single cw mode.
Windows 64bit audio sample rate requirements relaxed.
Keyboard cw latency reduced.
Experimental cw mode added.
Map performance improved and PSKReporter colours used.
PSK tx signal improved.
PSK macro editing moved to general settings.
J16 filter selection checkboxes fixed.
TX scheduling tweaked for recent HermesLite firmware.
New discovery packet and 16bit raw adc allowed for.
Smart filter action added to midi.
win32 crash on adding receiver fixed.
RNNoise noise reduction added.
Support for multiple Midi devices added.
Support non broadcast discovery.
Waterfall speed control.
Audio latency improved.
Bug that prevented selecting gateware files fixed.
Midi control added.
ft4 decoding using wsjtx 2.1 rc7.
Bandwidth warning added to fm mode.
Undefined voice mode tx behaviour with no audio device fixed.
psk tx improved.
Frequency scale and digi mode frequency markers added to bandscope.
NaN in power and swr fixed.
ft4 decoding added.
basic cat control added.
Gateware upload added.
Compact summary mode added.
WSPR tx freq saved in profiles.
Tuning bug fixed when loading profiles that are close to total bandwidth limits.
Last session bug when using multiple radios fixed.
HPSDR Protocol 2 receive support enabled.
Initial implementation of Profiles.
Crash on startup if no internet fixed.
Crash on 'open in new receiver' for lsb favourites fixed.
Tweaks to filter setting sliders.
Delete receiver button added.
DigiL and DigiH modes added.
Slightly reduced memory use.
am mode fixed.
Sliders display value.
Slightly reduced cpu use.
Crash on clicking a spot line fixed.
More errors logged.
Better psk reporter performance.
From rc5 onwards it should be possible to run multiple copies of Spark simultaneously as long as no more than one copy is pre rc5.
Settings are not shared between rc5 and previous releases so will need entering again.
Initial spot map.
Directory for settings, logs etc changed to sparksdr2
Copyright (c) 2015-2020, Alan Hopper
All rights reserved.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
The software uses the portaudio library - below is the license notice relating to it.
PortAudio Portable Real-Time Audio Library Copyright (c) 1999-2011 Ross Bencina and Phil Burk
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
The software uses the RNNoise library - below is the license notice relating to it.
Copyright (c) 2009-2010 Xiph.Org Foundation Written by Jean-Marc Valin
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.