Skip to main content

Linux Installs

This page covers installing Trunk Recorder on a Linux box. I test everything on Ubuntu, but other flavors of Linux are supported. Instructions are also included for Arch Linux.

Install Prerequistes

To get started, install all of the required packages. Instructions for different versions are below:

Ubuntu 23.04

sudo   apt-get install -y apt-transport-https build-essential ca-certificates fdkaac git gnupg gnuradio gnuradio-dev gr-osmosdr libuhd-dev libboost-all-dev libcurl4-openssl-dev libgmp-dev libhackrf-dev liborc-0.4-dev libpthread-stubs0-dev libssl-dev libuhd-dev libusb-dev pkg-config software-properties-common cmake libsndfile1-dev sox

If you are using a HackRF:

sudo apt install -y hackrf libhackrf-dev libhackrf0

Ubuntu 22.04

sudo   apt-get install -y apt-transport-https build-essential ca-certificates fdkaac git gnupg gnuradio gnuradio-dev gr-osmosdr libuhd4.1.0 libuhd-dev libboost-all-dev libcurl4-openssl-dev libgmp-dev libhackrf-dev liborc-0.4-dev libpthread-stubs0-dev libssl-dev libuhd-dev libusb-dev pkg-config software-properties-common cmake libsndfile1-dev sox

If you are using a HackRF:

sudo apt install -y hackrf libhackrf-dev libhackrf0

Ubuntu 21.04

sudo   apt-get install -y apt-transport-https build-essential ca-certificates fdkaac git gnupg gnuradio gnuradio-dev gr-osmosdr libuhd3.15.0 libuhd-dev libboost-all-dev libcurl4-openssl-dev libgmp-dev libhackrf-dev liborc-0.4-dev libpthread-stubs0-dev libssl-dev libuhd-dev libusb-dev pkg-config software-properties-common cmake libsndfile1-dev sox

If you are using a HackRF:

sudo apt install -y hackrf libhackrf-dev libhackrf0

Ubuntu 20.x

sudo apt install -y gr-osmosdr osmo-sdr libosmosdr0 libosmosdr-dev libuhd3.15.0 libuhd-dev gnuradio-dev libgnuradio-uhd3.8.1 libgnuradio-osmosdr0.2.0 gcc cpp cmake make build-essential libboost-all-dev  libusb-dev fdkaac sox openssl libssl-dev curl libcurl4 libcurl4-openssl-dev pkg-config liborc-0.4-dev git

If you are using a HackRF:

sudo apt install -y hackrf libhackrf-dev libhackrf0

Older Ubuntu Verions...

These instructions should work on Ubuntu 16.x to 17.x, including Debian 9 and 10.

  • For Ubuntu 18.04 add bionic universe before updating the available packages list
sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu bionic universe"
sudo apt-get update

Ubuntu

sudo apt install gnuradio gnuradio-dev libuhd-dev libgnuradio-uhd3.7.11

Debian

sudo apt install gnuradio gnuradio-dev libuhd-dev libgnuradio-uhd3.7.13

For all SDR based devices...

sudo apt install gr-osmosdr libosmosdr0

If using HackRF or one of its derivatives...

sudo apt install hackrf libhackrf0 libhackrf-dev
sudo apt install git cmake make build-essential libboost-all-dev libusb-1.0-0.dev libaacs0 libcppunit-dev libcppunit-1.14-0 libssl-dev openssl curl fdkaac sox libcurl3-gnutls libcurl4 libcurl4-openssl-dev

Arch Linux

Install from AUR

Update and dependencies

sudo pacman -Suy
sudo pacman -S --needed base-devel git

Clone the package

git clone https://aur.archlinux.org/trunk-recorder.git

Install trunk-recorder

cd trunk-recorder
makepkg -si

Configure /etc/trunk-recorder/config.json and start with systemctl start trunk-recorder.service. The service runs as trunk-recorder so ensure needed devices(SDR) and files(Media/Talkgroups) are usable(Read or Read/Write) by the trunk-recorder user.

Install with AUR helper

yay -S trunk-recorder

Configure /etc/trunk-recorder/config.json and start with systemctl start trunk-recorder.service. The service runs as trunk-recorder so ensure needed devices(SDR) and files(Media/Talkgroups) are usable(Read or Read/Write) by the trunk-recorder user.

Install from source

It is suggested to make sure your installed packages are up to date and to review the Arch Linux documentation regarding upgrades:

sudo pacman -Syyu

Install the packages required to build Trunk Recorder:

sudo pacman -S --needed base-devel git cmake boost gnuradio gnuradio-osmosdr libuhd fdkaac sox

Continue with Building Trunk Recorder below

Building Trunk Recorder

In order to keep your copy of the Trunk Recorder source code free of build artifacts created by the build process, it is suggested to create a separate "out-of-tree" build directory. We will use trunk-build as our build directory.

Assuming you are in the desired directory to place both trunk-recorder and trunk-build folders to, perform the following...

mkdir trunk-build
git clone https://github.com/robotastic/trunk-recorder.git
cd trunk-build
cmake ../trunk-recorder
make
sudo make install

Configuring the UHD for Ettus SDRs

If you haven't setup UHD yet there are a few extra steps you need to take:

Install the UHD drivers:

sudo apt-get install libuhd-dev uhd-host

Download the firmware images. The location of the downloader is different than the error message:

dpkg -L uhd-host | grep "downloader"

The run the downloader at the location identified.

Setup the udev rules so any user can access the USB, as documented here:

cd /lib/uhd/utils
sudo cp uhd-usrp.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm trigger

Configure the RTL-SDR drivers

RTL-SDR dongles were originally meant to be used for DTV reception. There are default drivers that sometimes get loaded up for this and need to be blocked so you can use the SDR functionality.

Edit the blocklist:

sudo nano /etc/modprobe.d/blocklist-rtlsdr.conf

and add in the following:

# Blacklist host from loading modules for RTL-SDRs to ensure they
# are left available for the Docker guest.
blacklist dvb_core
blacklist dvb_usb_rtl2832u
blacklist dvb_usb_rtl28xxu
blacklist dvb_usb_v2
blacklist r820t
blacklist rtl2830
blacklist rtl2832
blacklist rtl2832_sdr
blacklist rtl2838
blacklist rtl8192cu
blacklist rtl8xxxu

Now restart to make sure these drivers are not loaded.

Configuring Trunk Recorder

The next step is to configure Trunk Recorder for the system you are trying to capture.

Running trunk recorder.

If all goes well you should now have the executable named trunk-recorder, and created the config.json configuration file as described in the Wiki and README.

From your build directory (e.g. trunk-build) you can now run ./trunk-recorder

Runtime options

Trunk Recorder will look for a config.json file in the same directory as it is being run in. You can point it to a different config file by using the --config argument on the command line, for example: ./trunk-recorder --config=examples/config-wmata-rtl.json.