Skip to content

Instantly share code, notes, and snippets.

@Schm1tz1
Last active February 22, 2018 23:30
Show Gist options
  • Save Schm1tz1/5f307d5a6cf7c97cb2991781ff6ca828 to your computer and use it in GitHub Desktop.
Save Schm1tz1/5f307d5a6cf7c97cb2991781ff6ca828 to your computer and use it in GitHub Desktop.
Script for building RTL-SDR-Stuff, Gnuradio, GQRX....
#!/bin/bash
STD_PREFIX="/opt/radio"
HERE=$PWD
bold(){
echo -e \\033[1m$*\\033[0m
}
boldn(){
echo -n -e \\033[1m$*\\033[0m
}
skip(){
n=0
rcode=0
progname=$1
bold $NAME: The Programm "'"$progname"'" might already be installed.
while [ $n = 0 ]
do
boldn $NAME: Do you want to skip the installation \[Y/N\]?
read answer
case $answer in "")
;; y) rcode=0 ; n=1
;; Y) rcode=0 ; n=1
;; yes) rcode=0 ; n=1
;; Yes) rcode=0 ; n=1
;; YES) rcode=0 ; n=1
;; n) rcode=1 ; n=1
;; N) rcode=1 ; n=1
;; no) rcode=1 ; n=1
;; No) rcode=1 ; n=1
;; NO) rcode=1 ; n=1
;;
esac
done
return $rcode
}
pkg_prepare() {
cd $HERE
echo "Preaparing package config..."
sudo dnf -y erase 'gnuradio*'
sudo dnf -y erase 'libgruel-*'
sudo dnf -y erase 'libgruel*'
# works for fedora 22+
sudo dnf -y groupinstall "Engineering and Scientific" "Development Tools" "Software Development Tools" "C Development Tools and Libraries"
#sudo dnf -y install fftw-devel cppunit-devel wxPython-devel boost-devel alsa-lib-devel numpy gsl-devel python-devel pygsl python-cheetah python-mako python-lxml PyOpenGL qt-devel PyQt4-devel qwt-devel qwtplot3d-qt4-devel libusbx-devel cmake python-docutils PyQwt PyQwt-devel gtk2-engines xmlrpc-c-"*" tkinter orc-devel python-sphinx SDL-devel swig perl-ZMQ-LibZMQ2 perl-ZMQ-LibZMQ2 zeromq zeromq-devel python-requests gcc-c++ doxygen zeromq-ada-devel cppzmq-devel perl-ZeroMQ amavisd-new-zeromq amavisd-new-snmp-zeromq php-zmq python-zmq czmq uwsgi-logger-zeromq comedilib comedilib-develpygtk2 ncurses-"*" thrift-devel python-thrift scipy
sudo dnf install fftw-devel cppunit-devel wxPython-devel libusb-devel \
guile boost-devel alsa-lib-devel numpy gsl-devel python-devel pygsl \
swig python-sphinx orc-devel orc-compiler doxygen python-docutils \
python-cheetah python-lxml guile-devel PyOpenGL PyQt4-devel qwt-devel \
qwtplot3d-qt4-devel cmake xmlto graphviz PyQwt PyQwt-devel zeromq-devel \
python-zmq SDL-devel cmake make gcc gcc-c++ boost-devel scipy \
thrift-devel python-thrift python-mako gpsd-devel cppzmq-devel
}
checkout_src(){
cd $HERE
echo "Fetching source code from GitHub..."
# RTL-SDR modules and tools
#git clone --recursive https://github.com/osmocom/rtl-sdr.git
#git clone https://github.com/keenerd/rtl-sdr.git
git clone https://github.com/rtlsdrblog/rtl-sdr.git
# GNURADIO and add-ons
git clone --recursive http://git.gnuradio.org/git/gnuradio.git
git clone --recursive https://github.com/osmocom/gr-iqbal.git
git clone --recursive https://github.com/osmocom/gr-osmosdr.git
git clone --recursive https://github.com/balint256/gr-baz.git
git clone --recursive https://github.com/bastibl/gr-rds.git
# UHD
git clone --recursive https://github.com/EttusResearch/uhd
# GQRX based on above stuff
git clone --recursive https://github.com/csete/gqrx.git
# baudline
wget http://www.baudline.com/baudline_1.08_linux_x86_64.tar.gz
}
make_uhd(){
cd $HERE
echo "Compiling UHD..."
cd uhd/host
test -d build && skip UHD && return 0
test -d build && rm -fr build
mkdir build
cmake -DCMAKE_INSTALL_PREFIX=$STD_PREFIX ..
make -j3 && make install
cd $HERE
echo "Fetching UHD firmwares..."
uhd_images_downloader
}
make_sdr(){
cd $HERE
echo "Compiling RTL_SDR..."
cd rtl-sdr
test -d build && skip RTL-SDR && return 0
test -d build && rm -fr build
mkdir build
cd build
cmake -DDETACH_KERNEL_DRIVER=ON -DCMAKE_INSTALL_PREFIX=$STD_PREFIX ..
make -j3 && make install
cd ..
echo Adding udev-rules and restarting udevd...
sudo cp rtl-sdr.rules /etc/udev/rules.d/15-rtl-sdr.rules
sudo killall -HUP systemd-udevd
sudo udevadm control --reload
}
set_vars(){
export LD_LIBRARY_PATH=$STD_PREFIX/lib:$STD_PREFIX/lib64:$LD_LIBRARY_PATH
#export LIBRARY_PATH=$STD_PREFIX/lib:$STD_PREFIX/lib64:$LIBRARY_PATH
export PYTHONPATH=$STD_PREFIX/lib64/python2.7/site-packages
export PATH=$STD_PREFIX/bin:$PATH
}
make_gr(){
cd $HERE
echo "Compiling GNURADIO..."
cd gnuradio
test -d build && skip GNURADIO && return 0
test -d build && rm -fr build
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=$STD_PREFIX ..
make -j3 && make install
}
make_addons(){
cd $HERE
echo "Compiling gr-osmosdr..."
cd gr-osmosdr
test -d build && skip gr-osmosdr && return 0
test -d build && rm -fr build
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=$STD_PREFIX ..
make -j3 && make install
cd $HERE
echo "Compiling gr-iqbal..."
cd gr-iqbal
test -d build && skip gr-iqbal && return 0
test -d build && rm -fr build
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=$STD_PREFIX ..
make -j3 && make install
cd $HERE
echo "Compiling gr-baz..."
cd gr-baz
test -d build && skip gr-baz && return 0
test -d build && rm -fr build
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=$STD_PREFIX ..
make -j3 && make install
cd $HERE
echo "Compiling gr-rds..."
cd gr-rds
test -d build && skip gr-rds && return 0
test -d build && rm -fr build
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=$STD_PREFIX ..
make -j3 && make install
}
make_gqrx() {
cd $HERE
sudo dnf install -y qwt-qt5-devel
echo "Compiling GQRX..."
cd gqrx
test -d build && skip GQRX && return 0
test -d build && rm -fr build
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=$STD_PREFIX ..
make -j3 && make install
}
make_linrad() {
cd $HERE
svn checkout svn://svn.code.sf.net/p/linrad/code/trunk linrad-code
cd linrad-code
./configure --prefix=$STD_PREFIX
make -j3
}
make_redsea() {
cd $HERE
# redsea RDS decoder and libdsp dependencies
git clone --recursive https://github.com/jgaeddert/liquid-dsp.git
git clone --recursive https://github.com/windytan/redsea.git
cd liquid-dsp
./bootstrap.sh
./configure --prefix=$STD_PREFIX
make -j3 && make install
cd $HERE
cd redsea
autoreconf --install
./configure --prefix=$STD_PREFIX
# maybe you need to link/copy liquid headers and explicitly give LIBRARY_PATH if libs are not found by linker (or change options)
make -j3 && make install
}
make_inspectrum() {
cd $HERE
git clone git://github.com/jgaeddert/liquid-dsp.git
git clone --recursive https://github.com/miek/inspectrum.git
git clone https://github.com/tresacton/dspectrum.git
cd inspectrum
test -d build && skip inspectrum && return 0
test -d build && rm -fr build
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=$STD_PREFIX ..
make -j3 && make install
}
make_rtl433() {
cd $HERE
git clnoe https://github.com/merbanan/rtl_433.git
cd rtl_433
test -d build && skip rtl_433 && return 0
test -d build && rm -fr build
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=$STD_PREFIX ..
make -j3 && make install
}
make_kalibrate() {
cd $HERE
git clone https://github.com/mutability/kalibrate-rtl.git
cd kalibrate-rtl
./bootstrap && CXXFLAGS='-W -Wall -O3'
./configure --prefix=$STD_PREFIX
make -j3 && make install
}
make_sdrangel() {
cd $HERE
sudo dnf install -y qt5-qtmultimedia qt5-qtmultimedia-devel lz4 lz4-devel libusb-devel qt5-qttools-devel
git clone https://github.com/nanomsg/nanomsg.git
cd nanomsg
test -d build && skip nanomsg && return 0
test -d build && rm -fr build
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=$STD_PREFIX ..
make -j3 && make install
cd $HERE
git clone https://github.com/f4exb/sdrangel.git
cd sdrangel
test -d build && skip sdrangel && return 0
test -d build && rm -fr build
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=$STD_PREFIX ..
make -j3 && make install
}
echo "Default install is going to $STD_PREFIX ! Please make sure you have permissions to that directory !"
read -p "Press the enter to continue."
#
# more or less standard packages
#
pkg_prepare
checkout_src
make_uhd
make_sdr
set_vars
make_gr
make_addons
make_gqrx
#
# additional tools
#
#make_linrad
#make_redsea
#make_inspectrum
#make_kalibrate
#make_sdrangel
echo "*** ALL DONE ! ***"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment