Merge pull request #88 from Guenael/guenael

chore(readme): not decoding issue fixed & documented
pull/89/head
Guenael, VA2GKA 2021-12-15 18:46:06 -05:00 zatwierdzone przez GitHub
commit 86d8d37568
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
2 zmienionych plików z 57 dodań i 32 usunięć

Wyświetl plik

@ -25,4 +25,4 @@ clean:
rm -f *.o wsprd/*.o $(TARGETS) fftw_wisdom.dat hashtable.txt selftest.iq
install:
install rtlsdr_wsprd /usr/local/lib/rtlsdr_wsprd
install rtlsdr_wsprd /usr/local/bin/rtlsdr_wsprd

Wyświetl plik

@ -2,7 +2,7 @@
![rtlsdr-wsprd](art/rtlsdr-wsprd-web.jpg)
![Project Status](https://img.shields.io/badge/status-broken-red)
![Project Status](https://img.shields.io/badge/status-OK-green)
![Workflow Status](https://img.shields.io/github/workflow/status/Guenael/rtlsdr-wsprd/CI)
![Last commit](https://img.shields.io/github/last-commit/Guenael/rtlsdr-wsprd)
![Commit activity](https://img.shields.io/github/commit-activity/m/Guenael/rtlsdr-wsprd)
@ -12,14 +12,29 @@
## 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 *Rasbian OS* with a *4.x* Linux kernel:
To install and use your dongle on a Raspberry Pi with a Raspberry Pi OS, follow these steps:
```bash
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
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 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
make install
echo "== Start/test rtlsdr-wsprd"
rtlsdr_wsprd -f 2m -c A1XYZ -l AB12cd -g 29
```
@ -40,32 +55,47 @@ This application written in C does:
1. Install a Linux compatible distro on your device.
With **RasberryPi** devices, use a kernel **4.x ONLY**. There is a know bug related to later version 5.x.
For Raspberry Pi, you can download official images here: https://www.raspberrypi.com/software/operating-systems/
You can use this image : https://downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-2019-04-09/
1. It's a good practice to update your OS. On a RaspberryPi, run this command usual:
```bash
sudo apt-get update && sudo apt-get upgrade
```
Update your OS as usual:
```bash
sudo apt-get update && sudo apt-get upgrade
```
1. Install dependencies & useful tools (for example, NTP for time synchronization). Example with a Debian based like Raspbian:
```bash
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
```
```bash
sudo apt-get update && sudo apt-get -y install build-essential clang cmake libfftw3-dev libusb-1.0-0-dev libcurl4-gnutls-dev ntp git
```
1. Install `rtl-sdr` library manually. **Do not use the librtlsdr-dev package on RaspberryPi** 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).
```bash
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 it is not automatically recognized.
1. Clone this repository:
```bash
git clone https://github.com/Guenael/rtlsdr-wsprd
```
```bash
git clone https://github.com/Guenael/rtlsdr-wsprd
```
1. Build the application:
```bash
cd rtlsdr-wsprd
make
make install
```
1. Start the application with your right parameters, ex. for the 2m band, with a fake callsign (A1XYZ):
```bash
rtlsdr_wsprd -f 2m -c A1XYZ -l AB12cd -g 29
```
```bash
cd rtlsdr-wsprd
make
sudo make install
```
1. Finally, start the application with the right parameters/options for you (frequency, callsign, locator etc... Fake example below):
```bash
rtlsdr_wsprd -f 2m -c A1XYZ -l AB12cd -g 29
```
## Tips (for your Raspberry Pi and SDR dongles)
@ -82,13 +112,8 @@ This application written in C does:
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:
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 drift a lot
## OS & Linux kernel requirement for RaspberryPi devices
I have no idea why this app works fine for RPi with a kernel 4.x and not 5.x. Using a x86_64, rtlsdr-wsprd works perfectly fine with both versions of the kernel. This is probably related to an issue with pthread, and I have to investinage this point.
If you have some knowledge about this, your help is welcome!!
- Other no-name like : RT820, E4000, FC0012, FC0013, can work, but require modification and usually drift a lot