All Projects → dernasherbrezon → sdr-server

dernasherbrezon / sdr-server

Licence: GPL-2.0 license
High performant TCP server for rtl-sdr

Programming Languages

c
50402 projects - #5 most used programming language
CMake
9771 projects
shell
77523 projects

Projects that are alternatives of or similar to sdr-server

Pysdr
A guide for using Python as a software-defined radio (SDR) framework, for extremely rapid development of SDR apps/research with beautiful GUIs
Stars: ✭ 60 (-50.82%)
Mutual labels:  rtl-sdr
Frequensea
Visualizing the frequency spectrum.
Stars: ✭ 127 (+4.1%)
Mutual labels:  rtl-sdr
Acarsdec
ACARS SDR decoder
Stars: ✭ 177 (+45.08%)
Mutual labels:  rtl-sdr
Readsb
Readsb is a Mode-S/ADSB/TIS decoder for RTLSDR, BladeRF, Modes-Beast and GNS5894 devices.
Stars: ✭ 91 (-25.41%)
Mutual labels:  rtl-sdr
Gqrx Scanner
A frequency scanner for Gqrx Software Defined Radio receiver
Stars: ✭ 116 (-4.92%)
Mutual labels:  rtl-sdr
Gqrx
Software defined radio receiver powered by GNU Radio and Qt.
Stars: ✭ 1,934 (+1485.25%)
Mutual labels:  rtl-sdr
Sdrangel
SDR Rx/Tx software for Airspy, Airspy HF+, BladeRF, HackRF, LimeSDR, PlutoSDR, RTL-SDR, SDRplay RSP1 and FunCube
Stars: ✭ 1,058 (+767.21%)
Mutual labels:  rtl-sdr
flight2bq
RTLSDR ADS-B dump1090 to Google BigQuery
Stars: ✭ 33 (-72.95%)
Mutual labels:  rtl-sdr
R2cloud
Decode satellite signals on Raspberry PI or any other 64-bit intel.
Stars: ✭ 125 (+2.46%)
Mutual labels:  rtl-sdr
Wmbusmeters
Read the wireless mbus protocol to acquire utility meter readings.
Stars: ✭ 172 (+40.98%)
Mutual labels:  rtl-sdr
Tsl Sdr
Software Defined Radio Demodulation and Decoding Tools
Stars: ✭ 94 (-22.95%)
Mutual labels:  rtl-sdr
Dumpvdl2
VDL Mode 2 message decoder and protocol analyzer
Stars: ✭ 100 (-18.03%)
Mutual labels:  rtl-sdr
Rtlsdr 433m Sensor
Decoder for Oregon Scientific v1 protocol wireless temperature sensors with RTL-SDR and GNU Radio.
Stars: ✭ 157 (+28.69%)
Mutual labels:  rtl-sdr
Soapy power
Obtain power spectrum from SoapySDR devices (RTL-SDR, Airspy, SDRplay, HackRF, bladeRF, USRP, LimeSDR, etc.)
Stars: ✭ 88 (-27.87%)
Mutual labels:  rtl-sdr
Openear
windows based project that try to decoding protocols (tetra,dmr, ...) using rtl-sdr
Stars: ✭ 200 (+63.93%)
Mutual labels:  rtl-sdr
Airspy Fmradion
Software decoder for FM/AM broadcast radio with AirSpy R2 / Mini, Airspy HF+, and RTL-SDR
Stars: ✭ 59 (-51.64%)
Mutual labels:  rtl-sdr
Wavesdr
macOS native desktop Software Defined Radio app
Stars: ✭ 144 (+18.03%)
Mutual labels:  rtl-sdr
radio-astronomy-fftw
fftw3 based radio-astronomy data collection and dissemination (see project on hackster.io website)
Stars: ✭ 22 (-81.97%)
Mutual labels:  rtl-sdr
rtl-power-fftw
Power spectrum for RTLSDR dongles.
Stars: ✭ 139 (+13.93%)
Mutual labels:  rtl-sdr
Imsi Catcher
This program show you IMSI numbers of cellphones around you.
Stars: ✭ 2,198 (+1701.64%)
Mutual labels:  rtl-sdr

About Build Status Quality Gate Status

design

Key features

  • Share available RF bandwidth between several independent clients:
    • Total bandwidth can be 2016000 samples/sec at 436,600,000 hz
    • One client might request 48000 samples/sec at 436,700,000 hz
    • Another client might request 96000 samples/sec at 435,000,000 hz
  • Several clients can access the same band simultaneously
  • Output saved onto disk or streamed back via TCP socket
  • Output can be gzipped (by default = true)
  • Output will be decimated to the requested bandwidth
  • Clients can request overlapping RF spectrum
  • Rtl-sdr starts only after first client connects (i.e. saves solar power &etc). Stops only when the last client disconnects
  • MacOS and Linux (Debian Raspberrypi)

Design

design

API

  • Defined in the api.h
  • Clients can connect and send request to initiate listening:
    • center_freq - this is required center frequency. For example, 436,700,000 hz
    • sampling_rate - required sampling rate. For example, 48000
    • band_freq - first connected client can select the center of the band. All other clients should request center_freq within the currently selected band
    • destination - "0" - save into file on local disk, "1" - stream back via TCP socket
  • To stop listening, clients can send SHUTDOWN request or disconnect

Queue

design

The data between rtl-sdr worker and the dsp workers is passed via queue. This is bounded queue with pre-allocated memory blocks. It has the following features:

  • Thread-safe
  • If no free blocks (consumer is slow), then the last block will be overriden by the next one
  • there is a special detached block. It is used to minimize synchronization section. All potentially long operations on it are happening outside of synchronization section.
  • Consumer will block and wait until new data produced

Configuration

Sample configuration can be found in tests:

https://github.com/dernasherbrezon/sdr-server/blob/main/test/resources/configuration.config

Performance

Is good. Some numbers in test/perf_xlating.c

Dependencies

sdr-server depends on several libraries:

  • libvolk. It is recommended to use the latest version (Currently it is 2.x). After libvolk installed or built, it needs to detect optimal kernels. Run the command volk_profile to generate and save profile.
  • librtlsdr. Version >=0.5.4 is required.
  • libconfig
  • libz. Should be installed in every operational system
  • libm. Same
  • libcheck for tests (Optional)

All dependencies can be easily installed from r2cloud APT repository:

sudo apt-get install dirmngr lsb-release
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A5A70917
sudo bash -c "echo \"deb http://s3.amazonaws.com/r2cloud $(lsb_release --codename --short) main\" > /etc/apt/sources.list.d/r2cloud.list"
sudo apt-get update
sudo apt-get install libvolk2-dev librtlsdr-dev libconfig-dev check

Build

To build the project execute the following commands:

mkdir build
cd build
cmake ..
make

Install

sdr-server can be installed from r2cloud APT repository:

sudo apt-get install sdr-server
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].