RTL-SDR library written in Rust

Overview

RTL-SDR

An RTL-SDR library written in Rust!

What is RTL-SDR?

RTL-SDR is a family of low-cost (~$30) USB software-defined radio (SDR) receivers that can tune a wide range of frequencies which are then processed in software (thus the 'software' in SDR).

They can receive all kinds of signals such as FM radio (see the simple_fm example in this project), aircraft radio and position data (like what you see on adsb-exchange), weather satellite imagery, and more!

rtl-sdr.com has a great page with much more explanation.

Getting Started

You can run the example FM radio receiver with the following command on Mac:

cargo run --example simple_fm | play -r 32k -t raw -e s -b 16 -c 1 -V1 -

and similarly on Linux:

cargo run --example simple_fm | aplay -r 32k -f S16_LE

The example is thoroughly documented to clearly show how to use this library, and hopefully make the FM demodulation process understandable too!

Build Options

This library includes the RTL-SDR Blog modifications to the original Osmocom library as a feature. Enable it in cargo with the --features rtl_sdr_blog flag.

Contributing

Contributions to this project are welcome! Check out the Issues page to see what's on the roadmap that you could help with, or open a new Issue.

Acknowledgments

This library originated as a port of the Osmocom rtl-sdr library, with modifications from the RTL-SDR Blog fork.

You might also like...
A library for extracting #[no_mangle] pub extern "C" functions (https://docs.rust-embedded.org/book/interoperability/rust-with-c.html#no_mangle)

A library for extracting #[no_mangle] pub extern "C" functions In order to expose a function with C binary interface for interoperability with other p

Rust Imaging Library: A high-level Rust imaging crate.

ril Rust Imaging Library: A performant and high-level Rust imaging crate. Documentation • Crates.io • Discord What's this? This is a Rust crate design

Modern Rust utility library delivering modularity, performance & extras; or simply Rust version of Lodash

Lorust - API Documentation Lorust is the Rust version of Lodash, which is a modern Javascript utilty library delivering modularity, performance & extr

Nixt is an interpreted programming language written in Rust

Nixt Nixt is an interpreted lisp inspired programming language written in Rust Index About Examples Installation Build About Nixt goal is to provide a

Fegeya Elitebuild, small, powerful build system. Written in Rust.
Fegeya Elitebuild, small, powerful build system. Written in Rust.

Fegeya Elitebuild Small, powerful, work-in-progress build system. Written in Rust. Features: No functions (all are built-ins) All variables are global

Raytracer tutorial for PPCA 2021, written in Rust.
Raytracer tutorial for PPCA 2021, written in Rust.

Pseudo Photograph Company of ACM 工科和ACM的朋友们都已结课!看看这些了不起的艺术品: 工科 ACM ACM伪摄影公司,简称PPCA,于2021年成立 😉 这个项目的主要工作是使用Rust语言实现一个光线追踪渲染器。以这个形式,你能通过学习一门新的(而且漂亮的)语

An i386 operation system written in pure rust for fun and no profit.

OrustS An i386 operation system written in pure rust (for fun and no profit). This operation system is under active developing. Checklist implement a

A tool to make grocery lists written in Rust

grusterylist: makes grocery lists, written in Rust grusterylist uses and can add to local libraries of user-added recipes and grocery items to put tog

Tests a wide variety of N64 features, from common to hardware quirks. Written in Rust. Executes quickly.

n64-systemtest Tests a wide variety of N64 features, from common to hardware quirks. Written in Rust. Executes quickly. n64-systemtest is a test rom t

Comments
  • Linux -> Kernel module unload required

    Linux -> Kernel module unload required

    Hi,

    thank you for the exciting project.

    I would just like to add that there are issues on Linux when the rtl* kernel modules are loaded. The kernel modules take over the RTL-SDR device so that the USB device can no longer be accessed.

    The USB error is as follows:

    thread 'main' panicked at 'Unable to open SDR device!: Usb(Busy)'
    

    The module can be temporarily unloaded as follows:

    sudo rmmod rtl2832_sdr
    sudo rmmod dvb_usb_rtl28xxu
    sudo rmmod rtl2832
    sudo rmmod rtl8xxxu
    

    Regards, Jiri

    opened by ramtej 1
  • `RtlSdr` Integration Tests

    `RtlSdr` Integration Tests

    Want to create integration tests for RtlSdr which validate the entire device state before/after operations, with expected values extracted from a real device using a modified version of the original Osmocom library.

    This depends on Create In-Memory DeviceHandle to be able to run the library with an in-memory fake device instead of the real thing.

    opened by ccostes 0
  • Create In-Memory DeviceHandle

    Create In-Memory DeviceHandle

    Want to create a DeviceHandle implementation which uses an in-memory store for all device reads and writes instead of a real device. The goal is to use this for integration tests to verify the device state before and after some operation.

    good first issue 
    opened by ccostes 0
Owner
Chris Costes
Chris Costes
Library for abstract mathematics written by Rust. It is aiming to replace SageMath.

ankolib Roadmap Mathematical Structures Sets Monoids Groups Semirings Rings Algebras Basic Rings and Fields Integers and Rational Numbers Integer Rati

anko 6 Sep 3, 2022
An open source WCH-Link library/command line tool written in Rust.

wlink - WCH-Link command line tool NOTE: This tool is still in development and not ready for production use. Known Issue: Only support binary firmware

WCH MCU for Rust 22 Mar 7, 2023
Hypercraft - a VMM library written in Rust

hypercraft is a VMM library written in Rust. If you are interested in Design & Implement about this project, please see this disc

ChengXiang Qi 19 May 3, 2023
Simple and customizable procedural noise generation library written in Rust.

libnoise A simple, performant, and customizable procedural noise generation library inspired by libnoise for C++ featuring: Easy coherent noise genera

SpoogieOogie 29 Aug 13, 2023
Indeed, an ORM library, not a framework, written in Rust

Ormlib Indeed, an ORM library, not a framework, written in Rust Features The main idea that I put into my ORM library is a minimum of stupid code and

Evgeny Igumnov 5 Sep 4, 2023
Simple autoclicker written in Rust, to learn the Rust language.

RClicker is an autoclicker written in Rust, written to learn more about the Rust programming language. RClicker was was written by me to learn more ab

null 7 Nov 15, 2022
Rust programs written entirely in Rust

mustang Programs written entirely in Rust Mustang is a system for building programs built entirely in Rust, meaning they do not depend on any part of

Dan Gohman 561 Dec 26, 2022
clone of grep cli written in Rust. From Chapter 12 of the Rust Programming Language book

minigrep is a clone of the grep cli in rust Minigrep will find a query string in a file. To test it out, clone the project and run cargo run body poem

Raunak Singh 1 Dec 14, 2021
The Rust Compiler Collection is a collection of compilers for various languages, written with The Rust Programming Language.

rcc The Rust Compiler Collection is a collection of compilers for various languages, written with The Rust Programming Language. Compilers Language Co

null 2 Jan 17, 2022
Game Boy Emulator written in Rust, as a way to fully grasp the Rust programming language

Flan's Game Boy Emulator Game Boy Emulator written in Rust, as a way to get hands-on with the Rust programming language, and creating a proper project

Flan 3 Dec 31, 2022