Monday, March 18, 2013

Two Apps at Once (Part 2)

[Sorry about the bifurcation - the Blogspot editor balked at publishing such a large post.

So, we're back to setting up HDSDR. But first, a quick note on computer requirements to accomplish all this magic.  On my anemic E2200 dual-core Pentium, CW Skimmer is the big load - currently about 30 percent at 96 KHz bandwidth.  RCKSkimmer is burning about 6 percent, and HDSDR is burning about 4 percent.  The rest of the stuff is negligible.  If you want to do what Wes does, and Skim 192 KHz on 7 bands during a contest, you will definitely need more CPU - something with a Passmark of ~9000 is probably about right.  I hope to have one soon.  73, N4ZR] 


Setting up HDSDR
HDSDR originally appeared as "Winrad", written by Alberto, I2PHD.  It has now been further developed by Mario Taeubel in Germany.  The best documentation may be the User Guide by I2PHD as updated by Alan, G4ZFQ.

First let us set up this program so it can be used as a conventional receiver with a pair of headphones.  Since you will eventually have two copies of this software running, make certain you install it in two distinct subdirectories with different names.  I find it useful to immediately create two shortcuts on my desktop with these distinctive names so I do not confuse them.  Now go to the directory where you saved CWSL_Tee, copy the important file, EXtio_CWSL.dll, and paste it into each of the two HDSDR directories.  Make certain Skimmer Server is running.  Now start one copy of HDSDR.  You will get a little window at the upper right that allows you to choose which band HDSDR should demodulate.  And in this window there is this strange parameter called Scale Factor.  Petr points out that Skimmer Server produces 24 bit data but since some programs can use only 16 bit data CWSL trims the data to 16 bit.  The Scale Factor specifies which bits to retain after trimming.  For our purposes you need to choose some value between 16 and about 10.  I use the highest number that gives me noise in the waterfall when the band is "dead"  Try 13 for a first attempt with an HF band



 Go to Sound Card, ignore the "RX Input (from Radio) since the input from the radio is controlled by the EXtio_CWSL file.  For "RX Output (to Speaker)" select the sound card you use for audio from the internet, for example.  Select Bandwidth.  If you are using 192 khz bands in Skimmer Server you should get something like this:




 You may want to temporarily select a different Output Sampling Rate for the soundcard you use for your headphones but eventually it is best if the Input rate can be evenly divided by the Output rate.  For use with RCKskimmer select an Output Sample Rate of 48000 Hz, not 12000 as illustrated above.

Click Options / Select Input.  It should already read "CWSL".  Now you should be able to start the program and tune the frequency by clicking on the waterfall or clicking on the digits in the LO frequency and then the Tune  digits.  Some "gotcha's" -- clicking on the S-meter determines where the squelch level is set so be careful you don't squelch the receiver and then wonder what is wrong.  I also have spent hours trying to solve problems when it was squelched or the Mute button or the wrong mode button was pressed inadvertently.  After you have played with the program, perused the User Guide, figured out how to set the filter width, etc., we can go on. 

Our next tasks are the same as we would face installing RCKskimmer on any conventional HF receiver.  We need to get the audio out of the HDSDR receiver and into the RTTY decoder.  Also we need to set up Omni-Rig and its com ports so RCKskimmer can change the frequency within HDSDR's selected band. 

Installing RCKskimmer
Go to Walter's web site at http://www.walter-dallmeier.de/software-by-dl4rck/rckskimmer/ and download the program as well as his "Predefined Search-Frequency Setup" files.  While you are there you probably will want to join his email forum where the program is supported.  Install the software in two differently named subdirectories and put distinctive shortcuts to the two instances on your desktop.   When the installation program asks whether it should install Omni-Rig say "Yes".

Installing the plumbing
Return to your first instance of HDSDR and select Soundcard.  Ignore the "RX Input" but change "RX Output" to Line 1 (Virtual Cable).  Make certain that HDSDR is in LSB mode with a filter bandwidth that is appropriate (2.6 to 3 khz). 

Now go to "Options".  This is a confusing step.  We don't  want "CAT to RADIO (Omni-Rig)".  That is because we are not using Omni-Rig to send controls from HDSDR to the QS1R -- that is the job of  the EXTio_CWSL file.  We do want to set "CAT to HDSDR" because we need CAT control between RCKskimmer and HDSDR.  Here set the port to Port 11, the Baud rate to 9600, PTT Activation to "None", and then, importantly, click "activated" to turn it on.  (Note that the Port sub-menu goes "grey" when the "activated" button is pressed



 Now let's go to RCKskimmer.  Under "Setup / Program Setup / Digi Module" you will see




UNLIKE the illustration, unclick the "Enable Telnet Server" and the "Send your received spots to RCK-Cluster" until you have everything working and are confident your spots are correct --  another "gotcha".  Fill out the information to the left and select as the Sound Card Device, Line 1 (Virtual Audio Cable).  UNLIKE the illustration, set the Soundcard Sample Rate to 48000, not 12000.

Change the check marks to correspond with the illustration in the lower left.  Since telnet port 7300 is probably being used by Skimmer Server, change this Telnet Server port to 7200.   Eventually the second instance of RCKskimmer might use port 7100.

Note that it is important to have the check in the box for "Additional use Master Call data for detection."  A check here lowers the validation requirement for call-signs that are in the database but does not prevent detection of calls not in the database.

Now let's go to the tab "TRX Control".  Under "Omni-Rig Control" click "Use Rig 1" and then "Settings"

.

HDSDR emulates a Kenwood.  So select that in the "Rig type" menu and fill in the rest of the Window.  Then click "OK"

IN the "Search Options" tab I use the following parameters





On "Jump Stepp (Hz)" select 2400 hz.  Even though you can select a wider bandwidth Walter says the program does a poor job of decoding the edges and he says to leave it here.   It may be my imagination but I think HDSDR seems to introduce some latency and I think I get better results when I use the values of 5, 7 or 8, and 20 seconds instead of the default dwell times.  

Now go to the "Search Frequencys" tab.



Here select a frequency range that lies within the band that HDSDR is demodulating.  The "Use Advanced Search Mode" changes the bands as the propagation changes during a day so we can't use that feature because we can't conveniently change bands. To use your customized dwell times instead of the default values you must select "customized" under "Search Type"

The illustration above shows only one frequency range chosen.  But you could easily add the 14070  BPSK range as well if you wanted to skim for both modes on the same band.  If there is a lot of US domestic RTTY traffic around 7.08mhz  I often have two RTTY frequency regions in my 7mhz  RTTY skimming.

OK.  You should be ready to press "Start" and watch the waterfall decode RTTY signals. 

Remember, once again, Skimmer Server must be started and the FPGA loaded before you start HDSDR.

Install a second instance of HDSDR and RCKskimmer
Now repeat this process, configuring your second instance of HDSDR and RCKskimmer using the com port 13-14 pair, virtual audio cable line 2 and telnet port 7100.  Another "gotcha" --  in HDSDR the settings for Sound Card and CAT to HDSDR port sometimes get confused when you close an instance of HDSDR and then restart it.  Always check these settings when starting the program so you don't send the audio to a copy of RCKskimmer that thinks it is scanning a different band.

Calibrating the frequency in HDSDR
Eventually if you are as compulsive as I am you will want to calibrate your receiver to make certain the RTTY spots report correct frequency.  If you have been running Skimmer Server you undoubtedly have arrived at a FreqCalibration number in your ini file that gives you respectably accurate CW spots.   For example, on my QS1R this value is currently 1.0000085 which is the ratio of the Displayed Frequency divided by the True Frequency.  If I understand things correctly, this correction is applied in the PC after the CWSL_Tee so your RTTY spots are uncorrected.  To apply this correction to each instance of HDSDR tune the software to some frequency, say 14090000hz, and navigate to "Options / RF Front End + Calibration".  Now tell the software the "true" frequency is 14089880 (Tuned freq / SkimServer FreqCalibration or 14090.000 / 1.0000085).

Setup WinTelnetX to funnel spots to RBN
If everything is working correctly, you now have spots from three sources: Skimmer Server and two instances of RCKskimmer.  How do you get the spots to the RBN.  I use K1TTT's WintelnetX to funnel all the data together into Aggregator.  That is the topic of my last previous blog post.

Where can I find RTTY skimmer spots?
Currently there are RCKskimmer operators who send their spots to Walter's DL4RCK DX cluster who don't yet send them to RBN.  However, many of the DX clusters which carry RBN skimmer spots also are picking up all the spots from Walter's site.  To check whether your favorite skimmer DX cluster has all of Walter's data, you can Ttelnet to his site, dl4rck.ham-radio-op.net  port  8000, and give the command "sh/fullinfo" to get a listing of users.

WZ7I Skimmer Current Configuration
Recently I needed to purchase a second QS1R to use in recording contests.  But since contests aren't on the air all the time I am using the second SDR to cover more CW and RTTY bands.  So the current installation here is both QS1R receivers, each running multiple bands on Skimmer Server and two bands of RCKskimmer, for a total of four bands of RTTY skimming.  All the telnet data goes into WintelnetX and Aggregator.  




It isn't pretty but it works.  The white things are metal drawer dividers for silverware from the local hardware store house wares department which I purchased after my wife inexplicably asked for her cake cooling racks to be returned.  On the front rack are two-way and a four-way Advanced Receiver Research power dividers, then the KD9SV Front End Protector from http://www.radio-ware.com/ and finally a Clifton Laboratories Z10046A preamp.  This is fed from a HyGain Hy-Tower vertical.

Good luck and let me know if I can help or if you see errors.

73, Wes, WZ7I


Magic with the QS1R - Two Apps at Once (Part 1)

Well, Wes, WZ7I has done it again.  This time, he has developed a way to run both Skimmer Server and the DL4RCK RTTY Skimmer application on the same receiver at the same time.  Stick with us, boys and girls, and Wes will explain how it is done.


The following block diagram explains succinctly what is involved.  It looks a little intimidating, but it really isn't hard to get going.


Over to you, Wes.



Running RCKskimmer and CW Skimmer Server on the QS1R Concurrently

When Alex, VE3NEA, introduced Skimmer Server for the QS1R it seemed to me he had accomplished two significant things.  In a display of coding virtuosity he had written compact software that used the SDR's FPGA to create 7 receivers.  Secondly, his software on the PC did an excellent job of decoding CW on each of these receivers.  More recently Petr Paryzek introduced CWSL_Tee.dll, a program that forms a "Tee" between the FPGA code and the PC code allowing you to tap into the data and feed it to other SDR applications while the PC portion of Skimmer Server skims the CW bands.  One such application is Petr's CWSL_File.exe that makes it easy to record each of these bands for later playback through SDR software.  Another application is his Extio_CWSL.dll which serves as an Extio file for Winrad or HDSDR allowing you to tune through one of these bands with headphones plugged into a computer sound card like using a conventional receiver.  The audio from this "HDSDR receiver" can be piped to any digital application like MMTTY or  RCKskimmer, DL4RCK's RTTY skimmer. 

On my QS1R SDR I have been running RTTY skimming on two HF bands while using CW Skimmer Server to skim seven bands of CW.  But nothing comes free and this arrangement introduces some limitations:

1)  During the day I no longer automatically change the bands that Skimmer Server covers using Aggregator's ini file rotation capability.  Nor can I use RCKskimmer's ability to change bands.  Each instance of HDSDR / RCKskimmer must sit on the same band around the clock unless I manually intervene to change bands (which is quite simple to do).
2)  RCKskimmer tunes the frequency in HDSDR by using com ports via Alex's program, Omni-Rig.  But Omni-Rig can control only Rig 1 and Rig 2, or two instances of HDSDR, in our case.  So we are limited to running RCKskimmer on only two of the seven Skimmer Server bands on a single computer.
3)  Finding a computer fast enough to handle contest peak decoding for Skimmer Server has been a challenge.  So how could a computer do all of that plus run two copies of HDSDR and two copies of RCKskimmer at the same time?  This turned out not to be a problem with recent computers because if the bands are full during a CW contest, there aren't many RTTY signals to spot and all this other software can be turned off.

So let's assume you have a machine currently running a QS1R and Skimmer Server.  How do we get all this other stuff going?

Installing CWSL_Tee.dll
Download the latest version of CWSL.zip from http://ol5q.nagano.cz/soft.php?page=Software  and carefully follow Petr's installation instructions.  Note where you put the file EXtio_CWSL.dll because later you will need it.  Start Skimmer Server and on the Skimmer tab change the receiver from the QS1R to CWSL_Tee on QS1R.  In several months of use I have found no disadvantage to using CWSL_Tee all of the time with Skimmer Server.  There appears to be no loss in sensitivity or degree of robustness.  Your Skimmer Server application should function entirely as before.



Install Virtual Audio Cables and Virtual Serial Ports
Install  the program, Virtual Audio Cable.  It costs $25 US but I have used it for years and it has a generous license agreement.  It is worth the investment for any SDR user.  You will need to set up two cables, for our example Cable 1 and 2.



Start Virtual Audio Cable Control Panel and for each cable change SR (sample rate) to 11025 to 48000 and click "Set" then "Exit".

If you are running Windows 7 you need to add an additional step.  Go to the Control Panel, Hardware and Sound, Sound, Manage audio devices.  Click on the Playback tab, select "Line 1, Virtual Audio Cable".  Then Click on Properties, Advanced, and from the pulldown menu select "2 channel, 16 bit, 48000 Hz (DVD Quality)", and then "OK".  Repeat this for "Line 2, Virtual Audio Cable".  Now repeat both steps for the two lines under the Recording Tab.  Your cables are now set up.

VSP Manager is an excellent piece of software from K5FR.  (http://k5fr.com/ddutilwiki/index.php?title=VSP_Manager)  If you are a licensed amateur email Steven with your call letters and he will give you access to the program.  Otherwise, you will need to use another virtual com port program.  After installation of  the software you need to set up 4 virtual com ports for communication between HDSDR and RCKskimmer.  For pedagogical purposes let's call them port 11 which talks to port 12 and port 13 that talks to port 14. 

[It will help you to follow along if you use the same port numbers that Wes did in this article.  You'll need to set up one pair for each band on which you plan to run RCKSkimmer. - Ed.]


Unlike the above image, your VSP Manager screen will not yet tell you which application is using each port until we set up the applications.

Setting up HDSDR
HDSDR originally appeared as "Winrad", written by Alberto, I2PHD.  It has now developed by Mario Taeubel in Germany.  You will probably want a copy of the User Guide by I2PHD from http://www.sdradio.eu/weaksignals/bin/Winrad_UG_1.32.pdf  The program has changed some since Alberto wrote the guide but this is the best documentation available. 

First let us set up this program so it can be used as a conventional receiver with a pair of headphones.  Since you will eventually have two copies of this software running, make certain you install it in two distinct subdirectories with different names.  I find it useful to immediately create two shortcuts on my desktop with these distinctive names so I do not confuse them.  Now go to directory where you installed CWSL_Tee,  find the important file, EXtio_CWSL.dll, and copy it into each of the two HDSDR directories.  Make certain Skimmer Server is running.  

Now start one copy of HDSDR.  You will get a little window that allows you to choose which band HDSDR should demodulate.  And in this window there is this strange parameter called Scale Factor.  Petr points out that Skimmer Server produces 24 bit data but programs like HDSDR use 16 bit data so the Scale Factor specifies which bits to retain after trimming.  For our purposes you need to choose some value between 16 and about 10.  I use the highest number that gives me noise in the waterfall when the band is "dead"  Try 13 for a first attempt with an HF band. 


Please go to Part 2 for the remainder of this post.

Thursday, March 14, 2013

Multiple Receivers One Aggregator by WZ7I



We're indebted once again to Wes, WZ7I, for the following post.  If you've ever wondered how to easily send spots from two or more receivers through a single Aggregator to the RBN, this is for you


Using WinTelnetX to Funnel Spots from Two Receivers to Aggregator

With the introduction of RCKskimmer, the RTTY skimmer software from Walter, DL4RCK, RBN contributors have asked for directions about how to send RTTY skimmer spots as well as their CW spots to the Aggregator and then to the RBN.  One way to do this is to use WintenetX software from Dave, K1TTT.  For those of us who are not computer cognoscenti, Dave's software at first may appear complex so this brief guide is designed to help get it working.  I wish to thank Dave for his gracious help in preparing this blog post and for Dick, W3OA, for optimizing the configuration.

I have this working on both 32 bit Windows XP and 64 bit Windows 7 so you should not run into operating system issues. 

As a demonstration of how to set up the software, let's take the example of one computer running CW Skimmer Server on a QS1R receiver and a second computer fed by another radio, running a copy of RCKskimmer, WinTelnetX and Aggregator.  Your station will almost certainly be different but the modifications to the configuration will not be difficult. This approach becomes increasingly useful when you have multiple spot sources - if you really are using just two, you may choose simply to use two instances of Aggregator to feed the RBN server.

How should WinTelnetX be configured?  It will have one "input" port to obtain CW spots from Skimmer Server, an almost identical "input" port to obtain RTTY spots from RCKskimmer, and an "output" port to send the combined data stream to Aggregator.  Then we need to add plumbing between the three ports.

Install WinTelnetX
First, download the latest version of WinTelnetX from Dave's web site

Expand the zipfile into a new folder, typically, Program Files\WinTelnetX or Program Files (x86) for 64 bit OS.  (If you install somewhere other than under Program Files then you won't have to deal with the administrator permission prompts.)  Now start the program and choose "Run" if you get a security warning that the publisher is unknown.  This is what you will see: 



Before we begin, let's give our configuration (an ini file) a name.  Using the top menu click File>Save As, navigate to the directory where you installed WinTelnetX and save it as 2_rx_to_aggregator.ini

CW Skimmer Server Port
Now let's set up an "input" port to receive CW spots.  Using the menu navigate to Setup / Add New / Network Connect and you should see:



First, let's edit the Name to "CW Skimmer".  The QS1R is running on another computer so I went to that machine, obtained a command prompt, ran the command "ipconfig", and learned that its local ip address was 192.168.1.12 which I entered in the "Host Name or IP" box of the Net Connection Setup window.  I have Skimmer Server set to to the default telnet port number of 7300 so that must be entered here to replace the default "Port Number" of 23.  Change the Port Data Type to "Direct".  Now click "OK" and up pops the "Connect Script Setup" window.  


 
For the Prompt type "callsign:" and for the Response enter  your call, as in "WZ7I".  Select "Enable automatic reconnect" and enter something like 90 seconds. Now click "OK".  Note that at the bottom of the newly labeled CW Skimmer port window there are five icons which give Help information as you run your mouse over them, if this is the currently active window. 

RTTY RCKskimmer Port
Now we need to duplicate this process to configure a port to obtain RTTY Spots from RCKskimmer.  On the Program Setup window of RCKskimmer click on "Enable Telnet Server" and leave the default port at 7300 since that port is not in use already on this machine.   If Skimmer Server were running on the same computer I might change RCKskimmer's telnet port to 7200. 

Returning to WinTelnetX click on Setup / Add New / Network Connect.  Let's name this port RCKskim.  Since my copy of RCKskimmer is running on the same computer as WinTelnetX we can use "localhost" as the ip address and then enter "7300" as the "Port Number".  Again, change the Port Data Type to Direct.


 Once again set up the Connect Script:
Prompt: "callsign:"
Response: "WZ7I"
Select "Enable autoconnect in 80 seconds" and press OK

Aggregator Port
OK, one more port to go -- the port to send the combined spots to the Aggregator.  To figure out how to set up this port, let's first take a look at Aggregator.   


On the "Combine Skimmers" tab, fill out the information and click on the box to enable this function.  Now go to the "Connections" tab where the Skimmer Connection information tells Aggregator where to look for the incoming data.  If you have been using CW Skimmer Server this should be the address of your QS1R but now you want to change it to be the "output" port you are going to set up in WinTelnetX.  In my case Aggregator sits on the same computer as WinTelnetX so I will leave the "IP Address" as "127.0.0.1" or "localhost" and set the "Port:" as "23" since I already have RCKskimmer set to use port 7300 on this machine.  Enter your call and delete any password

Now let's return to WinTelnetX to set up an outgoing port.  

 
 So go to Setup / Add New / RX Network Connect.  Note that this is a different type of port than the incoming ports from the radios that we have previously used.  Let's name this "To Aggregator", set the "Host Name or IP"  to "localhost" and the "Port Number" to "23".  Change "Port Data Type" from "Cluster User" to "Direct".  
 
Click "OK" and in the empty Connect Script Setup window click "Enable autoconnect in 5 seconds".  Now click "OK".

We now have all the ports configured and all the windows that we will need.  So click on Window>Tile to see the four windows: the three port windows plus the Main console window.  Let's try out the incoming radio ports.  Click just to the right of the little white box in the upper left corner that says "All" and select the menu item "CW Skimmer".  Now click just to the right of this down arrow on the blue and red Connect icon.  If we have things correct the port should log into your QS1R and start CW spots rolling through the window.  Repeat the process choosing RCKskim and clicking on the Connect icon.  You should get a similar login message from your RCKskimmer software. 

 Configuring the Piping
 So far these spots don't know where to go.  So let's install some pipes to get them from the input ports to the output port. In WinTelnetX go to Setup / Routes.  Make certain "2 Way" is selected.  Select "Route From" "CW Skimmer" and "Route To" "To Aggregator" and then click "Add Route"


Now Select "Route From" "RCKskim" and "Route To" "To Aggregator" and then click "Add Route".  Now click "Done"
 

Start Aggregator, on the "Combine Skimmers" tab make certain the enabling check mark is in place, then go to the "Connections" tab. 

Move to the WinTelnetX application, select "All" in the white window in the upper left corner, and click on the blue and red connect icon.  Now return to the Aggregator / Connections tab and click on "Connect".  It may take 30 seconds or so but you should get the green message, "Connected to the Skimmer Combiner ...". 

Now you should be able to go to the Status tab and see the spots that are being sent to the RBN server.  Go to WinTelnetX and save the setup again with File/Save.
 
Create a Shortcut
You can start WinTelnetX automatically by creating a shortcut for it and putting that shortcut in the Startup Menu or by creating a Scheduled Task in Windows.  To create the shortcut right click on WinTelnetX.exe and select Create Shortcut.  Then right click on the shortcut and select Properties.  Change the Target box for the shortcut to look like:

C:\Program Files\WINTELNETX\WinTelnetX.exe 2_rx_to_aggregator.ini –start

One warning… if you have spaces in your ini file you will have to put quotes around it.  There should also be a space between the ini file name and the “-start” flag, it may not look like that in certain fonts.

When you use that shortcut it will load the ini file and then start all the ports at once.

If you have more than two skimmer spot sources, you can always add another "input" port to your configuration. 

Good luck.  Enjoy.