'Easy' installation of RTLSDR-OGN (latest) on Raspberry Pi,
based on original work done by Paweł Jałocha.
NOTE: For Raspberry Pi & Raspberry Pi 2 it's much better and easier to install Mel's image,
others (BananaPi, RK3188, Linux, etc) could also use their boostrap script.
Follow this link for detailed instructions.
Otherwise - do what it says below.
Table of Contents
Get the Raspian onto your SD card
and expand disk partition (to use the full SD card capacity):
Upgrade OS and firmware
For the GPU code to work, you need the up-to-date OS:
sudo apt-get update sudo apt-get upgrade sudo rpi-update
sudo apt-get install rtl-sdr
For other distributions than debian/ubuntu/debian-deriavates, there is a detailed guide here: http://osmocom.org/projects/sdr/wiki/Rtl-sdr#Software
Now, once the DVB-T dongle is plugged into the USB port, you should find a corresponding message in dmesg
Prevent some kernel modules to lock the use of USB DVB-T stick
(Only required if rtl-sdr was manually build and installed)
At some point in time the standard Raspian distribution began to contain drivers for the DVB-T dongles, likely to make easier for multimedia users to receive digital TV.
These drivers however are not of any use for us and they overtake the rtl-sdr driver, thus making it unusable. Here is how to disable them:
Create a file (with sudo):
sudo nano /etc/modprobe.d/rtl-glidernet-blacklist.conf
then insert the following lines
blacklist rtl2832 blacklist r820t blacklist rtl2830 blacklist dvb_usb_rtl28xxu
Save the file, then
Install required packages
sudo apt-get -y install libconfig-dev fftw3-dev libjpeg-dev libconfig9 libjpeg8
Download the binary and unpack it
For Raspberry Pi 1, choose
wget http://download.glidernet.org/rpi-gpu/rtlsdr-ogn-bin-RPI-GPU-latest.tgz tar xvzf rtlsdr-ogn-bin-RPI-GPU-latest.tgz
For Raspberry Pi 2 and other arm systems, choose
wget http://download.glidernet.org/arm/rtlsdr-ogn-bin-ARM-latest.tgz tar xvzf rtlsdr-ogn-bin-ARM-latest.tgz
There are also binaries for x86 and x86_64 targets, see http://download.glidernet.org/.
Create named pipe
Since v0.2.2 rf-reception and decoding are separate processes. They communicate via this fifo.
cd rtlsdr-ogn mkfifo ogn-rf.fifo
Set file permissions (only on Pi 1 for GPU usage)
The following five lines are only necessary if you are running the GPU code on Raspberry PI 1 - if you run without GPU (higher CPU usage) or run on other platforms (for which we don't know how to use the GPU) do not execute these commands.
sudo chown root gsm_scan sudo chmod a+s gsm_scan sudo chown root rtlsdr-ogn sudo chmod a+s rtlsdr-ogn sudo mknod gpu_dev c 100 0
If running on Kernel 4.1 or higher (check it with command "uname -r") replace the last command with
sudo mknod gpu_dev c 249 0
Receiver configuration and tuning for best performance
Now power system down, insert the USB DVB-T stick and repower on..
Attach your aerial.
The very first thing you need in order to receive the signals is to be on the correct radio frequency.
Cheap SDR receivers use cheap crystals and their frequency tolerance is about +/-50-100ppm.
At 868MHz 100ppm error makes you 86.8kHz away from the correct frequency, while frequency deviation for FLARM signals is +/-50kHz.
Technically, the software receiver can search a wide range of frequencies for radio packets but this inflicts lot of CPU, thus can only be done for stronger CPU boards, but not for Raspberry PI.
Thus you need to know how much off is the crystal of your DBV-T dongle before you proceed.
You can measure the crystal with the gsm_scan tool, run it like this:
./gsm_scan --ppm 50 --gain 20
it should receive some GSM broadcast channels and measure the frequency correction.
Notice the GSM frequency with a strong broadcast channel, even better: with one or two directly adjacent channels.
Adjust the gain (--gain) and initial crystal correction (--ppm) for best reception of as many as possible channels with consistent correction measurement.
GSM signals are very strong, thus too much gain is not good. You need to find an optimal setting here.
Rename the Example.conf so that the name corresponds to your receiver's location (e.g. LFLE.conf, EPZR.conf, myPlace.conf) end edit the file, to set-up the receiver:
enter your crystal correction, GSM frequency for calibration, geographical position, APRS name. (You will find more details about receiver's configuration here)
Run the receiver
sudo nohup ./ogn-rf myPlace.conf &
sudo nohup ./ogn-decode myPlace.conf &
to stop it, kill the process-numbers shown on startup or retrieved with the top command:
The output of these commands is redirected to 'nohup.out' if possible, '$HOME/nohup.out' otherwise.
Install as service
If you don't want to start the receiver by hand every time the RPI boots, then install it as a service:
sudo apt-get -y install procserv telnet sudo wget http://download.glidernet.org/common/service/rtlsdr-ogn -O /etc/init.d/rtlsdr-ogn sudo wget http://download.glidernet.org/common/service/rtlsdr-ogn.conf -O /etc/rtlsdr-ogn.conf sudo chmod +x /etc/init.d/rtlsdr-ogn sudo update-rc.d rtlsdr-ogn defaults
Update /etc/rtlsdr-ogn.conf according to name of your configuration file, by replacing Sample.conf by the name of your config file and pi with your actual username
sudo nano /etc/rtlsdr-ogn.conf
Note that the path should be to rtlsdr-ogn, not the directory of the version you have installed. This is a symbolic link and will be updated with each version.
Start the service
sudo service rtlsdr-ogn start
Remark: When the service starts it waits for time synchronisation (NTP). It may takes up to 30mn on just booted RPi. Gossip says if you install ntpdate it synchronizes much faster.
Your service is now running and will start automatically at next boot.
You can see console output of your receiver at any time with:
telnet localhost 50000
containig infos regarding to the decoding-process and
telnet localhost 50001
containing infos regarding to the APRS datatraffic.