quikchaos.com

⟨ quikchaos ⟩

currently focused on NOAA Weather, WWV time signals, ACARS aviation messaging, ADS-B aircraft tracking, AIS marine vessel tracking, and NOAA APT satellite imagery via basic RTL-SDR dongles.

79,000+ lines 1,459 tests 7 Rust crates 18 signal modes

Disclaimer: All software on this site is provided for personal, educational, and non-commercial research use only. These are hobbyist projects - not certified, validated, or approved for any safety-critical, emergency communications, or operational aviation purpose. See Terms of Use.

ABOUT

I'm quik - network engineer, video gamer, science junkie and tool builder (dh81 on GitLab). 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 reliable public safety communications (see Other Projects below).

PROJECTS

noaa-wx-rs (Stable)
v0.3.0 · 7,145 lines · 188 tests · MIT

NOAA Weather Radio receiver, SAME/EAS alert decoder, and NOAA APT satellite weather image demodulator for RTL-SDR. Receives NWR broadcasts on 162.4–162.55 MHz (channels WX1–WX7) and APT imagery from NOAA-15/18/19 satellites on 137 MHz.

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 and field validation (originator, event code, FIPS, purge/issue time). 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. APT demodulator: FM discriminator, AM envelope detection at 2400 Hz subcarrier, per-line normalization, sync tone validation.

Available as both a CLI binary (noaa-wx) and a library crate with streaming SameDecoder and AptDemod APIs. Supports gain, PPM correction, and FIPS-based geographic filtering.

wwv-rs (Stable)
v0.3.1 · 7,587 lines · 194 tests · GPL-3.0+

Time signal decoder for RTL-SDR in direct sampling mode (240 kHz). Supports nine international standards:

WWV/WWVHUSA - 2.5/5/10/15/20 MHz (AM + BCD tones)
WWVBUSA - 60 kHz (amplitude-shift keying)
JJYJapan - 40, 60 kHz (same encoding as WWVB)
DCF77Germany - 77.5 kHz (amplitude redux + even parity)
MSFUnited Kingdom - 60 kHz (A/B bit-pair carrier-off)
BPCChina - 68.5 kHz (quaternary PWM, 20s frames)
BPMChina - 2.5/5/10/15 MHz (HF, MSB-first BCD)
RBURussia - 66.667 kHz (FSK: 100/312.5 Hz)
CHUCanada - 3.33/7.85/14.67 MHz (Bell 103 FSK)

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).

rtl-sdr-rs (Vendored)
v0.3.1 · 3,317 lines · 12 tests · MPL-2.0

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.

dh81-sdr-common (New)
v0.3.0 · 2,820 lines · 113 tests · MIT

Shared DSP primitives for the dh81 SDR project family. Provides common signal-processing building blocks used across dh81-sdr-rs, noaa-wx-rs, and wwv-rs.

goertzelsingle-frequency DFT detector - stateful streaming struct + stateless one-shot function
dual_goertzelsimultaneous mark/space frequency pair detector for FSK demodulation
dc_removalsingle-pole IIR highpass filter for DC bias removal after AM envelope detection
fm_discriminatorconjugate-multiply FM demodulator with accumulate-and-dump decimation
tone_detectorGoertzel-based tone detector with energy tracking, streak counting, configurable threshold
signal_leveldBFS signal level meter with accumulate-and-read API
fast_maginteger alpha-max-beta-min magnitude approximation for IQ samples
iir_lowpasssingle-pole IIR lowpass filter with from_cutoff() constructor
decimatoraccumulate-and-dump decimator for sample rate reduction

SIGNAL MODES

Mode Frequency Modulation Project Standard
FM HD Radio87.5–108.0 MHzOFDM + HE-AAC v2nrsc5-rsNRSC-5-D
FM Analog87.5–108.0 MHzWBFM Stereodh81-sdr-rs-
AM Broadcast530–1700 kHzAM Envelopedh81-sdr-rs-
NWR/SAME162.4–162.55 MHzNBFM + AFSKnoaa-wx-rs47 CFR Part 11
ADS-B1090 MHzPPM / Mode Sdh81-sdr-rsICAO Annex 10
AIS161.975/162.025 MHzGMSK 9600 bauddh81-sdr-rsITU-R M.1371
ACARS129–136 MHzAM/MSK 2400 bauddh81-sdr-rsARINC 618
NOAA APT137.1–137.9 MHzWBFM + AM 2400 Hznoaa-wx-rsNOAA POES
RDS57 kHz subcarrierBPSK Manchesterdh81-sdr-rsITU-R BS.412-9
WWV/WWVH2.5–20 MHzAM + BCD toneswwv-rsNIST SP 432
WWVB60 kHzASK/PMwwv-rsIRIG-H
DCF7777.5 kHzASKwwv-rsPTB Germany
JJY40/60 kHzASKwwv-rsNICT Japan
MSF60 kHzASKwwv-rsNPL UK
BPC68.5 kHzASKwwv-rsNTSC China
BPM2.5–15 MHzAM + BCD toneswwv-rsNTSC China (HF)
RBU66.667 kHzMSKwwv-rsVNIIFTRI Russia
CHU3.33/7.85/14.67 MHzBell 103 FSKwwv-rsNRC Canada

STATUS

Project Version Lines Tests License License Rationale Status
nrsc5-rs0.9.021,012297GPL-3.0+Derived from GPL-licensed nrsc5 C projectMature
dh81-sdr-rs0.2.017,808447GPL-3.0+Links GPL nrsc5-rs; multi-mode SDR receiverActive
quiktool0.17.013,163208GPL-3.0+Links GPL libraries (dh81-sdr-rs, wwv-rs)Active
noaa-wx-rs0.3.07,145188MITOriginal work; permissive for safety tooling reuseStable
wwv-rs0.3.17,587194GPL-3.0+Derived from nrsc5 C time signal codeStable
rtl-sdr-rs0.3.13,31712MPL-2.0File-level copyleft; allows linking from any licenseStable
dh81-sdr-common0.3.02,820113MITShared primitives; permissive for cross-project useActive

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.

quiktool help screen showing keyboard shortcuts and feature overview

Menu:

0:Helpkeyboard shortcuts and feature overview
1:Time Sync / WWVNTP clock comparison + WWV/WWVB/JJY/DCF77/MSF/BPC/RBU decode
2:RadioFM/HD + AM/AM-HD combined, RDS, seek, presets, band scan
3:ADS-B / AIS / ACARSaircraft tracking, marine vessels, aviation messaging
4:Satellite OrbitsTLE orbital prediction, NOAA APT weather satellite imagery
5:Earth WeatherWeather Underground PWS + NWR + USGS earthquake alerts
6:Sun WeatherNOAA SWPC: X-ray flux, Kp index, solar storms, GOES chart
7:Moon & Planetsphase, illumination, zodiac, planet positions, ASCII orrery
8:Cycle Convergencecosmic cycle overlay + radio propagation forecast
9:Deadbandpersistent-universe space strategy game (proof-of-concept)

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 (imperial + metric)

Hardware:

- Radio features require an RTL-SDR USB dongle (RTL2832U + R820T/R820T2). ~$30.
- Weather, earthquake, moon/solar, and time sync work without hardware.
Dependency diagram showing all 7 crate relationships: quiktool depends on dh81-sdr-rs, nrsc5-rs, wwv-rs, and optionally deadband-world. dh81-sdr-rs depends on nrsc5-rs, noaa-wx-rs, dh81-sdr-common, and rtl-sdr-rs. wwv-rs depends on rtl-sdr-rs and dh81-sdr-common. noaa-wx-rs depends on dh81-sdr-common and rtl-sdr-rs. nrsc5-rs depends on rtl-sdr-rs (git). rtl-sdr-rs interfaces with an RTL-SDR USB dongle.

ECOSYSTEM

DH81 projects are part of a broader ecosystem spanning three GitLab organizations. QX9 builds decentralized infrastructure on the Veilid application framework - encrypted storage, PBX, media transport, and HIPAA compliance tooling. Deadband is a persistent-universe space strategy game engine designed for decentralized infrastructure.

DH8111 product repos - SDR, TTS, music, astronomy, device backup (this page)
QX911 product repos - VNS, PBX/NG911, transport, media, compliance, benchmarks
Deadband2 product repos - world engine + Godot 4.6 3D client

See the full ecosystem page for details on all QX9 and Deadband projects.