Skip to content
Phil Vachon edited this page May 12, 2020 · 17 revisions

Welcome to the wiki for TSL-SDR, MultiFM and Decoder. This is intended to guide you on how to build, configure and use these tools for your signal listening workflow.

These are libraries intended to work with the TSL that provide DSP capabilities.

Building

Please install CMake. Most distros have a package. As well, you'll likely want at least one of the following RF interface libraries:

  • librtlsdrfor RTL-SDR (known as librtlsdr0 in Debian variants, librtlsdr-dev to compile)
  • libuhd for USRP (known as libuhd003 in Debian variants, libuhd-dev to compile)
  • libdespairspy for Airspy (find it here).

Simply create a directory inside the project, e.g. build, change to that directory and instruct CMake to do its thing. Simply:

git clone https://github.com/pvachon/tsl-sdr
mkdir tsl-sdr/build
cd tsl-sdr/build
cmake -DCMAKE_BUILD_TYPE=Release ..
make
sudo make install

You an optionally skip the make steps and invoke cpack. This will generate a Debian package for your convenience. Simply install this with dpkg -I tsl-sdr-*.dpkg.

All the applications from tsl-sdr should now be installed in /usr/local/bin if all went well.

Dependencies

The TSL currently depends on:

Of course, you need at least one data source, so if you don't have at least one of the above driver libraries you'll be limited in how you can use MultiFM.

As well, some scripts will use GNUradio (since reimplementing Parks-McClelland would be just a waste of time!).

If you're deploying MultiFM or Decoder to an embedded device (such as a Raspberry Pi), you do not need to have GNUradio or similar present.

On Debian/Raspbian/Ubuntu

To perform the minimal build:

  1. Install Build Dependencies from apt:

    sudo apt-get install build-essential git libck-dev librtlsdr-dev libjansson-dev
    
  2. Build and Install the TSL. See the TSL README for details.

  3. Build the tsl-sdr:

    git clone https://github.com/pvachon/tsl-sdr
    mkdir tsl-sdr/build
    cd tsl-sdr/build
    cmake -DCMAKE_BUILD_TYPE=Release ..
    make
    sudo make install
    

This will leave you with multifm, resampler and decoder in /usr/local/bin.

Note that both the TSL and TSL-SDR can easily be built as dpkg packages using cpack. Once you have the tsl-sdr package, you can simply install it on your target machine. The tsl-dev package is not required for deployment, only for building.

Tools

There are a number of applications in this repo. They all serve different purposes.

MultiFM

MultiFM is the heart of the TSL distribution for SDR. This allows a user to take a broadband chunk of the spectrum and subdivide it into multiple arbitrarily spaced narrowband channels. MultiFM is optimized for environments with relatively limited compute resources. Almost every step of the signal processing chain is is fixed point. Some functions make use of NEON intrinsics when built for ARM.

Decoder

Decoder is designed to take a PCM stream of demodulated but undecoded AIS, FLEX or POCSAG data, and decode any messages detected. Decoder will yield the raw messages as JSON objects, which then can be further postprocessed as you see fit.

Decoder supports AIS, FLEX (1600, 3200, 6400 baud) and POCSAG (512, 1200, 2400 baud) reception.

Resampler

Resampler is a simple rational resampler. Given an appropriate filter and set of command line filters, Resampler will allow a user to perform a rational resampling of samples from an input fifo, and write the resampled samples to the output fifo.

See resampler -h for information on the specific parameters to use.

A script, in scripts/design_interpolation_filter.py will generate a filter that can be used with Resampler as an input. This script requires GNURadio be installed.

Resampler requires real-valued 16-bit samples on the input side. The output will be real-valued samples.

This was really built as a test case, but it might be useful for some cases.

Getting Help

Be sure to check the project wiki for use cases, documentation and other details.

If you think you've found a bug (hey, it happens), open a Github issue for the project.

License

The TSL, MultiFM and Resampler (as well as libfilter, etc.) are provided under two licenses - the GPLv2 and the MIT/X license. You can pick whichever license works best for you.

Author

Most of this code was written by Phil Vachon ([email protected]).

Clone this wiki locally