Skip to content

From signal to speed

The ray tracer gives a received power. Getting from there to a number of megabits per second takes four more steps.

1. The noise floor

Thermal noise in the channel:

N = -174 dBm/Hz + 10*log10(B) + NF

The −174 comes from 10 log10(k T0 × 1000) at T0 = 290 K, the standard reference temperature. NF is the receiver's noise figure, around 7 dB for consumer silicon.

For a 20 MHz channel with a perfect receiver that gives −101 dBm, which is the number every Wi-Fi data sheet quotes.

Every doubling of bandwidth costs exactly 3 dB. This is the trade behind channel width: an 80 MHz channel carries four times the data of a 20 MHz one and starts 6 dB further behind.

2. Interference

Every other transmitter, whether one of your own access points or a neighbour, is weighted by how much of its occupied spectrum lands inside the channel you are listening on, and added to the noise.

The overlap model treats both occupancies as rectangles and normalises by the interferer's own width. It is the standard first-order adjacent-channel model.

This is where the 2.4 GHz channel folklore comes from. Channels 1, 6 and 11 are 20 MHz wide and spaced 25 MHz apart, so they do not overlap at all. Channel 1 and channel 2 overlap by more than 70 percent, which is why choosing channel 2 next to a neighbour on channel 1 is worse than simply sharing channel 1 with them: on the same channel you can hear each other and take turns, on adjacent channels you cannot decode each other but you still corrupt each other's frames.

Signal over noise plus interference gives SINR, and everything after this point depends only on that.

The app uses the receiver sensitivity tables from IEEE Std 802.11-2020 and 802.11ax-2021, the "receiver minimum input sensitivity" figures. Those are what a device must meet to be compliant, measured at 10 percent packet error rate on a 4096-octet frame.

Those figures already contain a reference 5 dB noise figure and a 5 dB implementation margin. Subtracting that reference noise floor recovers a bandwidth-independent required SNR, because sensitivity and noise both scale with bandwidth in exactly the same way.

MCSModulationCodingSensitivity at 20 MHzRequired SNR
0BPSK1/2−82 dBm9.0 dB
1QPSK1/2−79 dBm12.0 dB
2QPSK3/4−77 dBm14.0 dB
316-QAM1/2−74 dBm17.0 dB
416-QAM3/4−70 dBm21.0 dB
564-QAM2/3−66 dBm25.0 dB
664-QAM3/4−65 dBm26.0 dB
764-QAM5/6−64 dBm27.0 dB
8256-QAM3/4−59 dBm32.0 dB
9256-QAM5/6−57 dBm34.0 dB
101024-QAM3/4−54 dBm37.0 dB
111024-QAM5/6−52 dBm39.0 dB

Required SNR is shown at the default chipset margin of 5 dB. These sit a few decibels above what an information-theory table would give, because they come from the standard's compliance requirement rather than from the theoretical limit of each modulation. Real silicon typically beats the mandated minimum by 3 to 6 dB, which is what the chipset margin setting adjusts.

The highest MCS available depends on the generation: 802.11n stops at 7, 802.11ac at 9, and 802.11ax and 802.11be reach 11.

4. The data rate

Not looked up in a table. Computed from the standard's own OFDM parameters, so any combination of bandwidth, streams, modulation and guard interval is covered:

R = Nss * Nsd * Nbpscs * Rcode / Tsym
  • Nss is the number of spatial streams, capped by both ends of the link.
  • Nsd is the number of data subcarriers, set by the OFDM numerology. 802.11n and 802.11ac use a 64-point FFT per 20 MHz with 52 data tones; 802.11ax and 802.11be use a 256-point FFT per 20 MHz with 234.
  • Nbpscs and Rcode come from the modulation and coding.
  • Tsym is the symbol duration including the guard interval: 3.2 microseconds of FFT for 802.11n and 802.11ac, 12.8 for 802.11ax and 802.11be.

This reproduces the published rate tables exactly. 802.11ax at 80 MHz, MCS 11, two spatial streams, 0.8 microsecond guard interval gives 1201 Mb/s, which is what the tables say. That agreement is checked on every commit for a spread of a dozen combinations across all four generations.

5. What you actually get

The PHY rate counts the preamble, the interframe spacing and the acknowledgement as though they were payload. They are not. Actual goodput pays for:

  • the PHY preamble and signalling, once per transmission
  • DIFS, which is SIFS plus two slot times
  • the average backoff, half the minimum contention window
  • SIFS and the block acknowledgement at the end

all of it amortised over one aggregate rather than one frame, which is what aggregation is for. The result typically lands around 60 to 70 percent of the PHY rate, and the fraction improves at higher rates because the fixed overhead is spread over more data.

This is one station on an idle channel

The throughput figure does not model several clients sharing airtime, OFDMA scheduling or multi-user MIMO. Treat it as the ceiling one device can reach with nothing else going on.

Regulatory limits

The app checks the configured EIRP against the applicable limit and says whether it is allowed, whether the band is indoor only, and whether the channel requires radar detection.

DomainBandEIRP limitNotes
ETSI2.4 GHz20 dBmEN 300 328, also 10 dBm/MHz
ETSI5150 to 535023 dBmindoor only, DFS and TPC above 5250
ETSI5470 to 572530 dBmDFS and TPC mandatory
ETSI5925 to 642523 dBmindoor only, low power
FCC2.4 GHz36 dBm47 CFR 15.247
FCC5150 to 525030 dBmindoor only
FCC5250 to 572530 dBmDFS required
FCC5725 to 585036 dBm
FCC5925 to 712530 dBmindoor only, low power

Where a power spectral density limit applies it is checked too, and the app tells you which of the two is actually binding at your channel width. On narrow channels the density limit is often the real constraint, and it is the one people forget.

Released under the GNU General Public License v3.0 or later. Physical constants are cited to their sources, not invented.