GNU Radio standard ways to save raw or processed data streams from an SDR
In GNU Radio you’ve got a few standard ways to save raw or processed data streams from an SDR (like your RTL-SDR or RSPduo) directly from a flowgraph or a Python script. The main blocks are:
1. File Sink (basic, but powerful)
- Block name:
File Sink - What it does: Saves any stream (complex, float, int, byte) to a binary file.
- Use when: You want to capture raw IQ samples or intermediate data to disk.
- Notes:
- The output file has no headers/metadata, just raw interleaved samples.
- Useful for later offline analysis with GNU Radio, Python, or tools like
csdr,inspectrum, etc. - Match the sample type (
complex64,float32, etc.) with your stream.
2. File Meta Sink (adds metadata)
- Block name:
File Meta Sink - What it does: Like
File Sink, but writes a metadata header (JSON) describing sample rate, type, start time, etc. - Use when: You want reproducibility and easier re-loading into GNU Radio or Python without guessing sample format.
- File extension: Often
.cfileor.metaassociated.
3. Wave File Sink
- Block name:
Wav File Sink - What it does: Saves float or short samples as a .wav audio file.
- Use when: You’re down-converting to audio (e.g., demodulated signals, narrowband listening).
- Limit: Only works well for sample rates ≤ 192 kHz.
4. Stream to Vector → File Sink
- Combo block:
Stream to Vector+File Sink - What it does: Groups samples into fixed-size vectors before saving.
- Use when: You want data in matrix-like form (e.g., for FFTs or ML pipelines).
5. Python Snippet (in OOT module or embedded Python block)
- Block name:
Embedded Python Block - What it does: Lets you write custom logic to save/stream data.
- Example: You can push samples into a
.npyfile using NumPy, or send them over a socket for real-time analysis.
💡 Typical setup for IQ capture from RTL-SDR:
[RTL-SDR Source] → [Throttle] → [File Sink (Complex)]
This will save raw interleaved IQ samples (complex float32).
If you want metadata:
[RTL-SDR Source] → [Throttle] → [File Meta Sink]