BananaPI goes SDR

share by nanoops

Hi all,

today i got my banapi running software defined radio. I just want to share all the information with you - maybe someone else is trying and stuck in the middle

Based on Igor Pecovnik (www.igorpecovnik.com) Debian Jessy BananaPi Image with Kernel 3.19.0. He has done an awesome work. Please visit http://www.igorpecovnik.com/2014/09/07/banana-pi-debian-sd-image/ for all details about. Software Defined Radio on BananaPi (rtl2832U / gnuradio)

[ https://github.com/NanoOps/BananaSDR ] This repo is a simple way of getting into the rtl-sdr topic with hopefully useful tipps to get it up and running quickly …

Please check if it is legal in your country doing some or all of the things here. I am under no circumstances be responsible for what you doing. I only show you this for educational purpose.

Some useful links:

 http://www.rtl-sdr.com/
 https://www.youtube.com/results?search_query=hak5+rtl+sdr

Hardware required:

 rtl2832U 820t usb stick
 BananaPi

Example Amazon:

 Salcar® TV Stick DVB-T Empfänger FM-Radio & Digitalradio Empfänger, Chip RTL2832U & R820T, SDR (~15 Euro)
 Allnet Banana Pi Bundle 4GB SDHC Karte + Gehäuse +Netzteil 2A weiß Bananapi Mini PC-System/Mediaplayer (~ 59 Euro)

Base System Installation

First you need to copy the image onto a sd-card. A writer for windows is included inside the zip.

After the first boot new ssh keys and resize of the sd-card is done automaticly - so the first boot will be a little bit longer then the usual one (included a reboot after resize sd card). The password for the root account (ssh) is 1234 and you will be asked for a new one on first login.

Driver Installation rtl2832

aptitude update
aptitude install libusb-1.0-0-dev
cd /usr/local/src/repositories
git clone https://github.com/steve-m/librtlsdr.git
cd librtlsdr
mkdir build
cd build
cmake ../
make install
ldconfig

You could test the driver after re-plugged in the rtl usb stick with rtl_test from the command line.

rtl_test

# Found 1 device(s):

# 0:  Generic, RTL2832U, SN: xxxxxxxxxxxxxxxxx

# Using device 0: Generic RTL2832U

# Found Rafael Micro R820T tuner

# ....

ADS-B: Airplane tracking

mkdir -p /usr/local/src/repositories

cd /usr/local/src/repositories

git clone https://github.com/antirez/dump1090.git

cd dump1090

make

cp ./dump1090 /usr/local/bin/

You could test the installation quick from command line. More options like visual representation (builtin webserver) are available - just check --help

dump1090 --aggressive --interactive --enable-agc

RDS: RDS from FM stations

Documentation: http://www.windytan.com/2015/02/receiving-rds-with-rtl-sdr.html

cd /usr/local/src/repositories
git clone https://github.com/windytan/redsea.git
cd redsea
make

The perl script isnt already ready to be installed somewhere, so leave it inside the repo or fix the paths to your needs. A simple test from the command line:

cd /usr/local/src/repositories/redsea
./redsea.pl 102.39M -l  # 102.39M change frequency to your local FM Station
# D391  0A TP:0 PTY:10 TA:1 MS:M AF:105.5MHz AF:107.7MHz PS:' 1LIVE  '

GNURadio Installation

Documentation for GNURadio can be found: http://gnuradio.org/redmine/projects/gnuradio/wiki

aptitude install gnuradio gnuradio-doc gnuradio-dev libgl1-mesa-dri libgtk2.0-bin python-matplotlib python-networkx python-qt4 python-qwt5-qt4 python-scipy python-tk python-zmq python-gtk2 hicolor-icon-theme xorg lightdm xfce4 xfce4-goodies tango-icon-theme gnome-icon-theme gnome-themes-standard libuhd-dev uhd-host python-swiginac swig3.0 swig libcppunit-dev libboost1.55-all-dev liblog4cpp5-dev

cd /usr/local/src/repositories/
git clone https://github.com/pothosware/SoapySDR.git
cd SoapySDR
git submodule init      # enable OsmoSupport/gr-osmosdr (Osmocom RTLSDR)
git submodule update
mkdir build
cd build
cmake ../
make
make install
ldconfig
SoapySDRUtil --info

cd /usr/local/src/repositories/
git clone https://github.com/pothosware/gr-sdr.git
cd gr-sdr
mkdir build
cd build
cmake ../
make
make install
ldconfig

cd /usr/local/src/repositories/
git clone git://git.osmocom.org/gr-osmosdr
cd gr-osmosdr/
mkdir build
cd build
cmake ../
make
make install
ldconfig

Last but not least you need to adjust your environment variables ~/.bashrc

cat >> /root/.bashrc << "EOF"
export PYTHONPATH=/usr/local/lib/python2.7/dist-packages/PYTHONPATH
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/PKG_CONFIG_PATH
export GRC_BLOCKS_PATH=/usr/local/share/gnuradio/grc/blocks/GRC_BLOCKS_PATH
"EOF"

If you like you could install tightvncserver for remote X-Desktop (xrdc for linux client) but you could also X11 forward by using ssh with the -X option.

gnuradio-companion is the tool you really want. Since you have installed python bindings for ZeroMQ you could pipe all the data you fetch on your bananapi to any remote system. Its all implemented in gnuradio

If you work only local on your bananapi then gqrx-sdr from default jessie repository is a look worth. ( http://gqrx.dk/ )