All Projects → RTLion-Framework → RTLion

RTLion-Framework / RTLion

Licence: GPL-3.0 license
Multipurpose RTL-SDR Framework for RTL2832 based DVB-T receivers

Programming Languages

python
139335 projects - #7 most used programming language
javascript
184084 projects - #8 most used programming language
HTML
75241 projects
CSS
56736 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to RTLion

Airspy Fmradion
Software decoder for FM/AM broadcast radio with AirSpy R2 / Mini, Airspy HF+, and RTL-SDR
Stars: ✭ 59 (-32.95%)
Mutual labels:  radio, sdr, rtl-sdr, software-defined-radio
Soapy power
Obtain power spectrum from SoapySDR devices (RTL-SDR, Airspy, SDRplay, HackRF, bladeRF, USRP, LimeSDR, etc.)
Stars: ✭ 88 (+0%)
Mutual labels:  radio, sdr, rtl-sdr, software-defined-radio
Qspectrumanalyzer
Spectrum analyzer for multiple SDR platforms (PyQtGraph based GUI for soapy_power, hackrf_sweep, rtl_power, rx_power and other backends)
Stars: ✭ 677 (+669.32%)
Mutual labels:  radio, sdr, rtl-sdr, software-defined-radio
vor-python-decoder
Decodes VOR signal from WAV file to get the bearing to your position
Stars: ✭ 33 (-62.5%)
Mutual labels:  radio, sdr, rtl-sdr
RTLSDR-Airband
Multichannel AM/NFM demodulator
Stars: ✭ 487 (+453.41%)
Mutual labels:  sdr, rtl-sdr, software-defined-radio
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 (-31.82%)
Mutual labels:  sdr, rtl-sdr, software-defined-radio
Easy Sdr
This project is about creation of affordable and easy-to-manufacture prototypes of PCBs which are used to expand the capabilities of existing low-cost SDR receivers based on RTL2832U chip.
Stars: ✭ 275 (+212.5%)
Mutual labels:  radio, sdr, rtl-sdr
rtlsdr-wsprd
WSPR daemon for RTL receivers
Stars: ✭ 93 (+5.68%)
Mutual labels:  radio, sdr, rtl-sdr
Localradio
📻 LocalRadio is "Radio for Cord-Cutters" – a Software-Defined Radio (SDR) app for your Mac and mobile devices. With an inexpensive RTL-SDR USB device, LocalRadio provides a casual, home-based radio listening experience for your favorite local frequencies - FM broadcasts/free music/news/sports/weather/public safety & aviation scanner/etc.
Stars: ✭ 269 (+205.68%)
Mutual labels:  radio, sdr, rtl-sdr
Rtl Sdr
library for turning a RTL2832 based DVB dongle into a Software DefinedReceiver; mirror from https://git.osmocom.org/rtl-sdr/
Stars: ✭ 336 (+281.82%)
Mutual labels:  radio, sdr, software-defined-radio
Openwebrx
Open source, multi-user SDR receiver software with a web interface
Stars: ✭ 813 (+823.86%)
Mutual labels:  sdr, rtl-sdr, software-defined-radio
SDR Matlab LTE
📡 Using Software Designed Radio to transmit LTE downlink signals at 2.4 GHz
Stars: ✭ 21 (-76.14%)
Mutual labels:  radio, sdr, software-defined-radio
Gnss Sdr
GNSS-SDR, an open-source software-defined GNSS receiver
Stars: ✭ 801 (+810.23%)
Mutual labels:  sdr, rtl-sdr, software-defined-radio
Dumpvdl2
VDL Mode 2 message decoder and protocol analyzer
Stars: ✭ 100 (+13.64%)
Mutual labels:  sdr, rtl-sdr, software-defined-radio
Rtlsdr Scanner
A cross platform Python frequency scanning GUI for the OsmoSDR rtl-sdr library
Stars: ✭ 544 (+518.18%)
Mutual labels:  radio, sdr, rtl-sdr
Pagermon
Multimon-ng pager message parser and viewer
Stars: ✭ 154 (+75%)
Mutual labels:  radio, sdr, software-defined-radio
urh
Universal Radio Hacker: Investigate Wireless Protocols Like A Boss
Stars: ✭ 9,060 (+10195.45%)
Mutual labels:  radio, sdr, rtl-sdr
RFMap
RFMap - Radio Frequency Mapper
Stars: ✭ 23 (-73.86%)
Mutual labels:  radio, rtl-sdr
PlotRTL1090
3D visualization of air traffic through RTL-SDR (dump1090) and MATLAB
Stars: ✭ 107 (+21.59%)
Mutual labels:  sdr, rtl-sdr
SDR-Detector
GSM Scanner, RTL-SDR, StingWatch, Meteor
Stars: ✭ 56 (-36.36%)
Mutual labels:  rtl-sdr, software-defined-radio

RTLion

RTLion Framework

Multipurpose RTL-SDR Framework for RTL2832 based DVB-T receivers.

Lack of a simple FFT visualizer tool for RTL-SDR was the main reason behind the rtl_map project which was released at January 30 and caught attention of RTL-SDR enthusiasts. Another purpose of that project was creating a Frequency Scanner tool that will provide FFT-based power (dB) scanning. So I decided to postpone that feature with a todo and dive into the other RTL-SDR related libraries such as pyrtlsdr for learning new stuff and also for creating that scanning tool.

pyrtlsdr is a wrapper library for librtlsdr that aims turning RTL2832U devices into an Software Defined Radio. librtlsdr itself contains main functions for RTL-SDR and have derived tools as rtl_sdr, rtl_fm etc. (More info can be found at wiki) pyrlsdr is written in Python and wraps most of the functions of librtlsdr successfully in order to provide a more Pythonic API. RTLion project uses pyrtlsdr to communicate with the RTL-SDR device.

RTLion project can be described as a framework due to the implementation of various features other than the frequency scanner. The common structure of the project is appropriate for adding new features too. RTLion Framework has a Flask-SocketIO based Web interface which houses it's features there. Web interface preferred to the command line interface for facilitating the usage and supporting remote operations. Matplotlib used for creating graphs, more specifically pylab psd (Power Spectral Density) method mostly used for converting the complex samples (stored in a numpy array) to FFT graphs.

Main purpose of the RTLion Framework is creating a framework for RTL2832 based DVB-T receivers and supporting various features such as spectral density visualizing and frequency scanning remotely. These features are provided on the Web interface and accessible via the RTLion server or the RTLion Android App for RTL-SDR & IoT applications.

Installation

Dependencies

[*] librtlsdr must be installed for pyrtlsdr to access RTL-SDR device.

Clone the Repository

git clone https://github.com/RTLion-Framework/RTLion

Package Installation

Recommended installation:

pip3.7 install -r requirements.txt

Manual installation:

# [Install flask-socketio with pip]
pip3.7 install flask-socketio
# [Install matplotlib with your package manager]
# [Ubuntu]
sudo apt-get install python-matplotlib
# [Arch]
trizen python-matplotlib

Usage

Command Line Arguments

Command line arguments are not mandatory because it's possible to update settings at the Web interface. But still, RTLion server can be started with the command line arguments.

usage: RTLion.py [-h] [-d DEV] [-s SAMPRATE] [-f FREQ] [-g GAIN] [-n N] [-i I] [host:port]

Positional Arguments

[host:port] -> IP address/hostname and port number for server to listen on (default: 0.0.0.0:8081)

Optional Arguments

[-h, --help]                        -> show help message and exit
[-d DEV, --dev DEV]                 -> device index (default: 0)
[-s SAMPRATE, --samprate SAMPRATE]  -> sample rate (default: 2048000 Hz)
[-f FREQ, --freq FREQ]              -> center frequency (Hz)
[-g GAIN, --gain GAIN]              -> gain (0 for auto) (default: auto)
[-n N, -num N]                      -> number of the reads (default: -1, inf.)
[-i I, -interval I]                 -> interval between reads (default: 500ms)

Starting RTLion Server

Basically, execute the main file RTLion.py using Python3.7. (Command line arguments are optional.)

Starting RTLion Server

Power Spectrum

Web interface is accessible with using the RTLion server's host and port information.

RTLion Main Page

After selecting the Power Spectrum (FFT Graph) option, it's possible to update settings and create graph.

RTLion Graph Page

Also center frequency can be changed real time via the range input element below the graph.

RTLion Power Spectrum

Frequency Scanner

Frequency scanner aims to find the peaks on a power spectrum for miscellaneous applications with using a sorting method. For doing that it takes 2 important arguments which can be listed as frequency range (min. - max.) and sensitivity.

RTLion computes frequency range and step size values automatically if center frequency parameter is given within the command line. Otherwise, the user should enter the frequency range manually.

RTLion Frequency Scanner

Sensitivity value determines the count of the frequencies that will selected from the sorted list and can be changed with the range input element. Increasing the sensitivity causes scanned values to increase so it's important to use this parameter correctly depending on what the main goal is. Also it's easy to sight scanned values since RTLion marks them with a "x" on the graph.

Scanning 80 MHz - 102 MHz

Scan Results of 80 MHz - 102 MHz

Logs

RTLion Framework provides logging with command line and Web interface.

Command Line Logging

Web Interface Logging

Android Application

It's possible to use RTLion Framework's features on a Android device via the mobile application. For more info, visit the RTLion-app repository.

RTLion App Page

RTLion with Docker

Dockerfile provided in the repository for using the RTLion Framework with Docker. Usable with the IoT applications.

Building the Image

Image can be built on the directory after cloning the repository.

docker build -t rtlion .

Running the Container

docker run -d --name rtlionfw -p 8081:8081 --privileged -v /dev/bus/usb:/dev/bus/usb rtlion

docker ps output:

Docker ps

Stopping & Removing the Container

docker stop rtlionfw
docker rm rtlionfw

IoT

At the IoT side of the project, it's possible to run RTLion server (with or without Docker) on a device like Raspberry Pi with the RTL-SDR plugged in and access the RTLion Framework remotely. (This concept can be diversified.)

IoT Diagram

Version 1.0

Prototype v1 is designed to be portable with Raspberry Pi 3 model B, RTL-SDR (RTL2832U / 820T2) and external power supply. RTL-SDR is half embedded inside the case and other half is outside for the antenna connection.

RTLion - IoT Prototype

It's possible to disconnect RTL-SDR with unplugging the USB from Raspberry Pi.

RTLion - IoT USB Bus

RTLion - IoT RTL-SDR

RTL-SDR antenna connection is shown below.

RTLion - IoT Antenna

Device can be powered by the power bank below the case. It shows the battery status with the LED indicator.

RTLion - IoT Power

Inner Design of Version 1.0

The case contains a fan for cooling the Raspberry Pi and a female USB port for outer devices which leads to a USB connector. This USB adapter connection is required for embedding the RTL-SDR circuit inside the case and getting rid of redundant design of connecting RTL-SDR to the Raspberry Pi's USB port.

RTLion - IoT Design I

RTLion - IoT Design II

Of course this prototype design can be improved due to the existence of other Raspberry Pi versions such as Zero.

Accessing the Server

After starting the RTLion server on Raspberry Pi, connection can be made from the Web interface or the mobile application and the RTL-SDR functions can be accessed.

Starting RTLion Server on RPI

DVB Driver Issue

librtlsdr can't access the RTL-SDR device when the Linux kernel DVB driver is loaded and shows the warning message below.

Kernel driver is active, or device is claimed by second instance of librtlsdr. In the first case, please either detach or blacklist the kernel module (dvb_usb_rtl28xxu), or enable automatic detaching at compile time.

Unloading driver solves the issue temporarily.

sudo rmmod dvb_usb_rtl28xxu rtl2832

Visit blacklist_dvb_usb_rtl28xxu for more info and permanent solution.

TODO(s)

Considerable for future versions.

  • Implement modulation and audio support (AM/FM)
  • Fix step size calculation for not wide frequency ranges
  • Make more responsive web interface
  • Minimalize the Dockerfile for a lighter build
  • Add new features to graphs (saving as png, txt)
  • Improve the IoT side of the project (use rtl-sdr v3)
  • Support custom delay between new frequencies when scanning
  • Scanning in background

Contribution

RTLion Project is open to contributions.*

License

GNU General Public License (v3)

Copyright

Copyright (c) 2019-2020, orhun

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].