WSPR daemon for RTL receivers
 
 
 
Go to file
Guenael 3f61ec4bb8 fix(licence): issue with GNU GPLv3 included in this project 2021-12-11 23:05:22 -05:00
.github/workflows chore(rtlsdr_wsprd.c): minor rework 2021-12-11 02:04:35 -05:00
art chore(doc): cute icons & logo 2021-12-04 18:59:34 -05:00
signals feat(rtlsdr_wsprd.c): new load/save fct + ref signal + coef rework 2021-12-10 23:40:43 -05:00
wsprd chore: code cleanup 2021-12-11 12:30:20 -05:00
.clang-format feat(reformat): using Google c++ style everywhere 2021-12-04 15:24:12 -05:00
.gitignore chore(CI): gitpod dockerfile update 2021-12-11 21:29:03 -05:00
.gitpod.Dockerfile chore(CI): gitpod dockerfile update 2021-12-11 21:29:03 -05:00
.gitpod.yml chore(CI): gitpod badge button disabled 2021-12-11 22:20:32 -05:00
LICENSE fix(licence): issue with GNU GPLv3 included in this project 2021-12-11 23:05:22 -05:00
Makefile chore: code cleanup 2021-12-11 12:30:20 -05:00
README.md chore(CI+doc): GitPod added & readme minor fix 2021-12-11 20:52:13 -05:00
rtlsdr_wsprd.c fix(licence): issue with GNU GPLv3 included in this project 2021-12-11 23:05:22 -05:00
rtlsdr_wsprd.h fix(licence): issue with GNU GPLv3 included in this project 2021-12-11 23:05:22 -05:00

README.md

rtlsdr-wsprd -- WSPR daemon for RTL receivers

rtlsdr-wsprd

Project Status Workflow Status Last commit Commit activity Repo stars

TL;DR

This project aim at decoding WSPR signals using an RTL device, usually connected to a Raspberry Pi. To install and use your dongle on a Raspberry Pi with a Rasberian OS:

sudo apt-get update && sudo apt-get -y install build-essential clang cmake libfftw3-dev libusb-1.0-0-dev librtlsdr-dev libcurl4-gnutls-dev ntp
git clone https://github.com/Guenael/rtlsdr-wsprd
cd rtlsdr-wsprd
make
make install
rtlsdr_wsprd -f 2m -c A1XYZ -l AB12cd -g 29

Overview

This non-interactive application allows automatic reporting of WSPR spots on WSPRnet. The initial idea was to allow a small computer like a Raspberry Pi and a RTL-SDR device to send WSPR reports for VHF/UHF bands. This kind of lightweight setup could run continuously without maintenance and help to get additional propagation reports. The code is massively based on Steven Franke (K9AN) implementation of Joe Taylor (K1JT) publication and work.

This application written in C does:

  • A time alignment (2 mins, required NTPd to run on the OS)
  • Start the reception using the RTL lib
  • Decimate the IQ data (2.4Msps to 375 sps)
  • Decode WSPR signals
  • Push any spots on WSPRnet
  • Repeat, again and again...

Installation

  1. Install a Linux compatible distro on your device (ex. Raspbian for RaspberryPi)
  2. Install dependencies & useful tools (for example, NTP for time synchronization). Example with a Debian based like Raspbian:
    sudo apt-get update && sudo apt-get -y install build-essential clang cmake libfftw3-dev libusb-1.0-0-dev librtlsdr-dev libcurl4-gnutls-dev ntp
    
  3. Clone this repository:
    git clone https://github.com/Guenael/rtlsdr-wsprd
    
  4. Build the application:
    cd rtlsdr-wsprd
    make
    make install
    
  5. Start the application with your right parameters, ex. for the 2m band, with a fake callsign (A1XYZ):
    rtlsdr_wsprd -f 2m -c A1XYZ -l AB12cd -g 29
    

Tips (for your Raspberry Pi and SDR dongles)

  • Use ferrite bead on the USB cable to limit the QRN
  • Use an external clean power supply
  • Cut off the display (could help to reduce QRN)
    /opt/vc/bin/tvservice -o
    
  • Remove unused modules (for example, /etc/modules: #snd-bcm2835)
  • Use an enclosure, and ground it

Crystal stability

Most of RTL dongles use a cheap crystal, and frequency drift can effect the decoding & performance. The use of no-name RTL dongle for VHF/UHF bands usually require crystal modification, for a better one. External clock could be also used, like GPSDO or rubidium reference clock, aligned on 28.8MHz.

Some manufacturers intergrate a 0.5ppm TCXO. It's the best second option, after an external clock. Based on my personal experience:

  • NooElec NESDR SMART : Works fine out of the box
  • RTL-SDR Blog 1PPM TCXO : Works with some drift, require additional mass, or a better enclosure
  • Other no-name like : RT820, E4000, FC0012, FC0013, can work, but require modification and drift a lot

Ex: NooElec NESDR SMArt - Premium RTL-SDR w/ Aluminum Enclosure, 0.5PPM TCXO

https://www.nooelec.com/store/nesdr-smart.html