To paraphrase the King of Swamp Castle from Monty Python and the Holy Grail, one of the best ways to improve your wireless environment is to shut your noise sources off. That is to say, to trim the number of devices transmitting in your network down, so that your devices can connect more efficiently.
WiFi works much in the same way that FM radio does; your Wireless Router transmits on a certain frequency, and all the devices tuned in to that frequency then communicate with it. However, if you grew up before Bluetooth stereos were standard in all cars, you might remember the 12v FM transmitters that were used to play your music over the car’s speakers. They worked by generating their own radio channel (88.3, for example) which was used by a connected MP3 player to broadcast to a small area, which would then be picked up by the vehicle’s antenna. However, if there was already a radio station on the frequency used by the FM transmitter, say 88.3 JZZY, the local smooth jazz station, your car radio would pick up both frequencies. This then resulted in the completely legally obtained, not-from-napster, 128kbps Blink 182 album on your Zune being overlaid with some soothing saxaphone elevator music, and generally a poor user experience.
WiFi Networks are very much the same in principle, they just run on different frequencies than FM radio. So, if you are in an area dense with WiFi signals (like an apartment complex) or have a bunch of devices that generate their own WiFi network (Direct Connect Printers, for example), then you can easily start to overwhelm the bandwidth that your devices are trying to communicate on. To complicate matters further, there are only 13 channels in the 2.4GHz spectrum, and each WiFi network needs at least 3 channels to communicate without picking up interference from another network.
To illustrate this, I’ve done the exact opposite of what any good wireless engineer would suggest, and enabled every single WiFi access point I own, and captured the wireless environment using the Linux utility LinSSID. If you’d like to do the same, there are other numerous Windows applications for this, such as Channelyzer, NetSpot, and Acrylic WiFi.
So, what does this graph mean? Essentially, it means that my computer can see no less that *fifteen* separate WiFi networks from where I’m sitting. To throw in some tech jargon, the APs are also broadcasting on bonded channels, meaning that instead of taking up 3 channels and using 20Mhz of bandwidth, they’re transmitting on SIX channels, taking up 40Mhz. In a spectrum with only 13 available channels, with a requirement of each network taking up 3, that gives us just 3 non-overlapping channels to use. These are channels 1, 6, and 11.
It’s hard to summarize how crowded the bandwidth is with a network scanner alone, but thankfully, there are spectrum analyzers which can give you a much better idea of exactly how much noise is being transmitted in a given spectrum. To accomplish this, I’ve used a Metageek WiSpy dBx3 and the WiSPY Spectrum Utilities in Linux.
This shows a very crowded 2.4 spectrum, with channel 8 being the most impacted. If you refer to the previous picture, you can confirm that all of our wireless devices are on channel 8 as well, so we know this graph is accurate. The noise floor is hovering around -80dBm, which indicates there is a *lot* of RF signal in the area the sample was taken.
With a noise floor of -80dBm, any device connecting only has the remaining spectrum to communicate. On channel 8, that noise floor is even higher, so this means that any device on the network must have excellent signal strength in order to be able to send and receive data. To calculate the rate at which your device can communicate, you simply take the RSSI in dBm (received signal strength indicator) and subtract the value of the noise floor in dBm.
And here’s where we start to see impact on how well our devices can communicate. The measurements above were all taken on the 2.4 spectrum since the equipment I have for creating RF noise are all 2.4GHz, but for the following exercise, I’ll be switching to 5GHz spectrum for the sake of better illustration.
Example, here is the current RSSI of my wireless adapter:
[matmatician@Manjaro ~]$ iw dev wlp0s20f0u1 link
Connected to 74:da:88:f3:86:d3 (on wlp0s20f0u1)
SSID: Xe Dapper
signal: -34 dBm
tx bitrate: 867.0 MBit/s
We subtract the noise floor of -80dBm from the -34dBm from the adapter, and we get a signal-to-noise value of 46. Referring to this graph, we see that the minimum level for establishing a connection of 867Mbits per second is 40, so we’re cutting it close… but that’s only for a noise floor of -80dBm. If we look at channel 8 (just to illustrate a high noise floor), we see the floor is substantially higher, hovering around -70dBm according to the planar view. Change the equation to -34dBm – (-70dBm) and we’ve got a SNR of 36, which brings the connection speed down to a max of 390Mbps on a 1 spatial stream, 80Mhz 802.11AC connection.
So, lets get to the “shut your noise, you” part of this process. This way we can better communicate to the Swamp King our thoughts on marrying Princess Lucky. (If you haven’t seen Monty Python and the Holy Grail, this is an opportune time to take a break and analyze some ineffective communications.)
Continue on to part two here to learn how to regain some of the huge tracts of open 2.4GHz spectrum: