CW, FT* modes skimmer using a Red Pitaya, SkimSrv and CWSL_Digi


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:

Install WSJT-X.

WSJT-X is available free of charge, it can be found here:

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:



Install the files onto the SD card simply by copying them across. For troubleshooting, look at Pavel's instructions here:


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 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:


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



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




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:


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):


 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:





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 :



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 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


Ø  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



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 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.



















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







C:\Program Files (x86)\Afreet\SkimSrv2








(Note that the CWSL_Tee.cfg files keep their original names.)



To change from using TWO SkimSrv instances to One:


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:

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:

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.



CWSL_DIGI on RP 122-16:


John Warburton G4IRN

Last updated  19-April-2024 (Feedback welcome).