Table of Contents
Installing GnuRadio from source on Debian Jessie
<note important>This page is now obsolete - Debian Jessie is oldstable and there are good GnuRadio packages in current versions.</note>
It's easy!
Fortunately, there are now new packages in Debian Testing/Unstable (reportedly working well) and Ubuntu 16.04. There are backports in Jessie too, but only on the amd64 architecture.
Please see GnuRadio, Volk and RaspberryPi 2 if you are compiling on Raspbian.
You need 1.2 GB RAM for linking. This means that you cannot link it on Raspberry Pi 2 or CubieBoard. Use local swap, NBD swap or cross-compiling () for it (scroll down for more info).
After installation is complete, run volk_profile (or volk_profile -i 512 on slow machines). It will benchmark and select the best vectorized kernels for your machine. Speedups of 150-190 % have been reported.
<note warning>grcc s broken in current master, patch and more info here.</note>
<note tip>This patch for gr-osmosdr works around current bug in gnuradio: https://gnuradio.org/redmine/issues/775</note>
diff --git a/grc/gen_osmosdr_blocks.py b/grc/gen_osmosdr_blocks.py index d29de3e..822dbb8 100644 --- a/grc/gen_osmosdr_blocks.py +++ b/grc/gen_osmosdr_blocks.py @@ -457,6 +457,7 @@ def parse_tmpl(_tmpl, **kwargs): max_num_mboards = 8 max_num_channels = max_num_mboards*4 +max_num_channels = 4 import os.path
### rtl-sdr sudo apt-get install git build-essential cmake libusb-1.0-0-dev ## Ubuntu 14.04: sudo apt-get install libasound2-dev git clone git://git.osmocom.org/rtl-sdr cd rtl-sdr/ mkdir build cd build #cmake .. -DINSTALL_UDEV_RULES=ON -DDETACH_KERNEL_DRIVER=ON cmake .. make sudo make install cd ../.. echo "blacklist dvb_usb_rtl28xxu rtl2830 rtl2832" > /etc/modprobe.d/rtl.conf ### gnuradio # basic sudo apt-get install python-cheetah libboost-all-dev swig2.0 python-pkgconfig liborc-0.4-dev libfftw3-dev libasound2-dev libzmq-dev libgsl0-dev python-sphinx libcppunit-dev libgsm1-dev python-numpy libgsl0-dev python-mako # On Debian Sid, install libgsl-dev instead of libgsl0-dev # to get documentation sudo apt-get install doxygen # to get Qt4 GUI blocks sudo apt-get install python-qt4 libqt4-dev python-qwt5-qt4 # to get GTK GUI blocks sudo apt-get install python-wxgtk3.0 ## Ubuntu 14.04: sudo apt-get install python-cheetah libboost-dev libboost-all-dev libfftw3-dev swig # for GUI (optional) sudo apt-get install libxml2-dev libzmq3-dev python-gtk2-dev python-numpy libxml++2.6-dev python-lxml\ libwxgtk3.0-dev python-qwt5-qt4 pyqt4-dev-tools python3-pyqt4 python-gtk2 git clone http://git.gnuradio.org/git/gnuradio.git cd gnuradio/ git submodule init git submodule update cd volk mkdir build cd build cmake .. make sudo make install cd ../.. mkdir build cd build cmake -DENABLE_DOXYGEN=OFF .. # There is currently conflict with UHD and Boost in Debian Sid. Use -DENABLE_GR_UHD=OFF # if you don't need UHD and have problems with linking. make # if you have enought RAM (8GiB +) you can make it much faster # make -j 4 sudo make install cd ../.. ### Optional: bladeRF git clone https://github.com/Nuand/bladeRF.git cd bladeRF/host mkdir build cd build cmake .. make -j 2 sudo make install cd ../../.. ### Optional: hackrf git clone https://github.com/mossmann/hackrf cd hackrf/host mkdir build cd build cmake .. make -j 2 sudo make install cd ../../.. ### osmosdr git clone git://git.osmocom.org/gr-osmosdr cd gr-osmosdr/ mkdir build cd build cmake .. make sudo make install cd ../.. ### optional: airspy git clone https://github.com/airspy/host/ mv host airspy cd airspy/ mkdir build cd build cmake .. make sudo make install cd ../.. ### gqrx sudo apt-get install qt5-qmake git clone git://github.com/csete/gqrx.git cd gqrx qmake . make ### dsd git clone git://github.com/szechyjs/mbelib.git cd mbelib mkdir build cd build cmake .. make sudo make install cd ../.. wget -O itpp-latest.tar.bz2 http://sourceforge.net/projects/itpp/files/latest/download?source=files tar xjf itpp-latest.tar.bz2 cd itpp-* mkdir build && cd build cmake .. make -j sudo make install sudo apt-get install libsndfile1-dev fftw3-dev liblapack-dev portaudio19-dev git clone git://github.com/szechyjs/dsd.git cd dsd mkdir build cd build cmake .. make sudo make install cd ../.. ### multimon-ng sudo apt-get install libpulse-dev git clone git://github.com/EliasOenal/multimon-ng.git cd multimon-ng mkdir build cd build qmake ../multimon-ng.pro PREFIX=/usr/local make sudo make install
Low memory fun
It is not possible to link it on systems with 1 GB RAM. Unfortunately, this is what most ARM boards have.
Except for nbd swap, you can try mounting the filesystem on some other machine. But it's probably not ARM and cross-compiling is PITA (you need for example the entire armhf Boost!). You can run ARM code in Qemu software emulator. This is going to be slow. Do
cp /usr/bin/qemu-arm-static /mnt/foo/usr/bin
and then just chroot there and run compilation as usual.
Prebuilt binaries
I will occasionally release prebuilt binaries (rtl-sdr + gnuradio). They are compiled with -march=armv7-a -mfloat-abi=hard -mfpu=vfpv3-d16 and were tested on Debian Jessie on Radxa Rock Pro and Orange Pi PC. RaspberryPi should have the very same architecture.