PhosphorTEX — Decoder Test Results

Accuracy testing of the PhosphorTEX NAVTEX decoder against real over-the-air recordings of 518 kHz maritime-safety broadcasts. The testing CLI (NavTexDecode) shares every DSP source file with the iOS app via symlinks — same code, same output.

Decoder stack

Real-world SDR captures

Tested against publicly-available WebSDR recordings of live 518 kHz NAVTEX traffic. These are noisy over-the-air captures — no cleanup, no SNR preconditioning.

CaptureDurationAudio centreMessages framedSample content
WebSDR 518 kHz, May 2018 8 min 35 s ~1000 Hz 20 messages Netherlands Coastguard nav warnings (Windfarm Borssele, geotechnical drilling, Riffgat lightbuoys, Helgoland German Bight exercises…)
WebSDR 518 kHz, July 2020 5 min 23 s ~1000 Hz 13 messages NCC-Hamburg nav warnings (German armed forces firing exercises, OWP Kaskasi survey operations…)

Decoded output — WebSDR 518 kHz, May 2018

--- 2026-04-21 | PA19 | NAV WARNING NETHERLANDS COASTGUARD NAVIGATIONAL WARNING NR. 19 212040 UTC MAY WINDFARM BORSSELE GEOPHYSICAL SURVEY BY BIBBY TETHRA 2EGF8 A. 51-41N 003-08E B. 51-41N 002-58E C. 51-49N 003-08E D. 51-49N 002-58E WIDE BERTH REQUESTED ---
--- 2026-04-21 | PA42 | NAV WARNING NETHERLANDS COASTGUARD NAVIGATIONAL WARNING NR. 42 241200 UTC MAY RIFFGAT FOLLOWING LIGHTBUOYS ESTABLISHED MARKING OYSTER SEABED FARM CARDINAL SPAR BUOY WNF-N VQ ... ---

Decoded output — WebSDR 518 kHz, July 2020

--- 2026-04-21 | SA97 | NAV WARNING NCC-HAMBURG 280430 UTC JUL 20 NAV. WARN. NO. 314 GERMAN BIGHT. NORTHWESTERLY OF HELIGOLAND. FIRING EXERCISES OF GERMAN ARMED FORCES. ON 29TH OF JULY FROM 0900 TO 1000 UTC. IN THE CHARTED AREA BOUNDED BY FOLLOWING POSITIONS 54-40N 006-30E 54-40N 007-00E 54-15N 007-00E 54-15N 006-30E CANCEL THIS MESSAGE 291100 UTC JUL 20. ---

Download Test Files

These WAV files are over-the-air WebSDR captures of live 518 kHz NAVTEX traffic. They can be played from any audio source (laptop, second phone) near the iPhone’s microphone to test the app without a shortwave receiver.

FileDescriptionSize
navtex_518khz_5min.wav5 min 23 s — NCC-Hamburg nav warnings; 13 framed messages expected~5 MB
navtex_518khz_8min.wav8 min 35 s — Netherlands Coastguard nav warnings; 20 framed messages expected~8 MB

Testing Instructions

  1. Download either WAV file above (start with the 5-minute one for a quicker test).
  2. Launch PhosphorTEX on an iPhone. Grant microphone permission when asked.
  3. Open the DECODE tab (F1). Leave all defaults (AUTO FREQ on, INVERT off).
  4. Tap START.
  5. Play the WAV on a laptop or second device at conversational volume, 15–30 cm from the iPhone’s microphone.
  6. Within a few seconds the LOCK indicator in the status row (top-right) lights up and MARK / SPACE / SHIFT show frequencies in the ~915 / 1085 Hz range with a 170 Hz shift.
  7. After 10–20 seconds of phasing preamble, text starts appearing. In TAPE view (bottom-left of the DECODE tab) you’ll see lines like ZCZC PA19 NETHERLANDS COASTGUARD NAVIGATIONAL WARNING NR. 19 …
  8. Switch to CARDS to see each framed message as a structured card with station letter, subject badge, timestamp, and body.
  9. LOG tab accumulates the framed messages. Over the full 8-minute WAV you should see ~20 entries.

Scope

The decoder targets both of the common NAVTEX audio tuning conventions:

AFC search band is 800–2500 Hz to span both, and the decoder runs normal and polarity-inverted lanes in parallel so mark-on-upper-tone vs mark-on-lower-tone captures both decode without any manual toggle.