PhosphorRTTY — Decoder Test Results

Independent accuracy testing of the PhosphorRTTY RTTY decoder using the CLI test harness (RTTYDecode). The CLI uses identical DSP code to the iOS app via symlinks — same source files, same binary logic.

Methodology

Decoder Settings (defaults unless overridden)

Test Files

File Source Type Duration Format Shift Baud
RTTY_Test_850.wav W6IWI Synthetic QBF + RYRY 4m 14s 44.1 kHz, 16-bit, stereo 850 Hz 45.45*
websdr_recording_2024-04-15T23_12_30Z_14089.1kHz.wav W6IWI OTA 20m (14.089 MHz) 9m 26s 8 kHz, 16-bit, mono 170 Hz 45.45
websdr_recording_2024-04-16T00_56_46Z_14089.1kHz.wav W6IWI OTA 20m (14.089 MHz) 9m 25s 8 kHz, 16-bit, mono 850 Hz 45.45
websdr_recording_2022-06-14T23_08_37Z_14086.0kHz.wav W6IWI OTA 20m afternoon 38m 46s 8 kHz, 16-bit, mono 170 Hz 45.45
websdr_recording_2022-03-15T05_45_16Z_7086.0kHz.wav W6IWI OTA 40m night (deep fading) 26m 08s 8 kHz, 16-bit, mono 170 Hz 45.45
random850.wav W6IWI Synthetic random data 2m 00s 44.1 kHz, 16-bit, mono 850 Hz 45.45

* W6IWI labels this file as 60 Bd, but auto-baud detection and manual testing confirm it is 45.45 Bd. Fixed tuning at 60 Bd produces ~975 errors; at 45.45 Bd it produces 0.

Results

File AUTO Errors AUTO Rate Fixed Errors Fixed Rate Fixed Parameters
RTTY_Test_850.wav 6 / 1,438 0.4% 0 / 1,438 0.0% --mark 1578 --shift 850 --baud 45
websdr_2024...170Hz 182 / 3,264 5.6% 136 / 3,260 4.2% --mark 2125 --shift 170 --baud 45
websdr_2024...850Hz 227 / 3,476 6.5% 12 / 2,993 0.4% --mark 1578 --shift 850 --baud 45
websdr_2022...14086kHz 610 / 13,929 4.4% 93 / 14,067 0.7% --mark 2125 --shift 170 --baud 45
websdr_2022...7086kHz 4,133 / 13,269 31.1% 1,605 / 9,401 17.1% --mark 2047 --shift 170 --baud 45
random850.wav 316 / 597 52.9% 315 / 597 52.8% --mark 1578 --shift 850 --baud 45

Decoded Output Samples

RTTY_Test_850.wav — Fixed Tuning (0 errors)

RTTY TEST THE QUICK BROWN FOX JUMPED OVER THE LAZY DOGS BACK 1234567890 TIMES THE QUICK BROWN FOX JUMPED OVER THE LAZY DOGS BACK 1234567890 TIMES THE QUICK BROWN FOX JUMPED OVER THE LAZY DOGS BACK 1234567890 TIMES ... RYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRY RYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRY

websdr_2022...14086kHz — Fixed Tuning, 20m OTA (0.7% errors)

00 THE QUICK BROWN FOX JUMPED OVER THE LAZY DOGS BACK. TEST DE W6IWI 01 THE QUICK BROWN FOX JUMPED OVER THE LAZY DOGS BACK. TEST DE W6IWI 02 THE QUICK BROWN FOX JUMPED OVER THE LAZY DOGS BACK. TEST DE W6IWI 03 THE QUICK BROWN FOX JUMPED OVER THE LAZY DOGS BACK. TEST DE W6IWI ... 12 THE QUICK BROWN FOX JUMPED OVER THE LAZY DOGS BACK. TEST DE W6IWI 13 THE QUICK BROWN FOX JUMPED OVER THE LAZY DOGS BACK. TEST DE W6IWI

websdr_2024...170Hz — AUTO mode, OTA (5.6% errors)

TEST DE W6IWI RYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRY TEST DE W6IWI RYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRY TEST DE W6IWI RYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRY

Notes on Specific Files

random850.wav — Known Broken Test File

The ~53% error rate is not a decoder fault. The W6IWI signal generator encodes stop bits as space (0) instead of mark (1) for approximately 53% of frames. The data bits themselves are correct — verified using --lenient mode which bypasses the stop-bit check. This affects random170.wav from the same generator identically.

websdr_2022...7086kHz — 40m Night with Deep Fading

The worst-performing file at 17–31% errors. This is a nighttime 40-metre recording with severe multipath fading typical of skip-zone propagation. The signal periodically drops below the noise floor entirely. In AUTO mode, each fade triggers AFC LOST re-acquisition (131 events in 26 minutes), burning several frames per cycle. Fixed tuning halves the error rate by avoiding re-acquisition overhead, but the remaining 17% represents genuine signal corruption where even a perfect decoder would fail.

RTTY_Test_850.wav — Mislabelled Baud Rate

W6IWI's website labels this file as 60 Bd. Testing confirms it is 45.45 Bd. At 60 Bd fixed tuning: 975/1,638 errors (59.5%). At 45.45 Bd fixed tuning: 0 errors. The auto-baud detector correctly identified 45.45 Bd without intervention.

AFC Impact

The difference between AUTO and fixed tuning quantifies the cost of AFC re-acquisition:

FileAFC LOST EventsAUTO RateFixed RateAFC Overhead
850Hz QBF270.4%0.0%+0.4%
2024 OTA 170Hz255.6%4.2%+1.4%
2024 OTA 850Hz656.5%0.4%+6.1%
20m OTA afternoon1624.4%0.7%+3.7%
40m OTA night13131.1%17.1%+14.0%

Each AFC LOST event costs approximately 3 frames during re-acquisition. On noisy signals, AFC re-acquisition is the dominant source of errors rather than bit-level decoding failures.

Summary

The PhosphorRTTY decoder demonstrates strong performance across a range of real-world and synthetic RTTY signals: