Menu: [Welcome] [FT8 Can Hear a Pin Drop]

FT8 Can Hear a Pin Drop

To understand FT8, I read the FT8 paper, reviewed some of the WSJT-X source, and read some well-written articles online (see references at the bottom of the page). I tried to organize everything as clearly as possible here for my own learning. There are equations but I’ve tried to show all my work. I’m sharing this in the hope it might be useful to other people too. - Matt (KO6IUE)

If you look in Fortran source code for WSJT-X (lib/ft8/ft8_params.f90) you’ll find the following parameters which will help with our calculations.

parameter (KK=91)     !Information bits (77 + CRC14)
parameter (ND=58)     !Data symbols
parameter (NS=21)     !Sync symbols (3 @ Costas 7x7)
parameter (NN=NS+ND)  !Total channel symbols (79)
parameter (NSPS=1920) !Samples per symbol at 12000 S/s

Calculating [Baud rate]

Duration time (TsT_s) is calculated using:

Ts=1fsT_{s} = \frac{1}{f_{s}}

where fsf_{s} is the symbol rate.

fs=RNf_{s} = \frac{R}{N}

where NN are the number of bits per symbol and RR is the gross bit rate (including channel coding overhead).

Here is the Fortran code in WSJT-X related to baud calculation

fs=12000.0  !Sample rate (Hz)
dt=1.0/fs   !Sample interval (s)
tt=NSPS*dt  !Duration of symbols (s)
baud=1.0/tt !Keying rate (baud)

which shows that fs=12000.0f_{s} = 12000.0 and Ts=1.0fsT_{s} = \frac{1.0}{f_{s}}. Note the fortran variable for duration time (TsT_s) is dt.

Running the numbers we find…

Comment Value
fs (sample rate aka symbol rate) See WSJT-X fs param above 12000 Hz
dt (duration of time aka sample interval) Simple inverse of fs 1/12000 secs (1/12 ms)
tt (duration of symbols) The duration (1/6.25=0.16 seconds1/6.25 = 0.16 \text{ seconds}) and tone spacing (6.25 Hz, discussed below) were designed to be orthogonal to minimize spectral overlap to improve detection. 0.16 secssymbol\frac{\text{secs}}{\text{symbol}}
baud rate Simple inverse of tt. 1.0/0.16secssymbol1.0/0.16 \frac{\text{secs}}{\text{symbol}} 6.25symbolssec6.25\frac{\text{symbols}}{\text{sec}}

Continuous-phase Frequency Shift Keying (CPFSK)

FT-8 modulation is 8-tone continuous-phase frequency shift keying (CPFSK) spaced 6.25 Hz apart. Each these tones or channels provide 3 bits of information (FT4 uses 4 tones with 2 bits of information hence the names FT8 and FT4). The total occupied bandwidth of FT8 is 8×6.25 Hz=50 Hz8 \times 6.25\text{ Hz} = 50\text{ Hz}.

When using WSJT-X you choose which 50 Hz transmit frequency you want by typing into the Tx field or clicking at the top of on the spectrum window. Ideally, each person transmits on a unique, non-overlapping 50 Hz slice of the overall 3000 Hz USB bandwidth (clicking Hold Tx Freq in wsjtx helps).

When transmitting FT8, you might notice your signal subtly “wiggle” about every 160 milliseconds or so during frequency shift keying. Table 3 in the FT8 paper shows the bits associated with each channel symbol. I flipped the table on its side to match what you’ll see on your waterfall inside the 50 Hz slice of the FT8 spectrum you transmit on. For example, if the frequency jumps left, you might be transmitting a 000 or 001 and if it jumps right you might be transmitting a 101 or 111. If it’s in the middle, maybe a 010 or 110.

Channel Width (Hz) 6.25  6.25  6.25  6.25  6.25  6.25  6.25  6.25 = 50 Hz total
    Channel Symbol 0     1     2     3     4     5     6     7
          FT8 bits 000   001   011   010   110   100   101   111
          FT4 bits 00    01    11    10

To calculate the transmission length in seconds, we do the following calculation:

Comment Value
Data Symbols FT8 is [LDPC (174,91) code] with 77 information bits, a 14-bit CRC, and 83 parity bits. 77+14+83=174 bits77 + 14 + 83 = 174\text{ bits}. One symbol = Three bits (see Table 3 above). 58 symbols
Sync Symbols Costas 7x7 arrays at the beginning, middle, and end of each transmission (see this [TED Talk] for an interesting discussion of Costas arrays). These sync tones are denoted SS and have the sequence [3,1,4,0,6,5,2][3,1,4,0,6,5,2]. Total number of symbols is 7×3=217 \times 3 = 21 21 symbols
Total Channel symbols (NN) Data + Sync Symbols. A completed set of the 79 transmission symbols would look like bn={S,MA,S,MB,S}b_{n} = \{S, M_{A}, S, M_{B}, S\} with MA={a0,a1,...,a28}M_{A} = \{a_{0}, a_{1},...,a_{28}\} and MB={a29,a30,...,a57}M_{B} = \{a_{29}, a_{30}, ..., a_{57}\} 79 symbols
Number of Samples Per Symbol (NSPS) 12000samplessecond×0.16 second symbol12000 \frac{\text{samples}}{\text{second}} \times \frac{0.16\text{ second}}{\text{ symbol}} 1920samplessymbol1920 \frac{\text{samples}}{\text{symbol}}
Transmission length (seconds) 79 symbols×0.16 secondssymbol79\text{ symbols} \times \frac{0.16\text{ seconds}}{\text{symbol}} 12.64 seconds

This means the FT8 transmission takes 12.64 seconds. FT8 transmission intervals are 15 seconds and occur at 00, 15, 30, and 45 seconds each minute. This means WSJT-X has 1512.64=2.3615 - 12.64 = 2.36 seconds to decode and respond to transmissions. You can see this 2.36 second gap when looking at the FT8 waterfall. This highlights why synchronizing your clock is so important to effective digital communications. The whole FT8 world relies on accurate clocks to coordinate transmitting and receiving.

Signal to Noise Ratio (SNR)

Bandwidth and SNR are proportional. Noise power is proportional to bandwidth (noise voltage is proportional to the square root of bandwidth).

For example, imagine you have a filter setup for SSB 2400 Hz with a noise level of S7. While listening, you hear a CW signal at S9. Your SNRdB\text{SNR}_{dB} is therefore equal to S9S7=2 S-unitsS9 - S7 = 2\text{ S-units} or around 12 dB. To hear the CW signal better, you then switch to a 500 Hz filter and find your noise level drops by 6.8 dB (10×log10(2400 Hz500 Hz)=6.8 dB10 \times \log_{10}(\frac{2400\text{ Hz}}{500\text{ Hz}}) = 6.8\text{ dB}) while your signal level remains the same assuming your filter includes the CW signal. Adding the filter caused the SNRdB\text{SNR}_{dB} to jump from 12 dB to 18.8 dB (12+6.8=18.812 + 6.8 = 18.8).

The FT8 paper reports supporting data transmission at an SNRdB 2500 Hz\text{SNR}_{\text{dB 2500 Hz}} of around -21 dB (which varies of course on propagation conditions). Does this mean FT8 can process a signal that is below the noise floor? Of course not. As a matter of convention, a standardized bandwidth of 2500 Hz is used to compare different modes e.g. SSB, CW, RTTY, FT4, FT8, etc. even though they each occupy different bandwidths. FT8 has a bandwidth of 6.25 Hz. If we apply the same calculation as the example above and translate to a 6.25 Hz bandwidth, we find a jump of 10×log10(2500 Hz6.25 Hz)26 dB10 \times \log_{10}(\frac{2500\text{ Hz}}{6.25\text{ Hz}}) \approx{} 26\text{ dB}.

Comparing the SNRdB 2500 Hz\text{SNR}_{\text{dB 2500 Hz}} reading you see in WSJT-X to SNRdB 6.25 Hz\text{SNR}_{\text{dB 6.25 Hz}}
SNRdB 2500 Hz{\text{SNR}}_{\text{dB 2500 Hz}} SNRdB 6.25 Hz{\text{SNR}}_{\text{dB 6.25 Hz}} Sound at this dB level
-24 2 Near human hearing threshold
-18 8 A pin drop
-12 14 Sound of a person breathing
-6 20 Rustling leaves
0 26 A whisper
6 32 Soft music
12 38 A babbling brook
18 44 Light rainfall
24 50 Moderate rainfall

So when you’re making an FT8 QSO and your FT8 partner sends a signal report of -18 dB to you it means they heard your FT8 signal 8 dB above their noise floor. I’ve received signal reports of -24 dB a few times which is impressive and means the remote WSJT-X was able to process my signal at just 2 dB above noise. This is around the just-noticeable difference (JND) of human hearing but FT8 with source encoding is able to process about 5 words per minute at that dB level.

References

  1. [The FT4 and FT8 Communication Protocols]
  2. [Signal/noise ratio of digital amateur modes]
  3. [WSJT-X User Guide]
  4. [FT8: Frequencies, Decibels, and Message Meanings]
  5. [TED Talk: The beautiful math behind the world’s ugliest music]
  6. [FT8 Modulation and Decoding - A Dive into SNR interpretation N6MW 12/20/20]
  7. [Signal to Noise Ratio, definition and application to Radio Communications]
  8. [Amateur Radio Digital Communication Mode FT8]
  9. [Auditory intensity discrimination as a function of level-rove and tone duration in normal-hearing and impaired subjects: the “mid-level hump” revisited]
  10. [Wikipedia: FT8]

Last updated: 2025-12-16 UTC
Created with: [Pandoc] and [Terminal CSS]