Wireless is a trap
post by benkuhn · 2020-06-07T15:30:02.352Z · LW · GW · 13 commentsContents
Wifi Bluetooth audio Bluetooth general Conclusion None 14 comments
I used to be an anti-wire crusader. I hated the clutter of cables, and my tendency to unconsciously chew on them if they got anywhere near my face. But running into bug after tricky wireless bug—mostly while trying to make my video calls work better—I’ve apostasized. The more I’ve learned about wifi, Bluetooth and related protocols, the more I’m convinced that they’re often worse, on net, than wires.
For instance: most people, when their video call stutters, blame their Internet service provider. That’s understandable, since most ISPs are overpriced oligopolists with barely-usable software and horrible customer service. However, every time I can remember helping someone track down the source of their connection problems, the culprit has turned out to be their wifi. And often, the easiest fix has been to run a cable.
Wifi (and bluetooth, etc.) sucker you in by making it seem like they “just work.” But if you investigate, you’ll often find that the wireless link is operating in a degraded state that performs much worse than a wired equivalent. Since this degradation is silent, it’s often not obvious that the problem is the wireless—instead, you’ll probably conclude that it’s your device/software/self.
Over and over again, I’ve seen people fix some wireless-related problem and go “wow, I had no idea how much better this could be!"
Recently, I finally ragequit and replaced all my desk’s wireless devices with wired ones. While I had to invest a bit in figuring out cable management (and break my habit of chewing on headphone cables), I was able to achieve nearly the same level of tidiness, with much better reliability, quality and speed. I no longer have to worry about my equipment failing to pair, running out of battery, or spontaneously giving me garbled robot voice during a livestreamed talk. It’s dramatically reduced my level of device-related agony.
To illustrate the degree of agony I’m talking about, below I’ll cover some of the subtle, hard-to-notice but severe problems I’ve run into with wireless protocols. If you’re convinced, try out some wires—you, too, can figure out whether you’ve been a victim of the wireless trap.
Wifi
Interference. If multiple wireless networks are operating on the same “channel” (radio frequency band), their transmissions can interfere with each other. When that happens your device needs to re-send the same information, which makes your wifi slow.
You might think this could be solved by having routers automatically figure out the least interference-prone channel to use, but many of them seem to be quite bad at this. (Also, the old 2.4GHz wifi protocol was only allowed to use three non-overlapping channels.)
That means in dense areas (e.g. apartment buildings), routers will often pick a bad channel and end up interfering with each other. There’s no way for your router or device to notify you if it’s experiencing interference, so you’ll only learn about it if you know how fast your router “should” be and notice that it’s slower.
Dead zones. If you’re too far from your router, your computer may not be able to reliably receive the signal that the router is sending, or vice-versa. How far is “too far” can also be affected, sometimes in weird ways, by whatever walls or ceilings are in the way. Unless you know a lot about how radio waves interact with building materials, it’s hard to predict where your dead zones are.
The worst part is that many dead zones aren’t fully dead: your computer and the router will try to retransmit each data packet multiple times before giving up, and often it will eventually go through. If that’s what mostly happens, instead of a dead zone you’ll end up with a “slow zone” where your internet works, but is subtly crappy.
Of course, unless you’re keeping a close eye on your network performance statistics and how they relate to your spatial location, you’d never notice a slow zone. If you noticed anything, it would be that sometimes your internet is randomly worse than other times.
Polling. Any program on your computer can ask your wireless card to enumerate the nearby networks. This causes it to go into “polling mode,” where it spends less time transmitting data and more time listening for routers advertising their network info (it can’t transmit and receive at the same time). Thus, it will cause a sudden burst of network delays that can e.g. cause your video call to stutter or freeze for a few seconds.
Most programmers don’t realize that wireless polling interferes with network performance, so they ask the OS to poll with wild abandon. I’ve been burned by this many times.
The most egregious instance was when I noticed that my video calls sometimes stuttered with an oddly regular frequency. Here’s the tortuous process by which I tracked down the culprit:
- I pinged my router every second for about 10 minutes, then plotted the output in Excel and confirmed that the slow pings were exactly 30 seconds apart. That made me guess it was probably a software problem.
-
I asked for help debugging it on Facebook and someone recommended enabling macOS wireless debug logging.
-
I enabled the debug logging and noticed that several apps, when I had them open, would requesting network scans, at times correlated to the increased ping latencies.
-
After narrowing it down to those few apps, I asked how to stop them from doing that on AskDifferent.
-
Someone on AskDifferent tracked the problem down to Qt, a software framework for making user interfaces, used by apps with millions of users.
Qt included a component which would poll for networks every 30 seconds whenever a “network access manager” was instantiated, causing pretty much any Qt app using the network to degrade your wifi for ~5 out of every 30 seconds.
There were already multiple bug reports for this issue, one of which was declared “closed” by an engineer because they allowed users to use an environment variable to disable the polling.
Of course, this is an unbelievably useless “solution” because most users won’t realize that their wifi is degraded; those who do won’t realize that it’s Qt’s fault; and those who realize will still have a hard time Googling for the appropriate fix (let alone implementing it, unless they can code).
This behavior is so user-unfriendly, and the “fix” so laughable, that it seems likely that the Qt developers somehow failed to realize the severity of the problem—I’d guess it ruined video calls for on the order of a million people, since, for instance, it affected qBittorrent which has been downloaded 75m times. Most of those million people were probably not technical enough to figure out how to “set the QT_BEARER_POLL_TIMEOUT
environment variable to -1
.”
(Fortunately, it does look like in 2017—three years after the original bug report—they finally realized they should just stop polling and fixed the bug the right way.)
Qt was the worst offender, but it’s far from the only one. Even macOS had a bug for a while where the same thing would happen when you opened Spotlight (which I do frequently during video calls, if someone asked me to look at a particular file, or if I want to zone out and read the internet multitask). I had to fix it by disabling individual Spotlight result types until I found out which one was causing the problem. So it seems even Apple’s own developers don’t realize that wifi polling is a hazard.
Bluetooth audio
High latency. Most Bluetooth headsets introduce around 150-300ms of latency (the time between my computer receiving the audio from the Internet, and the sound coming out of the headphones). That means that if I’m chatting with a friend in New York, the audio data will take about 50ms to get from them to my computer, and, say, 200ms—4x as long—to get from my computer to my ears. Since high latency ruins the natural flow of conversations, I’d like to eliminate as much of it as I can.
It’s possible to find lower-latency Bluetooth headsets if they support the right “codec,” like “AptX Low Latency.” Of course, in addition to supporting the codec in theory, they have to agree with your computer to use it, which can sometimes fail. (The option to inspect which codec is being used is, of course, buried in various hidden menus and settings depending on your OS.)
Low quality. Related to the codec issue, many bluetooth devices will play high-quality audio when the microphone is turned off, but degrade to much lower-quality audio when it’s turned on. You can test this for yourself if you have a bluetooth headset: play music on it, then open your microphone settings to the page where it shows the mic input volume. You’ll probably hear the audio cut out for a second, then return at lower quality. (This happens even with devices you might expect to be high-end, like my Airpods Pro + 2018 Macbook Air.)
Bluetooth general
Dongles. Even though all computers now have built-in Bluetooth, many Bluetooth accessories today still ship with proprietary dongles. I assume this is because the manufacturer was worried about inconsistencies or incompatibilities between their own Bluetooth implementation and your computer’s built-in Bluetooth hardware/drivers.
And that mistrust seems correct—for instance, on my Mac’s built-in bluetooth, my Logitech MX Master displayed noticeable jank (stopping, then jumping, instead of moving smoothly). I’ve seen this happen on three different Macs, so it seems likely to be a software problem. When I switched to Logitech’s specific dongle, though, it stopped.
Similarly, when connected to Mac bluetooth, my Jabra Evolve 75 headset would frequently have the mic or sound drop. It (mostly) worked fine on its own dongle. I’m not sure whether to blame Jabra/Logitech or Apple (or the Bluetooth standards body) for these problems.
Either way, this explosion of dongles is silly and inconvenient. At one point I had to buy a USB hub just for my four dongles (keyboard / mouse / headphones / microphone). The original intention of Bluetooth was to unify different wireless devices in a single wireless radio and protocol, much like Harald Bluetooth unified Denmark, but it seems to have mostly failed at this.
Reliability. Even with proprietary dongles, Bluetooth devices are much less reliable than wired. For instance, I wrote above that my Logitech MX Master worked fine once I switched to the proprietary dongle, but that’s not quite true: it worked fine for a while, then one day it started janking again for no discernible reason. (That was the day I finally apostasized and threw out my desk’s Bluetooth gear.)
I encounter other Bluetooth bugs that require me to un-pair and re-pair a few times a week. For instance, my AirPods sometimes “desynchronize” so that one is playing back audio a few milliseconds ahead of the other, causing a strange and really unpleasant echo effect.
Interference. One possible reason for poor reliability is that Bluetooth and 2.4GHz wifi interfere with each other. Much like wifi interference, your devices will never warn you if they’re experiencing interference; you’ll notice only because they suddenly become kind of crappy.
Charging. Not the fault of Bluetooth per se, but a downside of using too many wireless devices is that it’s really annoying to remember to keep them all charged. Mine tended to die at the least opportune times, e.g. during video calls.
Conclusion
Most of these problems shared a few things in common:
-
Things didn’t break completely, they just degraded. That’s probably the right call, but it meant that I didn’t immediately notice there was a problem.
-
Compounding this, I had no idea how well the device “should” work, so I took a long time to notice that it was in a degraded state.
-
Even once I was aware of the problem, it was hard or impossible to understand the root cause and fix it because I didn’t know the right diagnostics (or they didn’t exist).
I want my tools to be predictable—to have consistent performance and fail in ways that I understand. Wireless protocols are inherently more complex (because many devices share the same airspace) and have more different ways to fail, so they’re much less predictable than wires. For me, the convenience often isn’t worth that cost.
I still use wireless gear when it’s clearly worth it—for instance, I use wifi for my laptop since it moves around a lot, and I use a wireless charger for my phone since I don’t really care how fast it charges. But for serious work, I’ll spend the time to fiddle around with cable routing and wire everything.
This makes me wonder what the world would look like if we took 10% of the effort we currently spend on removing wires from everything, and put it into ingenious cable routing solutions instead. I’d bet that a lot of wireless-dependent activities like video calls would be way more pleasant.
13 comments
Comments sorted by top scores.
comment by uncomputable · 2020-06-07T17:40:23.577Z · LW(p) · GW(p)
Security and privacy seem like useful footnotes here, too. The security situation with standard wireless protocols has improved to "acceptable" in recent years, but right as soon as you get some one-off link (between your mouse and the proprietary dongle?) then nobody knows how bad the situation is. You're just trusting the manufacturer to have accomplished a feat that piles of smart people screw up on a regular basis.
Replies from: Decius↑ comment by Decius · 2020-06-08T04:40:57.515Z · LW(p) · GW(p)
I understand that there's certainly an information-theoretical security flaw, but if there is an attacker who could gain net value by seeing your mouse activity, you should be in a secure facility that prevents eavesdropping and none of the computers allowed in that area should be allowed to have bluetooth trancievers.
If a given dongle can be spoofed into providing arbitrary HID input (or just arbitrary keystrokes, in addition to mouse movement and clicks), that would be a more serious vulnerability.
Replies from: WannabeChthonic↑ comment by WannabeChthonic · 2020-07-05T14:19:47.710Z · LW(p) · GW(p)
If a given dongle can be spoofed into providing arbitrary HID input (or just arbitrary keystrokes, in addition to mouse movement and clicks), that would be a more serious vulnerability.
Dongles of bluetooth keyboards certainly can input arbitrary keystrokes. That's already enough to do basically anything on the computer. For example the tab character can be used to switch between different UI elements and exploits are usually carried out in code and not by manually navigating through files or windows.
comment by Dagon · 2020-06-07T17:21:43.732Z · LW(p) · GW(p)
I really love how far wireless has come in the last 30 years or so. Most of it is "good enough", and the tradeoff of convenience vs function is not quite at the "personal preference" stage, but _is_ at the "tools for different jobs" stage. I would not give up my bluetooth earbuds, for use when traveling or just walking/standing in my house. I would not remove my wifi, as there are rooms in my house where it's cost-prohibitive to run wires.
Anything you're doing professionally, or as a serious technical hobbyist, demands more care, expense, and analysis, and it's perfectly reasonable to default to wired, choosing wireless ONLY for those things where the convenience/freedom is a bigger value than the reduced bandwidth and reliability.
Note that, for important things, there are often acceptable hybrid options. Putting up with the Jabra dongle may be worth it for people who really can't train themselves not to chew on the wire. I have Unifi wifi equipement in my house, which makes for very good coverage, easy wireless->wired bridging, and decent monitoring so I know whether to adjust my setup or call my ISP when something's not working right.
comment by Pongo · 2020-06-08T02:03:39.646Z · LW(p) · GW(p)
I like having ethernet available, and I wear wired headphones for long calls. But the advantage of being able to wander around trumps the performance improvements of wired most of the time
Replies from: nucc1↑ comment by nucc1 · 2020-06-23T07:46:46.954Z · LW(p) · GW(p)
Having the easy option to go wired and defaulting to it for non-mobile use cases may save you a lot of consternation.
My experiences are similar to the authors, and I found them puzzling, since I had spent time and money on building a 2-node wifi network with wired back haul which was capable of sustaining 300mbps. Through my troubles, I learned that USB 3.0 can cause interference with wifi too, e.g https://link.medium.com/3SNxNPAWx7
My life got easier once I adopted the policy of "if it ain't moving and can be wired, wire it".
This has the benefit of freeing up bandwidth for the things that must be wireless.
comment by SarahSrinivasan (GuySrinivasan) · 2020-06-07T16:26:27.866Z · LW(p) · GW(p)
BTW re: Jabra Evolve headset, here's what I found when I went looking for why in the world my new headset worked so terribly on my laptop. https://medium.com/@daniel_36042/jabra-we-know-our-bluetooth-headsets-dont-work-with-laptops-sorry-no-refunds-80ed4cb2fc6f
“Jabra does not support use of our Bluetooth (BT) headsets connected to native BT in any computer running full operating system (o/s)”
Only through the dongle.
comment by Raj Thimmiah (raj-thimmiah) · 2020-06-08T17:59:40.604Z · LW(p) · GW(p)
Regarding wires, have you tried wire boxes? Like this: https://www.amazon.com/Bluelounge-CableBox-Cable-Management-System/dp/B0019T0JA2/ref=mp_s_a_1_1?dchild=1&keywords=wire+box&qid=1591639112&sr=8-1
They’re pretty simple but by eating up all slack on your wires they make things look way nearer. They’re the only wire organizing solution that I’ve found to really hold up over time.
Replies from: habryka4↑ comment by habryka (habryka4) · 2020-06-08T20:31:52.789Z · LW(p) · GW(p)
Can confirm. We have them all over our house and they've significantly reduced wire-associated mess.
Replies from: mingyuan↑ comment by mingyuan · 2020-06-11T03:25:18.418Z · LW(p) · GW(p)
You're welcome ;D
We have https://smile.amazon.com/gp/product/B07NCLDN8Z/ and https://smile.amazon.com/gp/product/B07C3QZ1GK/ (cheaper than Raj suggested because they come in three-packs). They are my babies :)
comment by MondSemmel · 2022-01-15T16:59:18.090Z · LW(p) · GW(p)
There is a tendency among nerds and technology enthusiasts to always adopt the latest technology, to assume newer is necessarily better. On the other hand, some people argue that as time passes, some aspects of technology are in fact getting worse. Jonathan Blow argues this point extensively on the topic of software development and programming (here is a 1-hour-talk on the topic). The Qt anecdote in this post is an excellent example of the thing he'd complain about.
Anyway, in this context, I read this post as recognizing that when you replace wired devices with wireless ones, you introduce multiple additional interfaces (<-> Interfaces as a Scarce Resource [LW · GW], also from 2020), i.e. communication between two wireless devices involves multiple hardware and software interfaces. In comparison, cables are so reliable and simple that we hardly think of them as interfaces at all.
For instance: most people, when their video call stutters, blame their Internet service provider.
This touches on another problem, namely black boxes. A cable is a comparatively simple technology, to the point that I as a determined layperson can troubleshoot cable problems with relative ease (e.g. once I suspect the cable, I can just replace it). Whereas any time we introduce multiple wifi devices with their assorted software, once something goes wrong with the connection I'm less in troubleshooting mode and more in "pray that the connection will magically return" mode. This is not a pleasant state of affairs. Domains in which you have a gears-level [? · GW] model grant you agency to change things, whereas black boxes just leave you feeling powerless and at the mercy of circumstance.
Interference
I live in a Reihenhaus (terraced / semi-detached house?), and right now my smartphone sees 10+ active wifi networks. And as one would expect, when my wifi causes problems, I know no obvious way to tell why, except to compare my wifi Internet with the far more stable cable-based Internet.
Conclusion
Regarding degraded performance, I'll go even further than the author, and say that quietly degraded performance can be much worse than broken performance. "If it ain't broke, don't fix it" is a decent aphorism, but it itself breaks down once your devices are so opaque that you can't even tell if they're broke.
Also, I appreciate this sound philosophy from the CTO of a promising tech startup in the EA sector. If I were inclined to use their product or work for them, a post like this would increase my trust. The irony does not, however, escape me that their business model entirely depends on wireless devices.
---
Let me conclude with two related anecdotes:
A few months ago we setup a workspace consisting of an adjustable standing desk and a computer. Cable management was a bit fiddly[1], and a few of the cables are a bit short when the standing desk is fully elevated, but the computer and its peripheral devices all work reliably. Except for the wifi-based Internet, provided by a wifi dongle which communicates with the wifi router one room over. That randomly interrupts every so often, and I have no idea why, as one might have expected from this post.
- ^
Actually, a well-meaning but misguided member of the household tried to do cable-management when the standing desk was not elevated. I didn't notice, elevated the desk, and was surprised by some half-levitating electrical devices. Yikes.
comment by wlonkly · 2020-06-21T23:18:43.538Z · LW(p) · GW(p)
I *think* the Logitech dongle is its own 2.4GHz protocol that is _not_ Bluetooth-based. (I have a mouse which supports both Bluetooth and the Logitech dongle, and another which is dongle-only.) That might explain why you get better performance with the dongle than with built-in Bluetooth.