TUTORIAL HOW RECEIVE SSTV WITH RASPBERRY PI2 AND RTL-SDR V3 📺



On Raspberry PI install Raspian Jessie 
  • This tutorial is also on the official blog RTL-SDR.com


  • Install RTL-SDR drivers
sudo apt-get update
sudo apt-get install libusb-1.0-0-dev git cmake -y
git clone https://github.com/keenerd/rtl-sdr
cd rtl-sdr/
mkdir build
cd build
cmake ../ -DINSTALL_UDEV_RULES=ON
make
sudo make install
sudo cp ../rtl-sdr.rules /etc/udev/rules.d/
sudo ldconfig

echo 'blacklist dvb_usb_rtl28xxu' | sudo tee --append /etc/modprobe.d/blacklist-dvb_usb_rtl28xxu.conf

Now reboot to apply the blacklist, and plug in your RTL-SDR
  •  Install PulseAudio & Mplayer for playing the audio
sudo apt-get install pulseaudio pavucontrol mplayer -y 
  •  Install CSDR
sudo apt-get install libfftw3-dev -y

cd ~
git clone https://github.com/simonyiszk/csdr
cd csdr
make
sudo make install  
  •  Install NCAT for TCP server (Multi channel receiver)
 sudo apt-get install nmap -y
  •  Install QSSTV

 sudo apt-get install qsstv
  • Create virtual audio

 sudo leafpad /etc/pulse/default.pa
 
Add the following lines to the end of the file:


load-module module-null-sink sink_name=Virtual0 
 sink_properties=device.description="Virtual0"
 
Now in a terminal window run the command below to set up an RTL-SDR TCP server with ncat.

rtl_sdr -s 1200000 -f 14230000 -D 2 - | csdr convert_u8_f | ncat -4l 4952 -k --send-only --allow 127.0.0.1 

 In a second terminal window/tab run this command:

ncat -v 127.0.0.1 4952 | csdr shift_addition_cc `python -c "print float(14230000-14230000)/1200000"` | csdr fir_decimate_cc 25 0.05 HAMMING | csdr bandpass_fir_fft_cc 0 0.5 0.05 | csdr realpart_cf | csdr agc_ff | csdr limit_ff | csdr convert_f_s16 | mplayer -nocache -rawaudio samplesize=2:channels=1:rate=48000 -demuxer rawaudio -


Open pavucontrol either by going to the Raspberry Pi Start Menu -> Sound & Video -> PulseAudio Volume control, or by simply typing "pavucontrol" in at the command line. Click on the Playback tab, and set MPlayer to use the "Virtual 0" audio sink.



  •  Setting QSSTV
 You adjust the audio input for a better reception of the image.
You can use this system to receive SSTV from the ISS (International Space Station) 
at 145.800 Mhz.

You must change these values in the terminal:
 
rtl_sdr -s 1200000 -f 145800000 - | csdr convert_u8_f | ncat -4l 4952 -k --send-only --allow 127.0.0.1 
 
And:  
ncat -v 127.0.0.1 4952 | csdr shift_addition_cc `python -c "print float(145800000-145800000)/1200000"`
 | csdr fir_decimate_cc 25 0.05 HAMMING | csdr bandpass_fir_fft_cc 0 0.5
 0.05 | csdr realpart_cf | csdr agc_ff | csdr limit_ff | csdr 
convert_f_s16 | mplayer -nocache -rawaudio 
samplesize=2:channels=1:rate=48000 -demuxer rawaudio -
 
Good reception 

Comments

Bill Levien said…
Was hoping to use this to get SSTV from the ISS during this special event, but this doesn't seem to work...

I get an error with netcat:

netcat: invalid option -- '-'

Then some initialization of device and tuning

Signal Caught, exiting
Signal Caught, exiting
Short write, samples lost, exiting

User Cancel, exiting


Any ideas?

IT9YBG said…
I believe there is an error in the compilation. You redo everything on a new updated image of the Raspberry. Good luck :-)
PC said…
The command line: rtl_sdr -s 1200000 -f 14230000 -D 2 - | csdr convert_u8_f | ncat -4l 4952 -k --send-only --allow 127.0.0.1
Says bash: ncat: command not found
Changing the ncat to netcat: gives the exact same error reported by Bill Levien above.
Now off to a different approach I guess. Raspian Buster
Anonymous said…
same errors as other two. started on fresh install of PI twice.
Anonymous said…
Nice procedure. I was able to get it going in one short afternoon.

I believe the line
sudo apt-get install nmap -y
should be
sudo apt-get install ncat -y

Also the blog posting software separates many of the long command lines into more than one line. For example. the last "ncat -v ..." line looks like 5 lines on the blog page; but it is, in fact, are one long command line which should not be broken up with carriage returns.