-
Notifications
You must be signed in to change notification settings - Fork 185
Home
![https://raw.githubusercontent.com/wiki/pothosware/SoapySDR/images/soapy_sdr_logo.png](https://raw.githubusercontent.com/wiki/pothosware/SoapySDR/images/soapy_sdr_logo.png)
A fresh and clean vendor neutral and platform independent SDR support library
SoapySDR is an open-source generalized C/C++ API and runtime library for interfacing with SDR devices. With SoapySDR, you can instantiate, configure, and stream with an SDR device in a variety of environments. Both osmosdr and uhd devices are available within SoapySDR. In addition, vendors can directly support their hardware using SoapySDR device modules. There are wrappers for both gr-osmosdr, uhd, and gr-uhd to bring an ecosystem of existing applications to SoapySDR devices. And SoapySDR has support for powerful platforms like GNU Radio and Pothos.
![https://raw.githubusercontent.com/wiki/pothosware/SoapySDR/images/soapy_sdr_info.png](https://raw.githubusercontent.com/wiki/pothosware/SoapySDR/images/soapy_sdr_info.png)
There are a family of devices known as SDRs with RF frontends, ADCs, DACs, and a PC interface. The project goal is to support this general type of device known as SDR. SoapySDR is not intended to be a generalized hardware abstraction library. However, with interfaces for registers, generalized settings, spi, i2c, etc; its feasible to wrap arbitrary hardware or SoC devices in a SoapySDR plugin as a convenient way to get network support and python language bindings.
SoapySDR is not tied to any particular SDR hardware vendor. We try to generalize the SoapySDR API to support most devices out there, while providing hooks for users to access vendor-specific funtionalities.
SoapySDR is not specific to any particular SDR platform. We wrote SoapySDR to help platform creators interface with SDRs without getting lost in the details of a given device.
SoapySDR supports SDR devices through runtime-loadable modules. This allows users to build and install device support against an existing SoapySDR installation without disturbing the existing installation or requiring recompilation of the platform. This allows vendors to maintain a SoapySDR module along with their driver build package.
The SoapySDR library is released under a permissive free software license. This makes SoapySDR applicable for both open-source projects and commercial uses. Regardless of SoapySDR licensing, please respect the licensing of platform and vendor software.
Use any SoapySDR supported device transparently over a local network link. The remote support feature can turn any SDR into a network peripheral, to work around software-related issues, to share a device among multiple computers, or to ease embedded device development. Learn more on the remote access wiki.
![https://raw.githubusercontent.com/wiki/pothosware/PothosCore/images/dependencies.png](https://raw.githubusercontent.com/wiki/pothosware/PothosCore/images/dependencies.png)
SoapySDR itself has very few dependencies. To build SoapySDR, the only dependencies are a C++ compiler and CMake. However, individual vendor dependencies may vary widely. Also, the optional Python bindings include some additional dependencies.
- Soapy SDR binaries for your system may available from Pothos downloads.
- Or follow the build guide to compile and install Soapy SDR from source.
The client API is what users and platform maintainers write their code with to use a SDR device.
- SoapySDR offers a C++ API through the SoapySDR::Device class (doxygen)
- SoapySDR offers a C API through the SoapySDRDevice C wrapper
- SoapySDR offers a Python API through the SoapySDR Python module
Example code:
- The C API example wiki page includes a basic example
- The SoapySDR Python module contains a python example
The driver API is what vendors write their hardware support modules with. See the Driver Guide for more details. To support hardware in SoapySDR, simply do the following:
- Copy the ExampleDriver into your devices's build tree
- Rename the "MyDevice" files and classes for your product
- Implement overloads for a custom SoapySDR::Device class
- Implement the discovery function to locate devices on the system
- Implement the factory function to instantiate the device object
- Further reading: Stream status indicators
SoapySDR is supposed to be a useful tool for vendors and users alike. And therefore we need your feedback, suggestions, and criticisms. Feel free to leave a ticket on the issue tracker, send an email to a public forum like osmosdr list, or the Pothos users' group.
Use SoapySDR to bring SDR support into your platform or application.
- Source and sink blocks: https://github.com/pothosware/gr-sdr/wiki
We have created a vendor neutral gr-sdr component to mainline into GNU Radio. This will make it easy for GNU Radio developers to maintain the component, and vendors can continue updating modules and supporting new hardware.
The Pothos data flow project uses SoapySDR for its SDR source and sink blocks.
- Main Pothos project page: https://github.com/pothosware/PothosCore/wiki
- Pothos SDR project page: https://github.com/pothosware/PothosSoapy/wiki
![https://raw.githubusercontent.com/wiki/pothosware/PothosSoapy/images/sdr_blocks.png](https://raw.githubusercontent.com/wiki/pothosware/PothosSoapy/images/sdr_blocks.png)
- FAQ
- Build guide
- Driver guide
- SoapySDR header files
- Doxygen documentation
- Python binding support
- LuaJIT binding support
- .NET binding support
- GO binding support
- Rust binding support
- Julia binding support
- Pothos SDR Tutorial
- Help and support
- Pothos users' group
- Twitter @pothosware
- IRC chat #pothos
- Slack workspace
- Contract services
- Developer blog
- Contributing
- Donate
- Example support
- Remote access
- Multi device
- Device sharing
- SIMD converters
- Audio devices
- Osmo support
- NovenaRF support
- EVB7 support
- UHD support
- Blade RF support
- Hack RF support
- RTL-SDR support
- SDR Play support
- Radioberry support
- Red Pitaya support
- Lime Suite support
- Airspy support
- Airspy HF+ support
- PlutoSDR support
- Skylark Iris module
- Funcube Dongle Pro+
- IC-R8600 Receiver
- Epiq Sidekiq
- NetSDR support
- XTRX support
- RTL TCP support
- SpyServer support
- Afedri support
- Pothos SDR
- Cubic SDR
- Rx Tools
- LuaRadio
- GNURadio blocks
- Osmocom blocks
- QSpectrumAnalyzer
- RTL433 project
- Welle.io DAB/DAB+
- SDRangel analyzer
- RTLSDR-Airband
- HABDEC RTTY decoder
- LinHPSDR receiver
- HackTV transmitter
- ODR-DabMod
- QUISK SDR
- SigDigger
- Suscan
- SdrGlut
- QRadioLink
- OpenWebRX
- SDR++
- Seify
- Abraca DAB radio