CW, FT* modes skimmer using a Red Pitaya, SkimSrv and CWSL_Digi
Overview
These are consolidated instructions derived from several sources to build a Red Pitaya and associated software to produce CW and FT* modes spots for the RBN and PSKReporter networks - or just for your own, local consumption, of course.
If you spot any errors in this or can suggest ways to improve it, please feel free to contact me. All credit should go to the original authors, I have just tried to pull disparate information together into a single reference point. Also, special thanks to Björn/SM7IUN for review and feedback.
Install WSJT-X, CW Skimmer and SkimSrv on the Windows PC
Install CW Skimmer: CW Skimmer is a one band version of the skimmer software but has to be installed and registered to allow SkimSrv to funtion as a registered product. Without registration, the products will cease to function after 30 days.
Install SkimSrv.
The above software is available here: https://www.dxatlas.com/Download.asp
Install WSJT-X.
WSJT-X is available free of charge, it can be found here: https://wsjt.sourceforge.io./wsjtx.html
Preparing the Red Pitaya and your PC for CW Skimmer
From your PC, format the Red Pitaya SD card in * FAT32 * format.
(If there are multiple partitions that need removing, use program diskmgmt.msc as documented <here>)
For Skimmer applications, download the SD card image files:
https://pavel-demin.github.io/stemlab-sdr-notes/sdr-receiver-hpsdr/
Install the files onto the SD card simply by copying them across. For troubleshooting, look at Pavel's instructions here: https://pavel-demin.github.io/red-pitaya-notes/alpine/
Insert the SD card in Red Pitaya, connect an Ethernet cable to your local network and connect the power (outermost USB socket).
You will probably want the Red Pitaya to start automatically at boot time. To enable this, copy its start.sh file from the apps/sdr_receiver_hpsdr_122_88 folder to the topmost directory on the SD card. Reboot.
To check everything is working as expected, in a browser, browse to the IP address of the Red Pitaya (it is DHCP by default, you may need to check your router’s admin pages to ascertain the address). You should see a menu page like this:
Preparing the Windows pc
Download the latest version of HermesIntf from K3IT’s Github page here: https://github.com/k3it/HermesIntf/releases.
Extract the Zip file and save HermesIntf.dll in the Skimmer Server program folder -
(usually C:\Program Files (x86)\Afreet\SkimServ\).
Rename the DLL to HermestIntf_xxxx.dll where xxxx is the last 4 characters of the RP’s MAC address, which is printed on the label on top of the Ethernet connector.
Start SkimSrv.exe and look at the Skimmer tab, select Receiver RP-xxxxxx v25 - this is the Red Pitaya
Add a second instance of SkimSrv to the PC
See: https://reversebeacon.blogspot.com/2020/09/
In summary:
· Make a copy of the SkimServ directory to SkimServ2.
· Rename the executable (e.g. Skimsrv2.exe)
· Rename the Hermes dll file e.g. (HermesIntf_ffA9.dll) – the first two characters of the MAC address should be replaced by ‘ff’.
· Copy files across to the PC’s appdata folders as follows:
Assuming a Red Pitaya with a MAC address of 00:23:3b:F5:71:4F and a PC user name of ‘user’:
Folder C:\Program Files (x86)\Afreet\SkimSrv then should contain SkimSrv.exe and HermesIntf_714F.dll
Folder C:\Users\user\AppData\Roaming\Afreet\Products\SkimSrv should contain SkimSrv.ini
and
Folder C:\Program Files (x86)\Afreet\SkimSrv2 should contain SkimSrv2.exe and HermesIntf_FF4F.dll
Folder C:\Users\user\AppData\Roaming\Afreet\Products\SkimSrv2 should contain SkimSrv2.ini
When both instances of SkimSrv are running, they should have different Telnet addresses (under the Telnet tab) e.g. SkimSrv can be 7300 and SkimSrv2 can be 7301.
Install CWSL_Tee
Everything you need to do is explained at the bottom of the CWSL_Tee web site here: https://github.com/HrochL/CWSL
The diagram on the github page gives an excellent overview of how CWSL_Tee functions and points to the associated add-ons that can be used to provide additional functionality.
But some of the links are broken, and you have to go down one level and click Download to actually get the links to the files. Here are some direct links (Tnx N6TV):
https://github.com/HrochL/CWSL/raw/master/bin/CWSL.zip
https://github.com/HrochL/CWSL/raw/master/bin/IPP70.zip
https://github.com/HrochL/CWSL/raw/master/bin/vcredist_x86.exe
https://github.com/k3it/HermesIntf/releases
Important additional steps:
Copy CWSL_Tee.dll into the SkimSrv and SkimSrv2 folders. In the SkimSrv2 folder rename CWSL_Tee.dll to CWSL_Tee2.dll
Update the file ‘CWSL_Tee.cfg’ to contain just the following, where XX is the last two characters of the Red Pitaya’s MAC address:
HermestIntf_FFxx
64
Optional: To access either receiver with HDSDR, copy Extio_CWSL.dll to the HDSDR folder, and copy Extio_CWSL.dll to Extio_CWSL2.dll to access the second receiver.
Install CWSL_Digi
This program is by W2AXR and works with SkimSrv and CWSL to send spots to pskreporter,rbn and wsprnet (RBN additionally requires Aggregator).
Follow the instructions here and install CWSL_Digi : https://github.com/alexranaldi/CWSL_DIGI
Don't forget the FORTRAN download!
CWSL_Digi Configuration
For two receivers (as in the RP 122-16) changes are necessary to the CWSL_Digi config file. (See this on Groups.io). Note – in this file, any line beginning with # is a comment.
In summary, the following parameters must be set:
Ø freqcalibration=1.000000000 (leave this at default value until you understand what it does. See notes below regarding 'SkimSrv and CWSL_Digi Calibration')
Ø sharedmem=2
For multiple receivers (as in the Red Pitaya 122-16) the ‘sharedmem’ parameter should be set to 2. For one receiver (e.g. Red Pitaya 125-14) set it to -1.
Important: The ‘sharedmem’ parameter defines how many CWSL_Tee name spaces to use for a single instance of the CWSL_Digi program – one is required per instance of SkimSrv. If using the default value of -1, the name of your CWSL_Tee.dll in the SkimSrv program folder must remain as is. (e.g. using a Red Pitaya 125-14 with one instance of SkimSrv).
For a two-receiver example (e.g. Red Pitaya 122-16 with two instances of SkimSrv) to address two CWSL_Tee name spaces you will need to set sharedmem=2 and:
In the SkimSrv #1 program folder, rename CWSL_Tee.dll to CWSL_Tee1.dll
In the SkimSrv #2 program folder, rename CWSL_Tee.dll to CWSL_Tee2.dll
Ø callsign=G4IRN
Obviously, use your callsign here, not mine please.
Ø gridsquare= PM28rv
Put your own QRA locator square in the above setting. This, and the callsign above are used to send spots to PSKReporter.info.
Ø decoder= <frequency> <mode> {<1|2>}
You will see lots of example decoder parameters in the CWSL_Digi config.ini file – uncomment the frequency ranges and modes you wish to decode. If using two instances of SkimSrV you must suffix the line with 1 or 2 to indicate the source SkimSrv instance. Here are some example lines:
# 6m
#decoder=50323000 FT8 2
#decoder=50318000 FT4 2
decoder=50313000 FT8 2
#decoder=50310000 FT8 2
decoder=50275000 Q65-30 2
# 10m
decoder=28180000 FT4 1
decoder=28074000 FT8 1
decoder=28091000 FT8 1
#decoder=28076000 JT65
Notes
1. It is possible (but not necessary) to run two SkimServ instances with two CWSL_DIGI instances. For CWSL_DIGI use the "--configfile" command line parameter to specify different versions of config.ini.
2. SM7IUN reported that CWSL_DIGI crashes if you have overlapping band segments or two parts of the same band covered twice by one receiver (Though I didn't experience this myself).
3. You may wish to keep the number of receivers and sample rates down to keep the Red Pitaya cool and allow your PC to cope with the demand.
4. The [wsjt] section of the CWSL_DIGI config.ini file contains two parameters relating to the use of temporary memory: 'transfermethod=' and temppath='. In my installation I have created a 500Mb virtual drive (D:\) from RAM using a tool called 'RAM Disk' and set the above .ini file parameters to to 'temppath=D:\' and 'transfermethod=wavefile'. I am told that Windows 11 has native a tool to create a virtual drive, so no third party tool will be necessary.
5. Make sure the binpath parameter in the [wsjt] section of the config file is pointing to the corretv directory (e.g. C:\WSJT\wsjtx\bin)
Configure the Red Pitaya to use both antennas
In this step we need to change a file on the Red Pitaya. By default, the Red Pitaya’s credentials are:
userID = root
Passwd = changeme
Access to the RP can be with WinSCP, Putty, MobaXterm or similar and SSH; use nano to edit the configuration.
The Red Pitaya 122-16 has two receivers and two antennas, here is how to select different antenna ports for each:
The start.sh file becomes:
$apps_dir/sdr_receiver_hpsdr_122_88/sdr-receiver-hpsdr eth0 1 1 1 1 1 1 1 1 &
$apps_dir/sdr_receiver_hpsdr_122_88/sdr-receiver-hpsdr mvl0 2 2 2 2 2 2 2 2 &
Here, receiver one uses antenna #1 on each band and receiver two uses antenna #2 on each band (each digit represents a band).
SkimSrv.ini and SkimSrv2.ini
SkimSrv and SkimSrv2.ini files need to be configured per SM7IUN's instructions to make sure all CW and data mode band segments are covered. Here are the recommended centre and segment frequencies for the Red Pitaya 122-16 running two receivers (note - the Red Pitaya 124-14 values are different). In the two examples below, note the SegmentSel192 parameter specifies which bands are being skimmed on each instance of SkimSrv. These do not need to be adjusted in the .ini files, they are picked up from the GUI.
SkimSrv1.ini
[Skimmer]
CenterFreqs48=1832750,3522750,5362750,7022750,10122750,14022750,18090750,21022750,24912750,28022750,28202750,50092750
CenterFreqs96=1855500,3545500,5365500,7045500,10145500,14045500,18113500,21045500,24935500,28045500,28195500,50075500
CenterFreqs192=1901000,3591000,5361000,7091000,10191000,14091000,18159000,21091000,24981000,28091000,28161000,50091000,50313000
SegmentSel48=111111110000
SegmentSel96=111111110000
SegmentSel192=0000011111100
CwSegments=1810000-1840000,3500000-3570000,5351000-5367000,7000000-7040000,10100000-10130000,14000000-14070000,18068000-18095000,21000000-21070000,24890000-24920000,28000000-28070000,50000000-50160000
SkimSrv2.ini
[Skimmer]
CenterFreqs48=1832750,3522750,5362750,7022750,10122750,14022750,18090750,21022750,24912750,28022750,28202750,50092750
CenterFreqs96=1855500,3545500,5365500,7045500,10145500,14045500,18113500,21045500,24935500,28045500,28195500,50075500
CenterFreqs192=1901000,3591000,5361000,7091000,10191000,14091000,18159000,21091000,24981000,28091000,28161000,50091000,50313000
SegmentSel48=111111110000
SegmentSel96=111111110000
SegmentSel192=1111100000011
CwSegments=1810000-1840000,3500000-3570000,5351000-5367000,7000000-7040000,10100000-10130000,14000000-14070000,18068000-18095000,21000000-21070000,24890000-24920000,28000000-28070000,50000000-50160000
Summary of Directory Contents:
After all the above steps, you should end up with the following directory contents on your PC:
C:\Program Files (x86)\Afreet\SkimSrv
SkimSrv.exe
CWSL_Tee.dll (only when one receiver is being used with CWSL_Digi - remove it if two are being used)
CWSL_Tee1.dll (when two receivers being used with CWSL_Digi)
HermesIntf_B5A9.dll (suffix dependent on your RP's MAC address)
CWSL_Tee.cfg (contents: 2 lines HermesIntf_B5A9/64 - (HermesIntf suffix is dependent on your RP's MAC address)
C:\Users\{UserName}\AppData\Roaming\Afreet|Products\SkimSrv
SkimSrv.ini - amended with callsign, QRA and band segments to scan. (Just copy it from the above folder)
C:\Program Files (x86)\Afreet\SkimSrv2
SkimSrv2.exe
CWSL_Tee2.dll
HermesIntf_FFA9.dll (FF+last two digits of your mac address)
CWSL_Tee.cfg (contents: 2 lines HermesIntf_FFA9/64)
C:\Users\{UserName}\AppData\Roaming\Afreet|Products\SkimSrv
SkimSrv2.ini - amended with callsign, QRA and band segments to scan (Copied from above folder)
(Note that the CWSL_Tee.cfg files keep their original names.)
To change from using TWO SkimSrv instances to One:
Change the CWSL_Digi.ini file - the 2 receiver version is different.
In the SkimSrv directory, rename CWSL_Tee1.dll to CWSL_Tee.dll
Running SkimSrv
Connect SkimSrv #1 to CWSL_Tee on RP-xxxxxx
Connect SkimSrv #2 to CWSL_Tee on RP xxFFxx
Aggregator (Feed to RBN)
Aggregator consolidates spots from instances of SkimSrv, adds optional processing and then feeds spots to the Reverse Beacon Network (RBN).
Download and install Aggregator from here: https://www.reversebeacon.net/pages/Aggregator+34
Under the Connections tab, ensure the Port address is set for the Primary Skimmer Connection (usually 7300).
Under the Secondary Skimmers tab, define a second skimmer connection on the Telnert port used in SkimSrv2 (e.g. 7301). Check 'Auto Connect'.
Under the FT# tab, enable one of the sources with an asterisk (*) to use port 2215 (this is the CWSL_Digi port).
SkimSrv and CWSL_Digi Calibration
See Björn /SM7IUN's notes regarding Skimmer and SkimSrv calibration here: https://sm7iun.se/rbn/analytics/
Per Björn's notes, you should update the FreqCalibration parameter in the SkimSrv.ini and SkimSrv2.ini files to ensure accurate spotting. Your accuracy will vary from day to day; keep an occasional eye on Björn's reporting and adjust the FreqCalibration parameter as required (must be the same in both SkimSrv ini files).
Calibration of CWSL_DIGI is not well documented but Björn has found to get both CW and JT (FT* modes) spots correct you need to set CWSL_DIGI's freqcalibration parameter to the mathematical inverse of SkimSrv's FreqCalibration parameter
It is actually not very surprising thatSkimSrv's FreqCalibration, which is used to adjust the frequency of the reported spots, has no impact at all on the IQ samples fed to CWSL_DIGI by CWSL_Tee. CWSL_DIGI's freqcalibration is defined as actual frequency divided by reported frequency and SkimSrv's FreqCalibration is defined as reported frequency
divided by actual frequency.
So CWSL_DIGI freqcalibration = 1 / (SkimSrv FreqCalibration)
For example, if SkimSrv FreqCalibration= 0.999998765
then CWSL_DIGI freqcalibration should be equal to 1 divided by 0.999998765 (the reciprocal) = 1.000001235
General Advice
The Red Pitaya can get hot, it's advisble to put a fan on the enclosure to keep the air moving around it.
CW Skimmer and CWSL_Digi can check up CPU power - keep an eye on your utilisation.
Monitor your spotting accuracy on SM7IUN's site from time to time, particularly just after initial implementation. Adjust SkimSrv, SkimSrv2 and CWSL_DIGI calibration accordingly.
References:
https://reversebeacon.blogspot.com/2020/06/using-red-pitaya-stemlab-12288-16-on.html
https://reversebeacon.blogspot.com/2020/09/
https://sm7iun.se/redpitaya/cwskimmer/
CWSL_DIGI on RP 122-16: https://reversebeacon.blogspot.com/2021/
John Warburton G4IRN
Last updated 19-April-2024 (Feedback welcome).