
A Platform for SDR Development
R4W Development Team
(Aida, Joe Mooney, Claude
Code)
December 2025
R4W (Rust for Waveforms) is a platform for developing, testing, and deploying Software Defined Radio waveforms in Rust.
Enable engineers to build secure, high-performance SDR systems with modern tooling.
Replace ad-hoc C/C++ SDR code with maintainable, testable, safe Rust.
| Pain Point | Traditional Approach | R4W Solution |
|---|---|---|
| Memory bugs | Runtime crashes, sanitizers | Compile-time safety |
| Buffer overflows | Code review, fuzzing | Bounds checking |
| Data races | Mutex discipline | Ownership model |
| Dependency hell | Manual tracking | Cargo package manager |
| Testing | Often minimal | 527 tests included |
┌─────────────────────────────────────────────────────┐
│ Applications │
│ (r4w-explorer, r4w CLI, r4w-web) │
├─────────────────────────────────────────────────────┤
│ Waveforms (38+) │ Plugins (.so) │
│ LoRa, PSK, QAM, FSK, OFDM │ Dynamic loading │
│ SINCGARS, HAVEQUICK, P25 │ Hot reload │
├─────────────────────────────────────────────────────┤
│ Core DSP │
│ Chirp, FFT, Filters, FEC, Timing, RT Buffers │
├─────────────────────────────────────────────────────┤
│ Hardware Abstraction │ Waveform Sandbox │
│ USRP, RTL-SDR, Simulator │ 8 isolation levels │
│ Xilinx Zynq, Lattice FPGA │ Containers, VMs │
└─────────────────────────────────────────────────────┘
| Operation | R4W | GNU Radio | Speedup |
|---|---|---|---|
| FFT 1024-pt | 371 MS/s | 50 MS/s | 7.4x |
| FFT 4096-pt | 330 MS/s | 12 MS/s | 27x |
| BPSK roundtrip p99 | 20 µs | ~100 µs | 5x |
Zero-copy lock-free buffers + Rust optimizations
| Metric | Target | Actual |
|---|---|---|
| FFT p99 latency | < 100 µs | 18 µs |
| FHSS hop timing p99 | < 500 µs | 80-118 µs |
| Page faults (RT mode) | 0 | 0 |
| Hot-path allocations | 0 | 0 |
| Hardware | Status | Notes |
|---|---|---|
| USRP N210/B200 | UHD Driver | Full TX/RX/FD |
| RTL-SDR | FFI Bindings | RX only |
| Xilinx Zynq | IP cores + mmap | FFT, FIR, Chirp, NCO, DMA |
| Lattice iCE40/ECP5 | Open toolchain | Yosys + nextpnr |
| Digital Attenuator | Control API | PE43711, Mini-Circuits |
| Simulator | Complete | UDP transport |
pub trait Waveform {
fn modulate(&self, bits: &[bool]) -> Vec<IQSample>;
fn demodulate(&self, samples: &[IQSample]) -> Vec<bool>;
fn constellation_points(&self) -> Vec<IQSample>;
}| Objective | Target | Validation |
|---|---|---|
| LoRa interop | Decode from Semtech | Hardware test |
| BER @ 10dB SNR | < 1e-3 | Automated test |
| Sensitivity | -120 dBm | Attenuator sweep |
| Latency p99 | < 100 µs | Benchmark suite |
| Zero RT allocations | 0 malloc in hot path | Audit tool |
#include <r4w.h>
r4w_waveform_t* wf = r4w_waveform_bpsk(48000.0, 1200.0);
r4w_modulate(wf, bits, len, samples);Start with pure functions, gradually migrate.
New development in Rust, legacy maintained.
cargo doc --openworkshop/ directorycargo benchcargo test