cropinghigh / sdrpp-tetra-demodulator

Tetra demodulator plugin for SDR++ (output can be fed to tetra-rx from osmo-tetra)
GNU General Public License v3.0
72 stars 15 forks source link

sdrpp-tetra-demodulator

Tetra demodulator plugin for SDR++

Designed to fully demodulate and decode TETRA downlink signals

Thanks to osmo-tetra authors for their great library

Signal chain:

VFO->Demodulator(AGC->FLL->RRC->Maximum Likelihood(y[n]y'[n]) timing recovery->Costas loop)->Constellation diagram->Symbol extractor->Differential decoder->Bits unpacker->Osmo-tetra decoder->Sink

Binary installing:

Visit the Actions page, find latest commit build artifacts, download tetra_demodulator.so and put it to /usr/lib/sdrpp/plugins/, skipping to the step 4. Don't forget to install libtalloc!

Building:

  1. If you have arch-like system, just install package sdrpp-tetra-demodulator-git with all dependencies.

    OR

  2. Install SDR++ core headers to /usr/include/sdrpp_core/, if not installed. Refer to https://cropinghigh.github.io/sdrpp-moduledb/headerguide.html about how to do that

    OR if you don't want to use my header system, add -DSDRPP_MODULE_CMAKE="/path/to/sdrpp_build_dir/sdrpp_module.cmake" to cmake launch arguments

    Download and patch ETSI TETRA codec(in this repository):

      cd src/decoder/etsi_codec-patches
      ./download_and_patch.sh

    Install libtalloc-dev/talloc via package manager

  3. Build:

      mkdir build
      cd build
      cmake ..
      make
      sudo make install
  4. Enable new module by adding it via Module manager

Usage:

  1. Find TETRA frequency you want to receive

  2. Move demodulator VFO to the center of it

  3. After some time, it will sync to the carrier and you'll likely see 4 constellation points(sync requires at least ~20dB of signal)

  4. If the channel is unencrypted, just wait for the voice activity and listen to it!