soapysdr-sys 0.8.1

Bindings for the C API of SoapySDR, the vendor-neutral software defined radio hardware abstraction layer.
Documentation

Rust FFI for SoapySDR

SoapySDR is a hardware abstraction layer for many software defined radio devices.

This crate provides bindings for the SoapySDR C API, while the soapysdr crate provides a safe Rust wrapper.

Dependencies

This library requires dependencies not handled by Cargo:

  • libsoapysdr 0.8.x
  • pkg-config (Linux and macOS only)

Ubuntu

(Tested on Ubuntu 24.04)

sudo apt install libsoapysdr-dev pkg-config

# Choose the appropriate drivers for your hardware:
sudo apt install soapysdr-module-rtlsdr soapysdr-module-hackrf soapysdr-module-uhd soapysdr-module-lms7

Nix

soapysdr-with-plugins and pkg-config

(see shell.nix)

Windows

Install pre-built PothosSDR and add PothosSDR bin directory to system PATH.

MacOS

Install SoapySDR with Homebrew:

brew install pkg-config
brew tap pothosware/homebrew-pothos
brew update

# Then install the appropriate packages for your hardware:
brew install soapyrtlsdr
brew install soapyhackrf
brew install soapybladerf
# ...

Updating bindings

The bindings were originally generated with bindgen, but subsequently hand-edited. To run bindgen again, use

rust-bindgen --rust-edition 2021 --distrust-clang-mangling --no-prepend-enum-name wrapper.h > /tmp/bindings.rs
diff -u /tmp/bindings.rs src/bindings.rs | egrep -v '^\+\s*///' | less

and copy over any new functions or changes.

License

Boost Software License 1.0, (Same as SoapySDR itself)

See LICENSE-BSL or http://opensource.org/licenses/BSL-1.0