Run ./gold_capture_1h.sh with your Ettus USRP attached. You MAY need to do some tweaks, such as turning off IRQs for the core you are running this on to ensure that you get good quality data. An overrun will put a gap into your data's I/Q file output and makes the whole sample worthless. Read along to see how I got around that.
Center frequency: 852.306250 MHz Sample rate: 4.000 Msps Format: SC16 (signed 16-bit IQ, little-endian) Duration: 1 hour Size: 57,600,000,000 bytes
Hardware:
- Ettus B206-Mini
- USB 3.0
- External antenna (ANT 500)
Software:
- Fedora 44 (Rawhide)
- UHD 4.9.0.1
- irqaffinity=0-6,8-14
- recv_frame_size=8000
- num_recv_frames=256
Capture integrity:
- Zero UHD overflows reported
- SHA256 provided in SHA256SUMS_*.txt
This repository contains a golden reference IQ capture of an active P25 Phase 1 (FDMA) trunked radio system, intended for development, testing, and validation of decoders, channelizers, and recording pipelines (e.g. GNU Radio, osmosdr, trunk-recorder).
The capture was produced with verified zero sample overflows and includes full provenance so others can reproduce the same conditions.
| Item | Value |
|---|---|
| Center Frequency | 852.306250 MHz |
| Sample Rate | 4.000 Msps |
| Duration | 1 hour |
| Format | SC16 (signed 16-bit IQ, interleaved I/Q, little-endian) |
| File Size | 57,600,000,000 bytes |
| Hardware | Ettus B206-Mini (USB 3) |
| UHD Version | 4.9.0.1 |
| OS | Fedora Linux |
| Integrity | Zero UHD overflows |
| Verification | SHA256 checksums provided |
IQ layout:
I0 Q0 I1 Q1 I2 Q2 ...
Long, lossless IQ captures are not limited by throughput, but by latency spikes. A single 20–30 ms stall is enough to cause a UHD overflow and silently corrupt a dataset.
The configuration below eliminates the known causes:
- CPU scheduler jitter
- NVMe / USB interrupt storms
- Power-management latency
- Insufficient USB receive buffering
Kernel boot argument:
irqaffinity=0-6,8-14
This prevents all device interrupts (NVMe, USB, etc.) from running on CPU cores 7 and 15, which are reserved exclusively for IQ capture.
Apply on Fedora:
sudo grubby --update-kernel=ALL --args="irqaffinity=0-6,8-14"
sudo rebootVerify after reboot:
cat /proc/cmdline | tr ' ' '\n' | grep irqaffinityThe capture process is pinned to isolated CPUs 7 and 15 and run with real-time priority:
- CPU affinity: cores 7,15
- Scheduler: SCHED_FIFO
- Priority: 50
This ensures uninterrupted sample consumption.
Set a low-latency tuning profile:
sudo tuned-adm profile latency-performanceForce CPU governor to performance:
sudo dnf install -y kernel-tools
sudo cpupower frequency-set -g performanceThe capture directory was created with copy-on-write disabled to avoid btrfs metadata latency spikes:
mkdir -p ~/iq_capture
chattr +C ~/iq_captureThe default USB receive buffering is insufficient for hour-long captures. The following device arguments were required to tolerate brief host stalls:
recv_frame_size=8000
num_recv_frames=256
These parameters dramatically reduce overflow risk without destabilizing the B200-series USB transport.
The golden sample was produced using uhd_rx_cfile with the following command (wrapped in a monitoring script):
uhd_rx_cfile \
--args "type=b200,recv_frame_size=8000,num_recv_frames=256" \
--antenna TX/RX \
--freq 852.30625e6 \
--samp-rate 4e6 \
--gain 30 \
--output-shorts \
--nsamples 14400000000 \
-v \
p25_ref_852306250_4Msps_1h.sc16This corresponds to exactly:
4,000,000 samples/sec × 3600 sec = 14,400,000,000 samplesDuring capture:
- IRQ activity on capture CPUs was logged per-second
- UHD output was timestamped
- Any overflow immediately aborted the run
Artifacts included with the dataset:
*.sc16- IQ datalogs/*.log- UHD capture logsirq_cpu7_cpu15_deltas.log- per-second IRQ deltasoverflow_events.log- empty (no overflows)SHA256SUMS_*.txt- integrity verification
Verify integrity:
sha256sum -c SHA256SUMS_*.txtExample osmosdr source:
{
"center": 852306250,
"rate": 4000000,
"driver": "osmosdr",
"device": "file=p25_ref_852306250_4Msps_1h.sc16,freq=852306250,rate=4000000,repeat=true,throttle=true"
}The SC16 format is natively supported — no conversion required.
This dataset contains real RF traffic and is intended strictly for technical experimentation and research. No decoding, demodulation, or content interpretation is included. If you reproduce this capture without the system configuration above, you should expect silent corruption.
This capture was produced with:
- Known hardware
- Deterministic configuration
- Verified absence of sample loss Any deviation from the documented configuration invalidates "gold reference" status.
Below is an averaged FFT of the IQ capture, generated from the raw SC16 file (using a Hann window, 262k FFT, 300 averages):
Key observations:
- Stable noise floor across the full 4 MHz bandwidth
- Clearly resolved 12.5 kHz P25 channels
- Dominant control channel with expected spectral shape
- No evidence of clipping, dropouts, or sample starvation

