This shows you the differences between two versions of the page.
— |
gnuradio [2020-05-18 02:40:12] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== 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 [[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=822659|only on the amd64 architecture]]. | ||
+ | |||
+ | Please see [[:rpi-gcc]] 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 (FIXME) 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 [[:kukuruku:guide#client|here]].</note> | ||
+ | |||
+ | <note tip>This patch for gr-osmosdr works around current bug in gnuradio: https://gnuradio.org/redmine/issues/775</note> | ||
+ | <code>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 | ||
+ | |||
+ | </code> | ||
+ | |||
+ | <code> | ||
+ | ### 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 | ||
+ | </code> | ||
+ | |||
+ | ===== 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 <code>cp /usr/bin/qemu-arm-static /mnt/foo/usr/bin</code> 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. | ||
+ | |||
+ | http://jenda.hrach.eu/brm/rad/gnuradio-arm/ | ||
+ | |||
+ | |||