All Projects β†’ Guenael β†’ rtlsdr-wsprd

Guenael / rtlsdr-wsprd

Licence: GPL-3.0 license
WSPR daemon for RTL receivers

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to rtlsdr-wsprd

Localradio
πŸ“» LocalRadio is "Radio for Cord-Cutters" – a Software-Defined Radio (SDR) app for your Mac and mobile devices. With an inexpensive RTL-SDR USB device, LocalRadio provides a casual, home-based radio listening experience for your favorite local frequencies - FM broadcasts/free music/news/sports/weather/public safety & aviation scanner/etc.
Stars: ✭ 269 (+189.25%)
Mutual labels:  radio, sdr, rtl-sdr
urh
Universal Radio Hacker: Investigate Wireless Protocols Like A Boss
Stars: ✭ 9,060 (+9641.94%)
Mutual labels:  radio, sdr, rtl-sdr
RTLion
Multipurpose RTL-SDR Framework for RTL2832 based DVB-T receivers
Stars: ✭ 88 (-5.38%)
Mutual labels:  radio, sdr, rtl-sdr
Airspy Fmradion
Software decoder for FM/AM broadcast radio with AirSpy R2 / Mini, Airspy HF+, and RTL-SDR
Stars: ✭ 59 (-36.56%)
Mutual labels:  radio, sdr, rtl-sdr
readsb
ADS-B decoder swiss knife
Stars: ✭ 114 (+22.58%)
Mutual labels:  decoder, sdr, rtl-sdr
Easy Sdr
This project is about creation of affordable and easy-to-manufacture prototypes of PCBs which are used to expand the capabilities of existing low-cost SDR receivers based on RTL2832U chip.
Stars: ✭ 275 (+195.7%)
Mutual labels:  radio, sdr, rtl-sdr
vor-python-decoder
Decodes VOR signal from WAV file to get the bearing to your position
Stars: ✭ 33 (-64.52%)
Mutual labels:  radio, sdr, rtl-sdr
Rtlsdr Scanner
A cross platform Python frequency scanning GUI for the OsmoSDR rtl-sdr library
Stars: ✭ 544 (+484.95%)
Mutual labels:  radio, sdr, rtl-sdr
Qspectrumanalyzer
Spectrum analyzer for multiple SDR platforms (PyQtGraph based GUI for soapy_power, hackrf_sweep, rtl_power, rx_power and other backends)
Stars: ✭ 677 (+627.96%)
Mutual labels:  radio, sdr, rtl-sdr
Soapy power
Obtain power spectrum from SoapySDR devices (RTL-SDR, Airspy, SDRplay, HackRF, bladeRF, USRP, LimeSDR, etc.)
Stars: ✭ 88 (-5.38%)
Mutual labels:  radio, sdr, rtl-sdr
PlotRTL1090
3D visualization of air traffic through RTL-SDR (dump1090) and MATLAB
Stars: ✭ 107 (+15.05%)
Mutual labels:  sdr, rtl-sdr
vdlm2dec
vdl mode 2 SDR decoder
Stars: ✭ 56 (-39.78%)
Mutual labels:  sdr, rtl-sdr
Gnuradio
GNU Radio – the Free and Open Software Radio Ecosystem
Stars: ✭ 3,297 (+3445.16%)
Mutual labels:  radio, sdr
Red Pitaya Notes
Notes on the Red Pitaya Open Source Instrument
Stars: ✭ 205 (+120.43%)
Mutual labels:  radio, sdr
radio-astronomy-fftw
fftw3 based radio-astronomy data collection and dissemination (see project on hackster.io website)
Stars: ✭ 22 (-76.34%)
Mutual labels:  sdr, rtl-sdr
rtl-power-fftw
Power spectrum for RTLSDR dongles.
Stars: ✭ 139 (+49.46%)
Mutual labels:  sdr, rtl-sdr
SDR Matlab LTE
πŸ“‘ Using Software Designed Radio to transmit LTE downlink signals at 2.4 GHz
Stars: ✭ 21 (-77.42%)
Mutual labels:  radio, sdr
Look4sat
Amateur radio and weather satellite tracker and passes predictor for Android inspired by Gpredict
Stars: ✭ 160 (+72.04%)
Mutual labels:  radio, sdr
gqrx
Software defined radio receiver powered by GNU Radio and Qt.
Stars: ✭ 2,345 (+2421.51%)
Mutual labels:  sdr, rtl-sdr
SW-Chinese-received-frequency
δΈ»ζ΅ε›½ι™…δΈ­ζ–‡η”΅ε°ηŸ­ζ³’ζŽ₯ζ”Άι’‘ηŽ‡
Stars: ✭ 46 (-50.54%)
Mutual labels:  radio, sdr

rtlsdr-wsprd -- WSPR daemon for RTL receivers

rtlsdr-wsprd

Project Status Workflow Status Last commit Commit activity LGTM Alerts LGTM Grade

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 Raspberry Pi OS, follow these steps:

echo "== Install dependencies"
sudo apt-get update && sudo apt-get -y install build-essential clang cmake libfftw3-dev libusb-1.0-0-dev libcurl4-gnutls-dev help2man ntp git

echo "== Install rtl-sdr library (on RPi, don't use your distro package)"
git clone https://github.com/osmocom/rtl-sdr
cd rtl-sdr
mkdir -p make
cd make
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -DDETACH_KERNEL_DRIVER=ON -Wno-dev ..
make
sudo make install
cd ../..

echo "== Install rtlsdr-wsprd"
git clone https://github.com/Guenael/rtlsdr-wsprd
cd rtlsdr-wsprd
make
sudo make install

echo "== Start/test rtlsdr-wsprd"
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.

    For Raspberry Pi, you can download official images here.

  2. It's a good practice to update your OS. With Pi OS, run this command as usual:

    sudo apt-get update && sudo apt-get upgrade
  3. Install dependencies & useful tools (for example, NTP for time synchronization). Example with a Debian based OS, like Rasbian, or Raspberry Pi OS:

    sudo apt-get update && sudo apt-get -y install build-essential clang cmake libfftw3-dev libusb-1.0-0-dev libcurl4-gnutls-dev help2man ntp git
  4. Install rtl-sdr library manually. Do not use the librtlsdr-dev package on Raspberry PiOS. There is a know bug with this lib and rtlsdr_wsprd will not be able to get enough samples (don't decode anything & 100% CPU pattern).

    git clone https://github.com/osmocom/rtl-sdr
    cd rtl-sdr
    mkdir -p make
    cd make
    cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -DDETACH_KERNEL_DRIVER=ON -Wno-dev ..
    make
    sudo make install
    cd ../..

Note: You may have to re-plug you dongle if it was already connected, or play with udev if not automatically detected.

  1. Clone this repository:

    git clone https://github.com/Guenael/rtlsdr-wsprd
  2. Build the application:

    cd rtlsdr-wsprd
    make
    sudo make install
  3. Finally, start the application with the right parameters/options for you (frequency, callsign, locator etc... Fake example below):

    rtlsdr_wsprd -f 2m -c A1XYZ -l AB12cd -g 29

Container Image

As an alternative to the above steps, a pre-built container image containing rtlsdr-wsprd is available for use with Docker or Podman.

The RTL DVB kernel modules must first be blacklisted on the host running the container. RTL-SDR itself is not required on the host running the container. This can be permanently accomplished using the following commands:

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

If the modprobe -r command errors, a reboot is recommended to unload the module.

You can then start the container with the right parameters/options for you (frequency, callsign, locator etc... Fake example below):

docker run --rm -it --pull=always --device=/dev/bus/usb ghcr.io/guenael/rtlsdr-wsprd:latest -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 integrate 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 usually drift a lot

Performance & hardware tests

Some performance tests using:

  • Raspbian GNU/Linux 11 (bullseye) for Raspberry Pi devices
  • rtlsdr-wsprd version 0.4.2
  • Build with clang -O3 -std=gnu17
Hardware Supported RX Load Decode burst
RPi-1 βœ”οΈ 23.2% 8.4s
RPi-2 βœ”οΈ 13.5% 4.1s
RPi-3 βœ”οΈ 10.9% 2.1s
RPi-4 βœ”οΈ 5.8% 1.1s
PC (i7-5820K) βœ”οΈ 1.7% 0.5s
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].