GhostNet Receiver 0.4.0 is a receive-only Windows listener for the published GhostNet v1.5 schedule. It decodes JS8 in-process, receives audio from public KiwiSDRs or a radio USB-audio input, and keeps a local SQLite journal. It is an independent project and is not affiliated with S2 Underground, GhostNet, or JS8Call.
Regional collection
- Optional three-lane monitoring runs North America, Europe, and Australia/Pacific online receivers concurrently.
- The GUI provides one regional feed per lane plus a combined searchable inbox.
- Receiver and region provenance remain attached to each reception; simultaneous copies are retained because they are useful propagation evidence.
- Every lane performs independent receiver selection, health checks, reconnect backoff, band-coverage checks, rotating logging, and session reporting.
This substantially increases coverage, but does not promise every GhostNet transmission. Public receiver capacity, propagation, interference, schedule changes, and decoder limits can still create gaps.
Reliability and review fixes
- Rebuilt
ghostnet_js8.dllwith the required checksum-validation export. The upstream native JS8 DSP section was not rewritten. - Corrected JS8 decode alignment for capture/network timing offsets through ±3 seconds and recovery after quiet periods.
- Replaced packet-local audio conversion with a stateful rational FIR converter for exact long-run 44.1/48 kHz timing.
- Made retunes and input overflows explicit decoder discontinuities so stale audio cannot cross frequencies.
- Corrected RTTY USB mark/space polarity and fractional 45.45-baud sampling. RTTY remains off by default and marked preview until on-air calibration is available.
- Made reports atomic and session-bounded; only complete tagged conversations count as heard.
- Hear audio now requires an explicit playback device, has volume control, and is stopped on all exit paths. Desktop alerts are silent.
- USB-audio frequency stays unverified until the operator confirms tuning or read-only Hamlib readback succeeds.
- Hardened local update identity/version/hash checks.
- Removed the obsolete UDP/CAT entry points from the release tree.
Validation
- 42 automated tests pass.
- Bundled 95-second recording: 12 JS8 frames at nominal timing; 10 with a simulated +3 second receipt skew.
python app.py,Start.cmd, frozen self-test, 850×600 GUI layout, and installer metadata were checked.- The unsigned installer completed a local per-user install, and the installed executable passed its four-frame self-test.
- A short live concurrent smoke test delivered PCM from North America, Europe, and Australia/Pacific KiwiSDR lanes without a receiver error. It was not a scheduled net and makes no message-copy claim.
- A user has reported live GhostNet reception with an earlier build.
Still unverified here: live SoapySDR hardware and on-air RTTY calibration.
Downloads
GhostNetReceiver-0.4.0-Setup.exe: per-user unsigned installer.GhostNetReceiver-0.4.0-Portable.zip: portable folder build.SHA256SUMS.txt: SHA-256 checksums for both downloads.
The app has no transmit, PTT, CAT write, heartbeat transmit, spotting, VARA/ALE decode, or voice transcription path. SoapySDR is not bundled.