Skip to content

kevinmehall/rust-soapysdr

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Rust bindings for SoapySDR

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

API Documentation | Changelog

Dependencies

This library requires dependencies not handled by Cargo:

  • libsoapysdr 0.6, 0.7, or 0.8
  • libclang 5.0+ (for bindgen)
  • pkg-config

Ubuntu

(Tested on Ubuntu 22.04)

sudo apt install libsoapysdr-dev libclang-dev llvm-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

nix-shell

(see shell.nix)

Windows

Install pre-built PothosSDR and LLVM, then

  • Set LIBCLANG_PATH environment variable to LLVM bin directory for rust-bindgen
  • Add PothosSDR bin directory to system PATH

Warning

Many SoapySDR driver modules have error handling and thread safety bugs. This library provides safe Rust wrappers assuming the drivers meet the (under-documented) intentions of the SoapySDR core API contract, but if SoapySDR loads modules that violate this contract and you do atypical things with them, you may encounter unexpected behavior. For details, see this SoapySDR issue.

Utilities

This crate comes with two small utilities that serve as example code.

soapy-sdr-info

Displays device details like SoapySDRUtil.

cargo run --release --features=binaries --bin soapy-sdr-info

soapy-sdr-stream

Records data from a device.

e.g. capture 15 seconds of data from the FM band:

cargo run --release --features=binaries --bin soapy-sdr-stream -- -d driver=rtlsdr -r out.cfile -f 96M -s 1M -n 15M

The resulting file contains 32-bit little-endian complex float samples, and can be opened with inspectrum.

License

Licensed under either of

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

About

Rust bindings for SoapySDR, the vendor-neutral software defined radio hardware abstraction layer

Topics

Resources

License

Apache-2.0, BSL-1.0 licenses found

Licenses found

Apache-2.0
LICENSE
BSL-1.0
LICENSE-BSL

Stars

Watchers

Forks

Packages

No packages published