You are on page 1of 8

Decoding SSTV from a file using Linux

I find  ARISS SSTV (http://www.spaceflightsoftware.com/ARISS_SSTV/index.php)  events very exciting. To me, nothing beats receiving signals from space. But these
events also provide a nice opportunity to experiment with receivers, antennas and decoding software.

I usually record the audio and then decode it after the event. This is immensely easier than waiting for next suitable ISS pass in case I've forgotten to set up something.
This is also convenient because once I've recorded audio, I can experiment with various ways to decode it.

So, the basic idea is very simple - I'll record audio and decode it later at my own leisure. Problem is many popular SSTV packages only support decoding from audio input
devices and thus a virtual software audio device which "sits" in-between an application that plays received audio and an application that decodes SSTV (and behaves just
like any other audio device to both applications) needs to be used. 

I successfully tested this approach on several platforms:

Using RX-SSTV (http://users.belgacom.net/hamradio/rxsstv.htm) and Virtual Audio Cable (http://software.muzychenko.net/eng/vac.htm) on Windows


Using Multiscan (http://www.qsl.net/kd6cji/) and Soundflower (https://github.com/mattingalls/Soundflower) on OS-X

But my preferred platform is still Linux, I've got several laptops running Fedora around plus another few Raspberry Pis running Raspbian. I started wondering how to do
this on Linux. Finding a Linux open-source SSTV application was easy - there is an excellent piece of software called QSSTV (http://users.telenet.be/on4qz/), developed and maintained
by Johan, ON4QZ. Unfortunately for me, even though in its Sound options it is possible to select Sound Input -> From File, I could never decode any of the recordings I'd made. Maybe
I just failed to understand what this option was about, or perhaps I was just not using it correctly, I don't know. So I started wondering whether the virtual audio cable approach would
work on Linux. And this is how to do it:

Software you will need


Pulseaudio (https://www.freedesktop.org/wiki/Software/PulseAudio/) (it may have already been installed with your Linux distribution, if not simply install it from your
distribution)
Audio player that supports selecting an output device (in this example I am going to use VLC (http://www.videolan.org/index.html)) - again, the simplest approach is to
install it from your distribution
Qsstv 9.x (lower versions do not support the audio device selection). If you can't find it in your favourite distribution, you can build it from source code, the instructions
are on http://users.telenet.be/on4qz/qsstv/manual/installation.html (http://users.telenet.be/on4qz/qsstv/manual/installation.html))

Setting up a virtual audio device


Firstly, you will need to load a PulseAudio module called "module-null-sink" (if you're interested in having it included permanently, take a look at your default.pa file).

To load it manually when you need it, from your shell screen run:

$ pactl load-module module-null-sink sink_name=virtual-cable

29
Provided there were no errors reported, you can ignore the number printed out by pactl. Although Pulseaudio can best be tweaked from command line, I find the
pavucontrol GUI very handy and a real time saver. Run it as:

$ pavucontrol

If your module-null-sink loaded correctly, you should now see it in the GUI:

Start qsstv and click Options -> Configuration -> Sound. Ensure PulseAudio interface is selected:


 

Return to pavucontrl window. Click on the Recording button (remember: our Qsstv needs to record audio from our file!). 
 

Click on Built-in Audio Analog Stereo (or whatever your device is called) and from the pulldown menu select the pulseaudio virtual device previously created:
Our virtual cable is now connected to Qsstv input, the only remaining step is to play our file to this virtual source. There are numerous Linux applications that can play
audio to a specific device (this can be done from command line too!).

Playing audio to null-sink using VLC


VLC is one of the simplest applications to use for this purpose, from Audio -> Audio Device menu simply select your virtual device, load the file and you're good to go.
 

Playing audio from command line


As simple as it can possibly be:

$ paplay -d virtual-cable iss_2016-04-12_2109.wav

And proof of the pudding....


This is a screenshot of a decode in progress from a recording of an ISS pass over my QTH on 12 April 2016. The pass was somewhat unfavourable, with a 3-minute time-
off period kicking in slap-bang in the middle of a pass (hence the fading and blurred lines as the pass was coming to a close).
 

Details
Written by m0nkc
Category: Hamradio
C
Published: 13 April 2016
<
Hits: 15614
Linux (/component/tags/tag/linux)
ISS (/component/tags/tag/iss)
SSTV (/component/tags/tag/sstv)

You might also like