Releases

RTLSDR-NEXT rewrites librtlsdr in Rust with Tokio streams and zero allocations

A Rust rewrite of librtlsdr aims to replace the aging C SDR driver with a Tokio-native pipeline, cutting allocations to zero and speeding Pi 5 IQ conversion.

Jamie Taylor2 min read
Published
Listen to this article0:00 min
Share this article:
RTLSDR-NEXT rewrites librtlsdr in Rust with Tokio streams and zero allocations
AI-generated illustration
This article contains affiliate links, marked with a blue dot. We may earn a small commission at no extra cost to you.

RTLSDR-NEXT arrives as a replacement for one of the most widely used pieces of SDR plumbing in the hobbyist stack: librtlsdr, the C driver written around 2013 that still sits underneath OpenWebRX, Gqrx, SDR++, and a long tail of other tools used by millions of people. Matthew Delashaw built the rewrite in Rust for a practical reason, not a language demo, aiming for a Raspberry Pi fallback radio receiver for internet outages and storm-chaser SKYWARN listening.

That framing matters because the project is not just another experimental SDR app. It is a ground-up swap for infrastructure that has been carrying real workloads for years. Delashaw said the old driver’s blocking callback loop, manual buffer management, and pre-async architecture make backpressure hard to reason about and force Rust users into threads, channels, and lifetime juggling just to make the code fit modern async systems. RTLSDR-NEXT turns that model inside out by exposing SDR data as a native Tokio Stream and by pushing the hot path through a zero-allocation DSP pipeline.

Data visualization chart
Data Visualisation

The performance claims are hard to ignore. On a Raspberry Pi 5, Delashaw reported 1.49 GiB/s IQ conversion, around 45 ms frequency switching, and zero allocations in the streaming path. That kind of result points to a rewrite that could change day-to-day practice for people who run compact receive setups, portable monitoring stations, or always-on decoders on low-power hardware. It also lines up with Tokio’s own design language: streams as the async equivalent of iterators, and mpsc as the queue for moving values between async tasks. RTLSDR-NEXT uses that model as its core architecture instead of bolting async onto a callback API.

The timing also fits the hardware shift already underway in the RTL-SDR world. RTL-SDR Blog V4 units use the R828D tuner and RTL2832U chipset, and the product line requires new drivers while staying backwards compatible with V3 and older RTL-SDR hardware. The V4’s 1 PPM TCXO and USB-C connection make it a more modern dongle, and RTLSDR-NEXT gives that hardware a driver stack that matches the device generation.

For a community that still leans on legacy code hidden inside everyday radio tools, this is the significant kind of rewrite: not a shiny side project, but a chance to replace aging C infrastructure with something safer, easier to maintain, and better suited to the async Rust stack already reshaping the rest of the ecosystem.

Know something we missed? Have a correction or additional information?

Submit a Tip

Never miss a story.
Get Rust Programming updates weekly.

The top stories delivered to your inbox.

Free forever · Unsubscribe anytime

Discussion

More Rust Programming News