Arduino USB WSE Hardware Controller

Arduino WSE Project
Linrad is a very powerful SDR that can be used with a variety of hardware.  

I have used it with a superb receiver designed and built by Leif, SM5BSZ, the creator of Linrad.  Leif's receiver hardware is known as the WSE or "Weak Signal Equipment" receiver.

The WSE hardware was designed to communicate with the computer via the parallel port.  Parallel ports have become less common in the years since the WSE was introduced, and numerous users have reported problems with using the parallel port with a wide variety of hardware and software since the introduction of Windows 10.

I have tried several parallel port cards said to work with Windows 10 and all have failed to work properly.

Thus I decided to make an Arduino adapter that would act as an interface between a modern PC and the parallel control port on the WSE hardware, allowing the WSE hardware to be controlled via a USB port.

In order to accomplish this I wrote some code into a dedicated wsusers_hwaredriver.c file to be compiled with Linrad, and of course also wrote a small Arduino sketch file to run on an Arduino Demilamove or Uno.

With this combination, the Arduino receives serial data over the USB port from Linrad and then sends this data to the WSE hardware in the form the WSE requires, thus eliminating the need for a parallel port.

Not only does this "future-proof" the WSE against the forthcoming unavailability of parallel ports, but with the current price for generic Arduino Uno R3s at $3.46 including shipping, the Arduino solution is much cheaper than buying a parallel port card. Here I am using an Arduino Duemilanove just because I had several in the junk box, making my cost for this project zero.

There are no "gotchas" to this project.  The Linrad file is here.   This file just needs to be renamed to wusers_hwaredriver.c for usage under Windows and then to be placed in the Linrad source code directory before Linrad is compiled. This interface will not work under Linux. At some time in the future I may go back and add the code necessary to make it work under Linux. There also needs to be a text file named "comportfile" in the Linrad compile directory, containing values for the COM port number of the USB serial port, the USB serial port baudrate, the number of stop bits, and serial port RTS mode, with each value being placed on a separate line. Without this file, Linrad doesn't know where to send the WSE instructions. An example of that file is here.  

The Arduino sketch file is here.  

Pinouts on the DB25 from the Arduino to the WSE are the same as when the WSE is used with Linrad's default drive routines:

SELECT (RX10700) = pin 6
SELECT (RX70) = pin 7
SELECT (RX144) = pin 5
SELECT (freq,RXHFA)= pin 3
SELECT (gain,RXHFA)= pin 2
DATA = pin 17
CLOCK = pin 1
DC ground = pin 23

There is additional information on these connections on Leif's website here:

The Arduino Sketch file as written uses the following pinouts on the Arduino:

SELECT(gain,RXHFA) = pin 3
SELECT(freq,RXHFA) = pin 4
SELECT(RX144) = pin5
SELECT(RX10700) = pin 6
SELECT(RX70) = pin 7
CLOCK = pin 8
DATA = pin 9
DC ground = DC gnd

The Arduino is powered via the USB port.

Copyright 1997-2016 COPYRIGHT Roger Rehr W3SZ. All Rights Reserved

Brought to you by the folks at W3SZ