A software defined radio recording library in python.
A simple python interface for robust recording, analysis, and cyber features for a range of software defined radio's.
Organized as a Python Pip Poetry project. Currently only limited support for RTL-SDR via pyrtlsdr package with others to be added.
- Obtain pyproject.toml & poetry.lock
- in root of project, run
poetry install
Both toml and lock files are currently version controlled
Try out the example!
poetry run python examples/example_usage.py
In general, the library is organized around you calling the library -> hardware device interface -> functions We define the hardware device interface in the python file and class name:
For RTLSDRv4 devices:
from sdrcap import rtl_interface
Currently the recording output supports CSV and HDF5 filetypes.
setuptool is needed for MACOS to import packages
A environment setting script is set to bind the poetry environments rtlsdrlib but shouldn't be necessary if you are explicitly doing:
poetry run python ${target}
instead of:
poetry shell
python ${target}
due to differences in potential python environments. If you want to use it run:
source set_env.sh
then run:
sudo -E python ${target}
where -E attached to sudo retains the environment variable you sourced from the shell script.
For RTLSDR: 0. Support multiple devices
- Support all rtlsdr.rtlsdr.BaseRtlSdr API options
- Support asyncio streaming
- Support/ expand TCP server client functions -> rtlsdr.rtlsdrtcp
- Add compliant encryption for data at rest, data in air
- Add on more advanced data transformation, interpolation, sniffing and analysis features
In general: 0. Solid support for receive only functionality cross SDR's
- GNU Radio integration/ experimentation
- GUI client app?
SDR devices to add (not in order): 0.
- USRP B200mini: https://www.ettus.com/all-products/usrp-b200mini/
- USRP B205mini-i:
- hackRF One: https://www.amazon.com/dp/B0BKH7Z2NJ/
- ADALM Pluto