-
Notifications
You must be signed in to change notification settings - Fork 14
Home
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.
Please install CMake. Most distros have a package. As well, you'll likely want at least one of the following RF interface libraries:
-
librtlsdr
for RTL-SDR (known aslibrtlsdr0
in Debian variants,librtlsdr-dev
to compile) -
libuhd
for USRP (known aslibuhd003
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.
The TSL currently depends on:
- Linux
- ConcurrencyKit (https://github.com/concurrencykit/ck)
- The Standard Library (TSL) (https://github.com/pvachon/tsl)
- libjansson (most distributions have a package)
- librtlsdr (most distributions have a package) - for RTL-SDR support - optional
- libdespairspy (https://github.com/pvachon/despairspy) - for Airspy support - optional
- libuhd (https://files.ettus.com/manual/index.html) - for USRP support - optional
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.
To perform the minimal build:
-
Install Build Dependencies from
apt
:sudo apt-get install build-essential git libck-dev librtlsdr-dev libjansson-dev
-
Build and Install the TSL. See the TSL README for details.
-
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.
There are a number of applications in this repo. They all serve different purposes.
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 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 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.
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.
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.
Most of this code was written by Phil Vachon ([email protected]).
TSL-SDR is an open source project to provide easy-to-use tools for building production software defined radio workflows.