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 Taylor··2 min read
Published
Listen to this article0:00 min
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.

This article was produced by Prism’s automated news system from verified source data, official records, and press releases, then run through automated quality and moderation checks before publishing. The system is built and supervised by the people who set the standards it runs under. Read our full AI policy.

Did this article answer your question?

Discussion

More Rust Programming News