This library is a very work in progress, and the interface currently is subject to changes.
This library is not trying to replace existing radio-prototyping tools or amateur radio software like GNURadio-Companion or SDRAngel. Rather, this project aims to provide Rust tools and simplified versions of complex operations that enables these systems to be built. It also aims to be used in production code and act as a drop-in replacement of a prototype built in GNURadio-Companion. Although not the intended use, this library can be used in other applications like Ground, Navigation, and Control (GNC) applications or sound design.
To use this library without the standard library, disable default features. This library REQUIRES the alloc
crate.
Even in no_std mode, the alloc
crate is used to allocate memory for buffers and other objects.
std
: Enabled by default. Disables theno_std
feature and enables the standard library.gui
: Enables GUI features and objects. This flag automatically enables thestd
feature.bladerf
: Enables the BladeRF hardware support. This flag automatically enables thestd
feature. Please make sure you have the BladeRF library (libbladeRF) installed on your system. Check the BladeRF GitHub wiki for more information on how to install the BladeRF library.
Other than cargo and alloc support, with default-features disabled, you don't need anything else.
Nothing needs to be installed
Please make sure you have the BladeRF library (libbladeRF) installed on your system. Check the BladeRF GitHub wiki for more information on how to install the BladeRF library.
Here are some instructions for some operating systems:
sudo add-apt-repository ppa:nuandllc/bladerf
sudo apt update
sudo apt install bladerf libbladerf-dev
{ pkgs ? import <nixpkgs> {} }:
pkgs.mkShell{
buildInputs = with pkgs; [
libbladeRF
git
cmake
];
LD_LIBRARY_PATH = "${pkgs.lib.makeLibraryPath [
pkgs.libbladeRF
]}";
}
Install the dependencies:
Debian/Ubuntu:
sudo apt install libusb-1.0-0-dev libusb-1.0-0 build-essential cmake libncurses5-dev libtecla1 libtecla-dev pkg-config git wget
RedHat/Fedora:
sudo yum groupinstall "Development Tools" "Development Libraries"
sudo yum install libusbx libusbx-devel cmake wget gcc-c++ libedit libedit-devel
Build the library:
git clone https://github.com/Nuand/bladeRF.git ./bladeRF
cd ./bladeRF
cd host/
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DINSTALL_UDEV_RULES=ON ../
make && sudo make install && sudo ldconfig
Troubleshooting: It is possible that you may encounter an error saying that you have insufficient permissions to access bladeRF. To fix this, try running the program as root.
Use this installer to install the BladeRF library: BladeRF Windows Installer
MacPorts:
sudo port install bladeRF +tecla
Compile from source (Be sure to have Homebrew installed):
brew install libusb pkgconfig cmake libtecla
git clone https://github.com/Nuand/bladeRF.git
cd ./bladeRF
cd host/
mkdir build; cd build
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/local ..
make
sudo make install
Most of these dependencies are already installed on your system. But if you don't have them, you can install them using your package manager. You need to have:
- GTK3
- Wayland or X11
- OpenGL
- libxkbcommon
- fontconfig
- pkg-config
- gcc
- rustc
- cargo
sudo apt install libgtk-3-dev libwayland-dev libxkbcommon-dev libgl-dev fontconfig pkg-config gcc rustc cargo
sudo dnf install gtk3-devel wayland-devel libxkbcommon-devel mesa-libGL-devel fontconfig pkg-config gcc rust cargo
{ pkgs ? import <nixpkgs> {} }:
pkgs.mkShell{
buildInputs = with pkgs; [
gcc
rustc
cargo
pkg-config
fontconfig
libxkbcommon
libGL
wayland
];
LD_LIBRARY_PATH = "${pkgs.lib.makeLibraryPath [
pkgs.rustc
pkgs.cargo
pkgs.libxkbcommon
pkgs.libGL
pkgs.wayland
]}";
}
{ pkgs ? import <nixpkgs> {} }:
pkgs.mkShell{
buildInputs = with pkgs; [
gcc
rustc
cargo
pkg-config
fontconfig
libxkbcommon
libGL
xorg.libXcursor
xorg.libXrandr
xorg.libXi
xorg.libX11
];
LD_LIBRARY_PATH = "${pkgs.lib.makeLibraryPath [
pkgs.rustc
pkgs.cargo
pkgs.libxkbcommon
pkgs.libGL
pkgs.xorg.libXcursor
pkgs.xorg.libXrandr
pkgs.xorg.libXi
pkgs.xorg.libX11
]}";
}
All dependencies should already be included on your system. If you don't have them, you can install them using the MSYS2 package manager.
All dependencies should already be included on your system. If you don't have them, you can install them using the Homebrew package manager.
- Cross-Hardware Math Acceleration
- CPUs (Native rust)
- Frequency and Phase Locked Loops
- Filters
- Low-pass filters
- High-pass filters
- Pass-band filters
- Gain Control
- Manual Gain Control (MGC)
- Automatic Gain Control (AGC)
- UI (for debugging)
- Waterfall Chart
- Time Chart
- Constellation Chart
- Eye Diagram
- Modulation and Demodulation
- FSK
- BPSK
- QPSK
- QAM
- ???