I’ve been trying for a while to get WSPR to work on a remote computer, and I finally managed to get the setup to work. The initial attempt was with an embedded PC, and it was not successful because of various problems that all resulted from the fact that its processor was old (an NSC SC1100 x86 processor). I tried again with a new small-form-factor PC (apparently they are called nettops), and this attempt succeeded.
I first experimented with a borrowed Giada N10 running Linux (Ubuntu 10.04). The owner already installed Linux, so all I had to do was to install WSPR and try it out. It worked without any serious problems; I installed the prerequisite software, downloaded the sources, and compiled it.
On the N10 I tried, Wifi networking did not work. I probed a bit and discovered that the wifi card is a USB card for which Ubuntu does not have built-in drivers. You can download a driver from the manufacturer’s web site and install it, but it’s a hassle. Also, I didn’t like the fact that it only had an internal wifi antenna with no connector for an external antenna. So instead of ordering an N10, I ordered a Giada N3, which is similar (dual core Atom 330 processor and Nvidia Ion graphics card), but has an external wifi antenna. The N3 is also a bigger (more than twice the thickness of the N10), but still small enough for my purposes. This turned out to be a good move, because the N3 has a wifi card that’s better supported on Linux. When I installed Ubuntu (from a USB stick that I prepared with UNetbootin), it detected the Ralink wifi card and installed a driver.
I installed WSPR on the N3 and tried out the installation with an external USB sound card. It worked right out of the box. I tried WSPR using the internal sound card, and it also worked. The only analog audio connectors on the N3 are headphones out and microphone in, so I connected the Softrock’s output to the microphone input. The fact that this works is not obvious, because on many computers the microphone input jack only supports mono, which means that the computer cannot demodulate the radio signals properly. But on the N3 the sound card’s microphone input is a stereo input, so it worked just fine. Internal sound cards are not always very good. I did not measure the sound card, but it can certainly decode WSPR signals (perhaps it fails on more signals than a high-end sound card; I didn’t check).
What type of sound card is it? ALSA, the Linux sound subsystem reports different card types in different programs. The ALSA utilities reports that it is an Nvidia ALC622. The ALC622 is a codec chip made by Realtek. It has 20-bit ADCs and DACs and supports sampling rates of up to 96ks/s. ALSA does support 96ks/s and the analog bandwidth is indeed around 96kHz (more on this later). In other places ALSA reports the audio card to be an Nvidia MCP79 or MCP7A. I guess that the analog interfaces indeed use the Realtek ALC662, and that the digital audio interfaces (HDMI and S/PDIF) might be part of the Nvidia chip.
Here is the Softrock (in it’s cool paper enclosure) hooked up to the N3.
The N3’s power consumption is specified as 23W, and it is powered by a 12V 5A power supply brick. A fan cools the N3; as far as I can tell, it’s on all the time, and it does not seem to slow down. It is fairly loud, which is annoying when you use the unit in a quiet room. It’s really unfortunate that the manufacturer did not do more to quiet down the unit; dissipating 23W should not require a noisy fan. And when you are not watching video or playing games, it probably consumes a lot less than 23W. Too bad, but for use as a remote computer it’s not that important.
As I was testing WSPR on the N3, I realized that I also need a software radio application that shows a wide spectrum in real time. On my Windows XP laptop, I use SDR-Radio for this purpose. I fire it up, wander between the bands, and check if I see any signal on the spectrum display. If something goes wrong, such as a missing power supply to the Softrock or the active antenna, I discover this very quickly. If I only rely on WSPR, it takes a long time to figure out that something is wrong; each receive cycle takes 2 minutes, and it does not necessarily receive something in the first 2-minute period. A real-time spectrum display is really useful.
SDR-Radio only works on Windows, and the same is true for Rocky. So I decided to give quisk a try. I never used it before, but I was able to download it and build it without any significant difficulties. Like WSPR, it is a Python program that also uses some C code that needs to be compiled. Unlike WSPR, you need to edit a configuration file; you can’t configure it using menus and dialogs. It’s less convenient, but James Ahlstrom, the author, provides many sample configuration files. When I ran quisk, it shows signals, but I quickly realized that it was not actually changing the Softrock’s frequency when I told the program to change bands. I just kept seeing the same signals. I modified the Python code that controls the Softrock to figure out what was going on, and eventually discovered that the code was not converting correctly the data that it was sending to the Softrock through the USB interface. I fixed the problem and quisk started to work fine. As I wrote above, the internal sound card supports 96ks/s sampling rate, which allows you to see almost 100kHz of radio spectrum simultaneously. This is very cool, and was a new experience for me (my USB sound card does not work well at 96ks/s, so I always use 48ks/s).
At this point, I had both WSPR and quisk working when the N3 was connected to a monitor. But the idea was to run the N3 remotely. So I switched to using these programs from another computer using ssh and X11 forwarding. Ssh (secure shell) allows you to log in to a Linux machine from another Linux machine or from Windows or a Mac. When you log in from another Linux machine, you can forward X11, the graphics environment, to the machine you are connecting from. I connected to the N3 from an Ubuntu installation running in a virtual computer (using the free VirtualBox) running under Windows XP on my laptop. I could run both WSPR and quisk on the N3 and see the graphical user interface on the Laptop’s screen. WSPR ran just fine, but quisk did not. When I was listening to a station, the audio stuttered. Initially I thought that the Atom CPU was not fast enough to perform the DSP in real time, but after thinking about this for a while I realized it might stutter because it fails to update the display fast enough through the X11 forwarding. I wrote to James asking for advice, and he replied that the quisk configuration file has an option that controls the display refresh rate, whose default is 7Hz. I slowed it down to 1Hz and then to 0.5Hz. The stuttering was gone, but I was still able to see stations on the spectrum display and to tune them.
Now that both WSPR and quisk were working when the computer was working without a monitor, I moved it and the Softrock to a box on the roof. The box has power and an Ethernet connection. Having quisk really helped, because the first power supply I used for the Softrock did not work. The next one did, and everything was working. I am now WSPRing remotely. Here is a screen shot from the remote installation.
When you run these program with the graphical user interface, you need to maintain the ssh connection. I wanted to run WSPR for long periods when my laptop is not connected to the remote N3, so I hacked a version of WSPR that does not open any windows or dialogs. I run this version using screen, a Linux utility that allows you to disconnect from a command window (possibly running a program) and reconnect later. Very convenient.