CoolFace
Datasetpublic

TrevTron/rtl-ml-dataset

RTL-ML Dataset v2 Dataset Summary This dataset contains 800 validated RF signal samples captured using an RTL-SDR Blog V4 dongle on an Indiedroid Nova (RK3588S). Designed for training machine learning models to classify common RF signals. Samples: 800 (7 classes) Format: NumPy arrays (.npy files) — each file is a dict with IQ data + metadata Sample Rate: 1.024 MSPS Sample Duration: 0.5 seconds per capture Quality Gates: DC removal, auto-gain, 6 dB minimum SNR… See the full description on the dataset page: https://huggingface.co/datasets/TrevTron/rtl-ml-dataset.

sourceHugging Facemitupdated 6mo agoView on Hugging Face
7likes1.7kdownloads
Dataset Card

RTL-ML Dataset v2

Dataset Summary

This dataset contains 800 validated RF signal samples captured using an RTL-SDR Blog V4 dongle on an Indiedroid Nova (RK3588S). Designed for training machine learning models to classify common RF signals.

Samples: 800 (7 classes) Format: NumPy arrays (.npy files) — each file is a dict with IQ data + metadata Sample Rate: 1.024 MSPS Sample Duration: 0.5 seconds per capture Quality Gates: DC removal, auto-gain, 6 dB minimum SNR, per-class validation

Signal Classes

ClassFrequencyCountDescription
FM_broadcast88.5, 93.3, 98.7, 101.1, 105.7 MHz200Commercial FM radio (5 stations)
NOAA_weather162.4 MHz100Weather radio broadcasts
APRS144.39 MHz100Amateur radio position reporting
pager152.84 MHz100POCSAG pager transmissions
ISM_sensors433.92 MHz100Wireless sensors & remote controls
FRS_GMRS462.5625 MHz100Family/general mobile radio
noise145.0 MHz100Background RF noise baseline

What Changed from v1

  • —7 classes (removed ADS-B — 1090 MHz out of R828D tuner range; removed NOAA APT — decommissioned Aug 2025; added FRS/GMRS)
  • —800 samples (up from 240) with 100+ per class
  • —DC offset removal on every capture
  • —Auto-gain calibration per frequency
  • —6 dB SNR gate — rejects weak/empty captures
  • —Per-class quality validators (bandwidth, burst ratio, packet detection)
  • —Temporal train/test split — first 80% train, last 20% test (no data leakage)
  • —Multi-frequency FM — trained on 5 stations for frequency-invariant classification
  • —Metadata in every file — centerfreq, samplerate, timestamp, label, snr_db, version

Model Performance

  • —Random Forest: 96.9% accuracy (155/160 test samples correct)
  • —Temporal split: No data leakage between train and test
  • —Cross-frequency FM: Generalizes to unseen FM stations

Sample Format

Each .npy file contains a dict:

python
{
    'samples': np.array([...], dtype=complex64),  # IQ data
    'center_freq': 98700000.0,
    'sample_rate': 1024000.0,
    'timestamp': '2026-01-15T14:23:01',
    'label': 'FM_broadcast',
    'duration': 0.5,
    'snr_db': 17.5,
    'version': 'v2'
}

Usage

python
from huggingface_hub import snapshot_download
import numpy as np

# Download entire dataset
dataset_path = snapshot_download(
    repo_id="TrevTron/rtl-ml-dataset",
    repo_type="dataset"
)

# Load a sample
data = np.load(f"{dataset_path}/datasets_validated/FM_broadcast/FM_broadcast_0.npy", allow_pickle=True).item()
print(f"Signal: {data['label']}, SNR: {data['snr_db']:.1f} dB, Freq: {data['center_freq']/1e6:.1f} MHz")

Dataset Structure

rtl-ml-dataset/
└── datasets_validated/
    ├── FM_broadcast/          (200 files from 5 frequencies)
    ├── NOAA_weather/          (100 files)
    ├── APRS/                  (100 files)
    ├── pager/                 (100 files)
    ├── ISM_sensors/           (100 files)
    ├── FRS_GMRS/              (100 files)
    └── noise/                 (100 files)

Hardware

  • —SDR: RTL-SDR Blog V4 ($39.95) — requires [RTL-SDR Blog driver fork](https://github.com/rtlsdrblog/rtl-sdr-blog) for R828D tuner support
  • —Computer: Indiedroid Nova 16GB ($179.95)
  • —Antenna: Telescopic dipole (included with V4)

Citation

bibtex
@misc{rtl-ml-dataset-v2,
  author = {TrevTron},
  title = {RTL-ML Dataset v2: Validated RF Signal Captures},
  year = {2026},
  publisher = {Hugging Face},
  howpublished = {\url{https://huggingface.co/datasets/TrevTron/rtl-ml-dataset}}
}

License

MIT License — Free for commercial and non-commercial use.

Related