This document will guide you through installing SDR applications on the platform built in the document: Installing drivers for the SDRplay RSP1A and HackRF One on Raspberry Pi and Debian and depends on that installation.
This document is intended to be followed in the order it is written. If you want to skip installing one of applications, there may be some missing prerequisites.
sudo apt install mumble mumble-server
# Look to see that "Installed" does not appear after libusb-0.1-4 apt list -a libusb-0.1-4 # If it is installed, remove it: sudo apt remove libftdi1 libftdi-dev libusb-0.1-4 sudo apt autoremove
sudo apt-get install protobuf-compiler libopus-dev libspeexdsp1 libspeexdsp-dev libjpeg62-turbo libjpeg62-turbo-dev libconfig++9v5 libconfig++-dev libftdi1-2 libftdi1-dev libsndfile1-dev libsndfile1 libjpeg-dev libprotoc-dev liblimesuite-dev liblimesuite20.10-1
sudo apt-get install protobuf-compiler libopus-dev libspeexdsp1 libspeexdsp-dev libjpeg62-turbo libjpeg62-turbo-dev libconfig++9v5 libconfig++-dev libftdi1-2 libftdi1-dev libsndfile1-dev libsndfile1 libjpeg-dev libprotoc-dev liblimesuite-dev liblimesuite22.09-1
sudo ln -s /usr/include/libftdi1/ftdi.h /usr/include/ftdi.h sudo ln -s /usr/lib/aarch64-linux-gnu/libftdi1.so.2.5.0 /usr/lib/aarch64-linux-gnu/libftdi.so.1 sudo ln -s /usr/lib/aarch64-linux-gnu/libftdi1.so.2.5.0 /usr/lib/aarch64-linux-gnu/libftdi.so
cd ~/ git clone https://codeberg.org/qradiolink/qradiolink cd qradiolink/ # The default branch is the next branch, which is the latest. # To get the normal release, use the following command (without the "#") # git checkout master # Only if your GNU Radio version is 3.10, Switch to the gnuradio 3.10 branch with the following command git checkout gr_3.10 sh ./build_debian.sh
~/qradiolink/build/qradiolink
sudo apt-get install freeglut3-dev libgtk-3-dev libtinyxml2.6.2v5 libfec0 libfec-dev
cd ~/ git clone https://github.com/jgaeddert/liquid-dsp cd liquid-dsp ./bootstrap.sh CFLAGS="-march=native -O3" ./configure --enable-fftoverride make -j 4 sudo make install sudo ldconfig
sudo apt-get install libasound2-dev portaudio19-dev libtool libpulse-dev cd ~/ Download http://www.music.mcgill.ca/~gary/rtaudio/release/rtaudio-5.2.0.tar.gz tar -zxvf rtaudio-5.2.0.tar.gz cd rtaudio-5.2.0 # ./configure --help # display the available options ./configure --with-jack --with-alsa --with-pulse mkdir build cd build cmake ../ make -j 4 sudo make install sudo ldconfig cd tests # Try one of these to see if it will play something. Press CTRL-C to exit. ./playsaw 1 48000 ./playsaw 1 44100 ./playsaw 2 44100 # 2 different sawtooth waveforms, one in each speaker # If you don't hear a sound from any of these, it may have selected the headphone output. # Set speakers as default pacmd set-default-sink 0
cd ~/ # Note: wxWidgets-3.2.6 works on Raspberry Pi OS Bookworm and most likely on other OSes. # If you wish to use git to install wxWidgets, use the commands below and skip the archive. # git clone --recurse-submodules https://github.com/wxWidgets/wxWidgets.git # git checkout v3.2.1 # Download this archive to your home directory. https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.1/wxWidgets-3.2.1.tar.bz2 tar -xvjf wxWidgets-3.2.1.tar.bz2 # rename the install folder to wxWidgets cd wxWidgets/ mkdir -p ~/Develop/wxWidgets-staticlib ./autogen.sh ./configure --prefix=`echo ~/Develop/wxWidgets-staticlib` --with-opengl --disable-glcanvasegl --disable-shared --enable-monolithic --with-libjpeg --with-libtiff --with-libpng --with-zlib --disable-sdltest --enable-unicode --enable-display --enable-propgrid --disable-webview --disable-webviewwebkit CXXFLAGS="-std=c++0x" make -j4 make install sudo ldconfig
cd ~/ git clone https://github.com/cjcliffe/CubicSDR.git cd CubicSDR mkdir build cd build # Choose one of the cmake statements below: # ALSA audio works on most systems. cmake ../ -DCMAKE_BUILD_TYPE=Release -DwxWidgets_CONFIG_EXECUTABLE=~/Develop/wxWidgets-staticlib/bin/wx-config -DUSE_HAMLIB=1 -DUSE_AUDIO_PULSE=0 -DUSE_AUDIO_OSS=0 -DUSE_AUDIO_ALSA=1 # Pulse audio works better on systems that use pipewire such as Raspberry Pi OS Bookworm and Ubuntu. cmake ../ -DCMAKE_BUILD_TYPE=Release -DwxWidgets_CONFIG_EXECUTABLE=~/Develop/wxWidgets-staticlib/bin/wx-config -DUSE_HAMLIB=1 -DUSE_AUDIO_PULSE=1 -DUSE_AUDIO_OSS=0 -DUSE_AUDIO_ALSA=0 make -j 4 # You can now run CubicSDR from the build folder. x64/CubicSDR # Install CubicSDR (and launcher in Applications menu) sudo make install sudo ldconfig
# portaudio should have been installed for RtAudio. sudo apt install portaudio19-dev
export CXXFLAGS='-O2 -march=native -mtune=native' export CFLAGS='-O2 -march=native -mtune=native' cd ~/ git clone https://github.com/gqrx-sdr/gqrx.git gqrx cd gqrx mkdir build cd build cmake .. make -j 4 sudo make install sudo ldconfig
cd ~/Downloads sudo dpkg -i SparkSDR.2.0.33.linux-arm64.deb
sudo apt-get install libopenal-dev libalut0 libalut-dev freeglut3-dev libsndfile1 libsndfile1-dev libwxgtk3.2-dev libglew-dev libusb-dev
pip install SpeechRecognition sudo apt install python3-pyaudio
cd ~/speechrecognition-3.11.0 sudo python3 setup.py install #Test installation: python3 import speech_recognition # There should be no error ^D to exit.
cd ~/Desktop git clone --depth=1 https://github.com/righthalfplane/SdrGlut.git # Install SdrGlut cd SdrGlut make -f makefileUbuntu -j 4 # Install iqSDR cd iqSDR make -f makefileUbuntu -j 4 Run the programs: ~/Desktop/SdrGlut/sdrglut.x or ~/Desktop/SdrGlut/iqSDR/iqSDR.x
sudo mousepad /etc/openal/alsoft.conf
sudo apt-get install libfftw3-single3 libfftw3-double3 python3-setuptools python3-paho-mqtt netcat-openbsd libsndfile1 liblapack3 libreadline8 gfortran libgfortran5 libgomp1 libasound2 ca-certificates libopus0 sudo apt-get install sox libtool libfftw3-dev libsamplerate-dev gnuplot gnuplot-x11 libudev-dev libprotobuf-dev libicu-dev
sudo apt-get install libfftw3-single3 libfftw3-double3 python3-setuptools python3-paho-mqtt netcat-openbsd libsndfile1 liblapack3 libreadline8 gfortran libgfortran5 libgomp1 libasound2t64 ca-certificates libopus0 sudo apt-get install sox libtool libfftw3-dev libsamplerate-dev gnuplot gnuplot-x11 libudev-dev libprotobuf-dev libicu-dev
cd ~/ git clone https://github.com/jketterl/csdr.git cd csdr mkdir build cd build cmake .. make -j $(nproc) sudo make install cd ../.. sudo ldconfig
cd ~/ git clone https://github.com/jketterl/pycsdr.git cd pycsdr sudo python3 setup.py install install_headers cd ..
cd ~/ git clone https://[email protected]/widefido/js8call.git cd js8call mkdir build cd build cmake .. make -j $(nproc) sudo make install cd ../.. sudo ldconfig
cd ~/ git clone https://github.com/jketterl/js8py.git cd js8py sudo python3 setup.py install cd .. sudo ldconfig
cd ~/ git clone https://github.com/jketterl/owrx_connector.git cd owrx_connector mkdir build cd build cmake .. make -j $(nproc) sudo make install cd ../.. sudo ldconfig
sudo apt-get install libprotobuf-dev protobuf-compiler libudev-dev cd ~/ git clone https://github.com/jketterl/codecserver.git cd codecserver mkdir build cd build cmake .. make -j $(nproc) sudo make install cd ../.. # For Raspberry Pi OS, Bullseye only: move the service file to the correct location (other systems should work without this) sudo mv /usr/local/lib/aarch64-linux-gnu/systemd/system/codecserver.service /lib/systemd/system sudo ldconfig # Create the codecserver user and set permissions: sudo adduser --system --group --no-create-home --home /nonexistent --quiet codecserver sudo usermod -aG dialout codecserver # The username "codecserver" is used for the systemd service unit. # Copy the configuration file sudo mkdir -p /usr/local/etc/codecserver sudo cp ~/codecserver/conf/codecserver.conf /usr/local/etc/codecserver # Add configuration for mbelib: sudo mousepad /usr/local/etc/codecserver/codecserver.conf # Add these 3 lines to the end of codecserver.conf: [device:mbelib] driver=mbelib unvoiced_quality=3 # Save and close the file. sudo systemctl daemon-reload sudo systemctl restart codecserver
# If MBELIB is already installed, please skip this step. cd ~/ git clone https://github.com/szechyjs/mbelib.git cd mbelib mkdir build; cd build cmake .. make -j $(nproc) sudo make install cd ~/ sudo ldconfig
cd ~/ git clone https://github.com/fventuri/codecserver-mbelib-module.git cd codecserver-mbelib-module mkdir build cd build cmake .. make -j $(nproc) sudo make install cd .. sudo ldconfig sudo systemctl restart codecserver
cd ~/ git clone https://github.com/jketterl/digiham.git cd digiham mkdir build cd build cmake .. make -j $(nproc) sudo make install cd ../.. sudo ldconfig
cd ~/ git clone https://github.com/jketterl/pydigiham.git cd pydigiham sudo python3 setup.py install cd ..
# If codec2/freedv is already installed, please skip this step. # Do not install this if the codec2 packages are installed. # If you install the freedv package, it will also install libhamlib4. cd ~/ git clone https://github.com/drowe67/codec2.git cd codec2 mkdir build cd build cmake .. make -j $(nproc) sudo make install # Manually install freedv_rx since it's not part of the default install package sudo install -m 0755 src/freedv_rx /usr/local/bin sudo install -m 0755 src/freedv_tx /usr/local/bin cd ../.. sudo ldconfig
sudo apt-get install libboost-program-options-dev cd ~/ git clone https://github.com/mobilinkd/m17-cxx-demod.git cd m17-cxx-demod mkdir build cd build cmake .. make -j $(nproc) sudo make install cd ../.. sudo ldconfig
sudo git clone https://github.com/hessu/aprs-symbols /usr/share/aprs-symbols
sudo mkdir /var/lib/openwebrx # If necessary, change the user from pi to your actual user name. sudo chown pi. /var/lib/openwebrx # Warning, This step will overwrite any existing user database. sudo sh -c "echo [] > /var/lib/openwebrx/users.json" # If necessary, change the user from pi to your actual user name. sudo chown pi. /var/lib/openwebrx/users.json sudo chmod 0600 /var/lib/openwebrx/users.json
cd ~/ git clone https://github.com/jketterl/openwebrx.git cd openwebrx # Create an initial user for the web configuration interface. Replace [username] with the name you will be using. ./openwebrx.py admin adduser [username] # Enter and confirm the password
# Start OpenWebRX sudo systemctl start codecserver cd ~/openwebrx ./openwebrx.py
http://localhost:8073 # Using the IP address of your Raspberry Pi, you can open it on another computer on your local network. ip address # IP addresses for all of your interfaces will be displayed. Substitute that for localhost in the URL as in the example below. http://192.168.1.12:8073 # If you can set up your router, you can access OpenWebRX from the Internet.