So what drives WiFi speed?
But before we answer that question, let me ask, how do you measure your WiFi speed?
Most people probably think of Speedtest.net or Fast.com. A more advanced user may opt for IPERF, but those will get you Throughput, which is the “useful” data after adjusting for overheads and losses. Another unit of speed measurement is Data Rate. It’s the actual bit rate that can be calculated, so any variables that influence data rate essentially determine the WiFi performance.
There are 5 factors that affect data rate, so if you are not happy with your current speed, you can tweak these to get a faster connection.
Factors that Affect Data Rate
- Spatial Streams
- Channel Width
- Guard Interval
Modulation, in the simplest term, is a technique used to encode RF into digital signal. There are different types of WiFi modulations from the most basic BPSK that encodes 1 bit of data to the 10-bit WiFi 6’s 1024-QAM. Higher the bit-rate, the more data it transmits per wave cycle. But to achieve a higher modulation, you need a good Signal-to-Noise Ratio (SNR), which we will cover later in this post.
Spatial streams is the number of independent data streams that can be transmitted simultaneously. An analogy is a 2-lane road can accommodate more cars compared to a single lane road. Similarly, more spatial streams allow for more data transmitted. If you’d like to find out more about Spatial Streams, please have a look at this blog MIMO and Spatial Streams.
Coding or Code Rate is the ratio of data per error correction for example, using Coding 2/3 (66.67%) transmits lesser data compared to Coding 3/4 (75%).
WiFi uses 20MHz, 40MHz, 80MHz, and 160MHz channel width. And again, wider the channel, the more data it accommodates.
Although a 40MHz is twice as wide as 20MHz, the speed is more than twice as fast. OFDM (Orthogonal Frequency Division Multiplexing) technologies like 802.11n or 802.11ac splits a 20MHz into 64 Subcarriers at 312.5KHz each but with only 52 Data Subcarriers. After bonding with another 20MHz channel, however, it produces a 40MHz channel with 108 Data Subcarriers.
Guard Interval (GI) is the time gap between transmission used to address Inter-Symbol Interference (ISI), which is commonly caused by multipath interference. This happens when subsequent transmissions interfere with previous ones. Using GI adds time buffer between transmissions and makes it more likely that the previous data is fully processed before the next transmission is received.
OFDM uses two GIs–either standard 0.8µs or Short Guard Interval (SGI) 0.4µs. Lower the delay, the more data can be processed.
Now we have all the variables, let’s plug them in to the formula below:
Refer to the table below to formulate your equation. Notice there is a OFDM Symbol Duration (TDFT), which is a constant.
Let’s have a look at a real example.
I use a dual-band (802.11n/ac) 3×3:3 AP at home. I setup my home WiFi with 2 SSIDs. I use a 20MHz and 80MHz channel on 2.4GHz and 5GHz respectively. Both bands were on SGI.
What is the maximum data rate if my laptop supports 2 spatial streams?
Referring to the table above, my channel width (NSD) is 80MHz, so that’s 234 Subcarriers. The highest modulation (NBPSCS) for 802.11ac is 256-QAM or 8 bits. The highest coding (R) is 5/6 (0.833). My laptop supports 2 spatial streams (Nss), so that makes up the numerator. For the denominator, it’s just simply the sum of OFDM duration (TDFT) and GI (TGI), and we get:
Pretty straight forward right? Again, this is data rate not throughput, so if I were to run a speed test against iPerf, I’d expect about 50% of the data rate or 400MBps to 500Mbps.
Let’s have a look at 2.4GHz. This is 802.11n (HT) with 20MHz. After plugging all the numbers in, we get:
Now, we can build a table using all the combinations of each variable and we get Modulation Coding Scheme Index or MCS Index.
There are 8 level of indexes for 802.11n (HT) and 10 for 802.11ac (VHT) per spatial stream. The higher the index, the higher data rate.
802.11n uses a running index that starts from 0 to 31—the max data rate is 600Mbps on 4 spatial streams.
802.11ac changed how it indexes. Instead of running indexes, it pegs MCS to a single spatial stream–from 0 to 9. Because data rate is a product of individual MCS and the number of data streams, to calculate data rate, just multiply the corresponding single stream data rate by the number of spatial streams. For example, MCS 4 at 40MHz is 90Mbps, so on a 3×3:3 device, your data rate is 90Mbps x 3 = 270Mbps.
To find out your real-time data rate, if you are on Windows, you can run the following command in the Command Prompt:
netsh wlan show interface
For MacOS is even easier. Just hold “Option” key and click on WiFi symbol, and you get all sorts of data including RSSI, Noise, and even MCS Index.
How Difficult is it to Get MCS 9?
Getting the highest MCS may not be difficult, but maintaining it is virtually impossible. The key determining factor is the Signal-to-Noise Ratio (SNR). You have to be very close to the AP to maximize RSSI, the numerator of SNR.
According to the table above, you need the minimum SNR of 31dB on a 20MHz channel to get MCS 9. That’s RSSI of approximately -60dBm or better. Keep in mind that if you use a wider channel, noise is amplified, so if you were to use a 80MHz channel width, you need SNR of 34 dB to achieve the same.
Once the distance between AP and client increases, RSSI/SNR decreases, which drives down data rate. Your device will still be connected, but at a lower speed. This is called dynamic rate selection.
This explains why hotels that traditionally installed APs in the corridor to serve in-room guests experienced slow WiFi speed. Due to distance and wall attenuation between AP and clients, in-room devices couldn’t maintain a good SNR, hence communicating at a low data rate. Today’s most hotel chains mandate installing AP in guest rooms instead of corridor. The goal is to maximize SNR by lessening the distance between AP and client devices, which effectively helps maximize the data rate.
WiFi 6 MCS Index
WiFi 6 uses a different MCS Index because of OFDMA. It uses Resource Unit (RU) instead of Subcarriers and each RU supports 3 different GIs. The new 1024-QAM modulation adds 2 more indexes, making it 12 levels per spatial stream. With more variables, OFDMA amasses 1,728 index combinations.
Note that WiFi 6 is also backward compatible with OFDM, so if you disable OFDMA, refer to the table below instead.
So there you have it. Now you know all the variables that affect the data rate. To improve WiFi speed, you have many options; you could take advantage of WiFi 6’s QAM-1024, you could set up BSSID on a wider channel, or use devices that support more spatial streams. All these will shift your “maximum” data rate.
I personally no longer chase the illusive MCS 9 as long as WiFi is “fast enough” for what I use. So my recommendation to you is to stay close to your AP, and you should find your WiFi speed not bad at all.
Bear in mind that this post does not take external RF issues like interference into account. That is an entire blog on its own.