⟨ project overview ⟩
Currently focused on NOAA Weather, WWV time signals,
and ADS-B aircraft tracking via basic RTL-SDR dongles.
ABOUT
I'm quik - network engineer, video gamer, science junkie and tool builder. I've been around the internet since the late 90s under the handle quikchaos (previously QuiK_ChaoS), mostly lurking in gaming communities, Gentoo forums, photography, and graphic design before shifting back into networking, infrastructure, and system programming.
These days I am learning to develop open-source tools - currently in Rust, but not married to any one language. The SDR projects below are the main focus right now; secure voice network engineering and cybersecurity tooling are next. As of Feb 9th 2026, this work is AI-assisted via Claude Opus as a pair-programming partner - from architecture through implementation and testing (vast disclaimers and thorough changelogs).
I also contribute to QX9, a research group exploring decentralized systems and applied signal intelligence geared toward robust public safety communications (see Other Projects below).
PROJECTS
Rust implementation of NRSC-5 HD Radio decoding. A port of theori-io/nrsc5 from C to Rust. Multi-mode SDR receiver with six operating modes: HD Radio, analog FM (stereo + RDS), analog AM, AM HD, NOAA Weather Radio, and ADS-B 1090 MHz aircraft tracking.
Full OFDM demodulation pipeline: acquisition, synchronization, Viterbi FEC, Reed-Solomon coding, and frame assembly. Pure Rust HDC audio decoder (HE-AAC v2: AAC-LC + SBR + Parametric Stereo) with no faad2 or external C dependencies. Hybrid mode blends HD and FM audio using a time-aligned 7-second delay buffer with cross-correlation for seamless fallback. RDS decoding extracts PI, PTY, station name, RadioText, and clock/time from the 57 kHz subcarrier. Supports RTL-SDR hardware, RTL-TCP remote servers, IQ file replay, bias tee, direct sampling, and FFT-based auto gain scan.
Link to project: gitlab.com/dh81/nrsc5-rs
TUI dashboard for radio, weather, astronomy, and encrypted messaging - built with ratatui + crossterm. Currently Windows-only; Linux/macOS planned. Integrates nrsc5-rs and wwv-rs as library dependencies with cpal for real-time audio output. All runtime dependencies are Rust crates - no external binaries required. This is a personal science project and subject to change at the author's whim.
Left sidebar (always visible): local time (PST/PDT) + UTC, DST countdown, moon phase + illumination, planets above/below horizon, zodiac transitions, upcoming holidays (US, CA, AU, GB), radio station/signal/now-playing, weather stats in dual units (imperial + metric).
Radio controls: frequency tuning, seek, mode cycling (FM > Hybrid > HD, AM > AM HD), HD program selection (HD1-HD8), volume, station presets, band scan, WAV recording. Background network polling: Weather Underground (60s), NTP (60s), NOAA SWPC solar (5m), planet positions (5m), horoscope (6h). Optional config file for Weather Underground API key and station ID.
Link to project: gitlab.com/dh81/quiktool
NOAA Weather Radio receiver and SAME/EAS alert decoder for RTL-SDR. Receives NWR broadcasts on 162.4–162.55 MHz (channels WX1–WX7).
AFSK demodulation at 520.83 baud (mark 2083.3 Hz, space 1562.5 Hz). Full SAME protocol decoding with 3-burst majority voting error correction. 1050 Hz NWR and 853+960 Hz EAS dual-tone attention signal detection. 66 event codes (warnings, watches, statements, emergencies, tests). FIPS county database with state/county name lookup and location filtering. Alert severity classification (Emergency > Warning > Watch > Statement > Test), duplicate message suppression (~11s window per SAME spec), purge time and issue time parsing.
Available as both a CLI binary (noaa-wx) and a library crate
with a streaming SameDecoder API. Supports gain, PPM correction,
and FIPS-based geographic filtering.
Link to project: gitlab.com/dh81/noaa-wx-rs
Time signal decoder for RTL-SDR in direct sampling mode (240 kHz). Supports eight international standards:
HF path: AM demod → 48 kHz audio → Goertzel 1000/100 Hz → BCD decoder.
LF path: envelope magnitude → 250x decimate → baseline EMA → drop detection.
Auto mode detection from tuned frequency (with -s override).
Signal quality monitoring (dBFS, noise floor, tone SNR).
JSON output mode for machine-readable event streams.
Channel-based library API (command/event pattern).
Link to project: gitlab.com/dh81/wwv-rs
RTL-SDR library written in Rust - a port of the Osmocom rtl-sdr library with RTL-SDR Blog modifications. Vendored fork used as a path dependency across all dh81 SDR projects.
Supports Rafael Micro R820T (V3 dongles, 24–1766 MHz) and R828D (Blog V4 - automatic HF/VHF/UHF input switching, 28.8 MHz upconverter, notch filter control). Async bulk USB transfers, gain control, frequency tuning, direct sampling, bias tee, EEPROM read/write. Multiple device opening methods: by index, by serial number, or by file descriptor (Android). Device enumeration and listing. Includes FM receiver example with demodulation.
Link to project: gitlab.com/dh81/rtl-sdr-rs
Shared DSP primitives for the dh81 SDR project family. Provides common signal-processing building blocks used across noaa-wx-rs and wwv-rs.
Link to project: gitlab.com/dh81/dh81-sdr-common
ARCHITECTURE
┌──────────────────────┐
│ quiktool │
│ v0.14.0 (TUI) │
└──┬────────┬───────┬──┘
│ │ │
┌──────────────────┘ │ └──────────────────────┐
│ │ optional│
▼ ▼ ▼
┌─────────────────────┐ ┌─────────────────────┐ ┌─────────────────────┐
│ nrsc5-rs │ │ wwv-rs │ │ veilid-core │
│ v0.9.0 (HD Radio) │ │ v0.3.0 (Time Sig) │ │ (P2P network) │
└──┬──────────────┬───┘ └──┬──────────────┬───┘ └─────────────────────┘
│ │ │ │
│ └──────────┼──────────┐ │
▼ │ ▼ ▼
┌─────────────────────┐ │ ┌─────────────────────┐
│ noaa-wx-rs │ │ │ rtl-sdr-rs │
│ v0.2.0 (SAME/EAS) │ │ │ v0.3.1 │
└──────────┬──────────┘ │ └──────────┬──────────┘
│ │ │
▼ ▼ ▼
┌─────────────────────────────┐ ┌┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┐
│ dh81-sdr-common │ ┆ RTL-SDR USB Dongle ┆
│ (shared DSP) │ └┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┘
└─────────────────────────────┘
SIGNAL MODES
| Mode | Frequency | Modulation | Project | Standard |
|---|---|---|---|---|
| FM HD Radio | 87.5–108.0 MHz | OFDM + HE-AAC v2 | nrsc5-rs | NRSC-5-D |
| FM Analog | 87.5–108.0 MHz | WBFM Stereo | nrsc5-rs | - |
| AM Broadcast | 530–1700 kHz | AM Envelope | nrsc5-rs | - |
| NWR/SAME | 162.4–162.55 MHz | NBFM + AFSK | noaa-wx-rs | 47 CFR Part 11 |
| ADS-B | 1090 MHz | PPM / Mode S | nrsc5-rs | ICAO Annex 10 |
| RDS | 57 kHz subcarrier | BPSK Manchester | nrsc5-rs | ITU-R BS.412-9 |
| WWV/WWVH | 2.5–25 MHz | AM + BCD tones | wwv-rs | NIST SP 432 |
| WWVB | 60 kHz | ASK/PM | wwv-rs | IRIG-H |
| DCF77 | 77.5 kHz | ASK | wwv-rs | PTB Germany |
| JJY | 40/60 kHz | ASK | wwv-rs | NICT Japan |
| MSF | 60 kHz | ASK | wwv-rs | NPL UK |
| BPC | 68.5 kHz | ASK | wwv-rs | NTSC China |
| RBU | 66.667 kHz | MSK | wwv-rs | VNIIFTRI Russia |
STATUS
| Project | Version | Lines | Tests | License | License Rationale | Status |
|---|---|---|---|---|---|---|
| nrsc5-rs | 0.9.0 | 31,899 | 462 | GPL-3.0+ | Derived from GPL-licensed nrsc5 C project | Mature |
| quiktool | 0.14.0 | 8,874 | 160 | GPL-3.0+ | Links GPL libraries (nrsc5-rs, wwv-rs) | Active |
| noaa-wx-rs | 0.2.0 | 6,178 | 128 | MIT | Original work; permissive for safety tooling reuse | Stable |
| wwv-rs | 0.3.0 | 5,524 | 81 | GPL-3.0+ | Derived from nrsc5 C time signal code | Stable |
| rtl-sdr-rs | 0.3.1 | 3,253 | 12 | MPL-2.0 | File-level copyleft; allows linking from any license | Stable |
| dh81-sdr-common | 0.1.0 | 740 | 22 | MIT | Shared primitives; permissive for cross-project use | New |
QUIKTOOL TUI
The temporary flagship - ties all the radio libraries into one keyboard-driven terminal dashboard. Built with ratatui + crossterm. Currently untested outside of Windows, but is 95% cross-compatible code. Linux/macOS should be workable with minimal effort. See project card above for version info and GitLab link.
Menu:
Sidebar (always visible):
Hardware:
- Weather, earthquake, moon/solar, and time sync work without hardware.
OTHER PROJECTS
The QX9 Network Analysis Toolkit - tools and experiments for implementing Veilid into long-term critical communication platforms. QX9 is an independent cross-functional engineering group bringing forward fully encrypted platform designs for critical communications such as public safety radio dispatch (P25/LMR) and NG911 (NENA i3).
Link to project: gitlab.com/qx9/qx-toolkit