🔍 FT8 Sanity Tester

This is a known-good test case for verifying FT8 decoding pipelines. Below you’ll see:

📈 Spectrogram

FT8 Spectrogram

🔊 Audio Sample

The sound is the actual RF baseband of an FT8 capture at 12000 Hz. You’ll hear a dense cluster of narrow signals — each 6.25 Hz apart — typical of a busy 20m or 10m band.

📄 Decoded Messages

000000 -6 1.8 569 ~ SP4TXI G3WAG +13 000000 12 0.9 708 ~ CQ IK4LZH JN54 000000 -10 1.0 793 ~ JA1FWS F8BBL 73 000000 9 0.8 890 ~ CQ IQ5PJ JN53 000000 -1 0.8 992 ~ YC6RMT IK3JLT JN65 000000 3 0.9 1123 ~ CQ HB9CUZ JN47 000000 -3 0.9 1265 ~ DJ1DM SV2BRA RR73 000000 10 0.6 1444 ~ <...> YO9IAB KN25 000000 -8 0.6 1508 ~ <...> IZ7NLM -16 000000 -2 -0.1 1560 ~ 7Z1AL DF2FE JO51 000000 -4 0.9 1826 ~ R4WZ DJ4TM JN47 000000 -4 1.0 1925 ~ CQ DH1NAS JO50 000000 -19 0.9 1997 ~ R4WZ PA3GAE JO21 000000 -3 0.9 2326 ~ CQ R8AU MO05 000000 17 1.7 2388 ~ CQ E75C JN93 000000 -3 0.8 579 ~ <...> OK6LZ JN99 000000 7 0.8 664 ~ <...> US5IQI R-06 000000 -4 0.9 888 ~ ZL2OK DL1KDA JO30 000000 -2 0.9 947 ~ <...> E77VM R-11 000000 -5 0.9 1158 ~ CQ HA1BF JN86 000000 -17 1.6 1960 ~ JO1COV PD0MNO JO22 000000 -24 0.7 2141 ~ CQ PY5JO GG54 000000 1 -1.1 2378 ~ ES1KK SP9LKP -13 000000 -6 0.7 955 ~ CQ IU8DMZ JN70

👉 Each decoded FT8 message includes five key columns: the timestamp in seconnds (000000), the signal-to-noise ratio in dB (-6), e time offset from the expected interval in seconds (0.7), the audio frequency in Hz (955), and the decoded FT8 message itself (CQ IU8DMZ JN70).

👉 NOTE: 5 kilo pomeranian sisters bark loudly at 1 khz tones, but permit 500 hz base tones, calmly).

🛠️ testONE.sh

#!/bin/bash

# -------- CONFIG --------
TEST_FILE="test_31.wav"
FT8LIB_BIN="$HOME/FT8/ft8_lib/decode_ft8"
LOGFILE="test_31_decode.log"
SPECTROGRAM="test_31_spectrum.png"

# -------- CHECK --------
if [ ! -f "$TEST_FILE" ]; then
    echo "❌ File not found: $TEST_FILE"
    exit 1
fi

echo "🔍 Analyzing $TEST_FILE..."
echo "Creating spectrogram: $SPECTROGRAM"

# -------- GENERATE SPECTROGRAM --------
sox "$TEST_FILE" -n rate 12000 spectrogram -x 800 -y 256 -r -o "$SPECTROGRAM"

# -------- DECODE --------
echo "Running ft8_lib decoder on $TEST_FILE..."
DECODED=$("$FT8LIB_BIN" "$TEST_FILE" 2>/dev/null | grep -E '^\s*[0-9]{6}')

if [ -n "$DECODED" ]; then
    echo "✅ FT8 decode(s) found:"
    echo "$DECODED"
    echo "$DECODED" > "$LOGFILE"
else
    echo "❌ No decodes detected."
    echo "No decodes for $TEST_FILE" > "$LOGFILE"
fi

echo "📄 Results saved to: $LOGFILE"
echo "🖼️  Spectrum saved to: $SPECTROGRAM"
  

Crafted with care by HAL3 and Bradshaw K1TE – Buzzards Bay, MA, FN41, July 2025



🚨 TBD, add in user wav file upload and analysis. we will do this SOMEDAY, on request 🚨