I just bought a new router, and it was pretty expensive (ASUS RT-AC66U). I soon realized that wireless connections to it, over both 2.4GHz and 5GHz, were pretty bad. The results are similar from Mac or a PC. A typical ping session looks like this (over 2 minutes, interval 1 second):
PING 192.168.1.1 (192.168.1.1): 56 data bytes
64 bytes from 192.168.1.1: icmp_seq=0 ttl=64 time=2.190 ms
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=3.985 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=4.155 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=1.375 ms
64 bytes from 192.168.1.1: icmp_seq=4 ttl=64 time=1.541 ms
64 bytes from 192.168.1.1: icmp_seq=5 ttl=64 time=8.862 ms
64 bytes from 192.168.1.1: icmp_seq=6 ttl=64 time=12.327 ms
64 bytes from 192.168.1.1: icmp_seq=7 ttl=64 time=13.154 ms
64 bytes from 192.168.1.1: icmp_seq=8 ttl=64 time=4.244 ms
64 bytes from 192.168.1.1: icmp_seq=9 ttl=64 time=284.630 ms
64 bytes from 192.168.1.1: icmp_seq=10 ttl=64 time=301.342 ms
64 bytes from 192.168.1.1: icmp_seq=11 ttl=64 time=328.569 ms
64 bytes from 192.168.1.1: icmp_seq=12 ttl=64 time=10.168 ms
64 bytes from 192.168.1.1: icmp_seq=13 ttl=64 time=4.230 ms
64 bytes from 192.168.1.1: icmp_seq=14 ttl=64 time=1.207 ms
64 bytes from 192.168.1.1: icmp_seq=15 ttl=64 time=19.310 ms
64 bytes from 192.168.1.1: icmp_seq=16 ttl=64 time=4.040 ms
64 bytes from 192.168.1.1: icmp_seq=17 ttl=64 time=4.059 ms
64 bytes from 192.168.1.1: icmp_seq=18 ttl=64 time=4.233 ms
64 bytes from 192.168.1.1: icmp_seq=19 ttl=64 time=1.642 ms
64 bytes from 192.168.1.1: icmp_seq=20 ttl=64 time=1.593 ms
64 bytes from 192.168.1.1: icmp_seq=21 ttl=64 time=4.049 ms
64 bytes from 192.168.1.1: icmp_seq=22 ttl=64 time=4.223 ms
64 bytes from 192.168.1.1: icmp_seq=23 ttl=64 time=4.136 ms
64 bytes from 192.168.1.1: icmp_seq=24 ttl=64 time=1.277 ms
64 bytes from 192.168.1.1: icmp_seq=25 ttl=64 time=3.088 ms
64 bytes from 192.168.1.1: icmp_seq=26 ttl=64 time=4.268 ms
64 bytes from 192.168.1.1: icmp_seq=27 ttl=64 time=13.463 ms
64 bytes from 192.168.1.1: icmp_seq=28 ttl=64 time=4.167 ms
64 bytes from 192.168.1.1: icmp_seq=29 ttl=64 time=3.606 ms
64 bytes from 192.168.1.1: icmp_seq=30 ttl=64 time=2.931 ms
64 bytes from 192.168.1.1: icmp_seq=31 ttl=64 time=4.184 ms
64 bytes from 192.168.1.1: icmp_seq=32 ttl=64 time=4.071 ms
64 bytes from 192.168.1.1: icmp_seq=33 ttl=64 time=201.332 ms
64 bytes from 192.168.1.1: icmp_seq=34 ttl=64 time=218.367 ms
64 bytes from 192.168.1.1: icmp_seq=35 ttl=64 time=247.544 ms
64 bytes from 192.168.1.1: icmp_seq=36 ttl=64 time=57.321 ms
64 bytes from 192.168.1.1: icmp_seq=37 ttl=64 time=13.694 ms
64 bytes from 192.168.1.1: icmp_seq=38 ttl=64 time=3.918 ms
64 bytes from 192.168.1.1: icmp_seq=39 ttl=64 time=2.748 ms
64 bytes from 192.168.1.1: icmp_seq=40 ttl=64 time=1.839 ms
64 bytes from 192.168.1.1: icmp_seq=41 ttl=64 time=4.141 ms
64 bytes from 192.168.1.1: icmp_seq=42 ttl=64 time=3.919 ms
64 bytes from 192.168.1.1: icmp_seq=43 ttl=64 time=4.114 ms
64 bytes from 192.168.1.1: icmp_seq=44 ttl=64 time=1.316 ms
64 bytes from 192.168.1.1: icmp_seq=45 ttl=64 time=2.634 ms
64 bytes from 192.168.1.1: icmp_seq=46 ttl=64 time=10.943 ms
64 bytes from 192.168.1.1: icmp_seq=47 ttl=64 time=144.553 ms
64 bytes from 192.168.1.1: icmp_seq=48 ttl=64 time=158.767 ms
64 bytes from 192.168.1.1: icmp_seq=49 ttl=64 time=865.861 ms
64 bytes from 192.168.1.1: icmp_seq=50 ttl=64 time=1.009 ms
64 bytes from 192.168.1.1: icmp_seq=51 ttl=64 time=1.281 ms
64 bytes from 192.168.1.1: icmp_seq=52 ttl=64 time=1.199 ms
64 bytes from 192.168.1.1: icmp_seq=53 ttl=64 time=4.212 ms
64 bytes from 192.168.1.1: icmp_seq=54 ttl=64 time=1.714 ms
64 bytes from 192.168.1.1: icmp_seq=55 ttl=64 time=4.053 ms
64 bytes from 192.168.1.1: icmp_seq=56 ttl=64 time=21.046 ms
64 bytes from 192.168.1.1: icmp_seq=57 ttl=64 time=13.619 ms
64 bytes from 192.168.1.1: icmp_seq=58 ttl=64 time=14.630 ms
64 bytes from 192.168.1.1: icmp_seq=59 ttl=64 time=3.883 ms
64 bytes from 192.168.1.1: icmp_seq=60 ttl=64 time=4.119 ms
64 bytes from 192.168.1.1: icmp_seq=61 ttl=64 time=1.196 ms
64 bytes from 192.168.1.1: icmp_seq=62 ttl=64 time=4.048 ms
64 bytes from 192.168.1.1: icmp_seq=63 ttl=64 time=1.028 ms
64 bytes from 192.168.1.1: icmp_seq=64 ttl=64 time=1.116 ms
64 bytes from 192.168.1.1: icmp_seq=65 ttl=64 time=4.039 ms
64 bytes from 192.168.1.1: icmp_seq=66 ttl=64 time=16.272 ms
64 bytes from 192.168.1.1: icmp_seq=67 ttl=64 time=9.359 ms
64 bytes from 192.168.1.1: icmp_seq=68 ttl=64 time=29.070 ms
64 bytes from 192.168.1.1: icmp_seq=69 ttl=64 time=1.125 ms
64 bytes from 192.168.1.1: icmp_seq=70 ttl=64 time=3.871 ms
64 bytes from 192.168.1.1: icmp_seq=71 ttl=64 time=110.853 ms
64 bytes from 192.168.1.1: icmp_seq=72 ttl=64 time=131.584 ms
64 bytes from 192.168.1.1: icmp_seq=73 ttl=64 time=154.010 ms
64 bytes from 192.168.1.1: icmp_seq=74 ttl=64 time=1.178 ms
64 bytes from 192.168.1.1: icmp_seq=75 ttl=64 time=4.243 ms
64 bytes from 192.168.1.1: icmp_seq=76 ttl=64 time=9.988 ms
64 bytes from 192.168.1.1: icmp_seq=77 ttl=64 time=5.705 ms
64 bytes from 192.168.1.1: icmp_seq=78 ttl=64 time=19.701 ms
64 bytes from 192.168.1.1: icmp_seq=79 ttl=64 time=18.000 ms
64 bytes from 192.168.1.1: icmp_seq=80 ttl=64 time=3.954 ms
64 bytes from 192.168.1.1: icmp_seq=81 ttl=64 time=4.209 ms
64 bytes from 192.168.1.1: icmp_seq=82 ttl=64 time=1.173 ms
64 bytes from 192.168.1.1: icmp_seq=83 ttl=64 time=4.098 ms
64 bytes from 192.168.1.1: icmp_seq=84 ttl=64 time=3.956 ms
64 bytes from 192.168.1.1: icmp_seq=85 ttl=64 time=4.100 ms
64 bytes from 192.168.1.1: icmp_seq=86 ttl=64 time=16.471 ms
64 bytes from 192.168.1.1: icmp_seq=87 ttl=64 time=1.033 ms
64 bytes from 192.168.1.1: icmp_seq=88 ttl=64 time=4.681 ms
64 bytes from 192.168.1.1: icmp_seq=89 ttl=64 time=3.924 ms
64 bytes from 192.168.1.1: icmp_seq=90 ttl=64 time=4.040 ms
64 bytes from 192.168.1.1: icmp_seq=91 ttl=64 time=1.603 ms
64 bytes from 192.168.1.1: icmp_seq=92 ttl=64 time=1.626 ms
64 bytes from 192.168.1.1: icmp_seq=93 ttl=64 time=4.064 ms
64 bytes from 192.168.1.1: icmp_seq=94 ttl=64 time=3.708 ms
64 bytes from 192.168.1.1: icmp_seq=95 ttl=64 time=46.434 ms
Request timeout for icmp_seq 96
64 bytes from 192.168.1.1: icmp_seq=96 ttl=64 time=1104.146 ms
64 bytes from 192.168.1.1: icmp_seq=97 ttl=64 time=794.081 ms
64 bytes from 192.168.1.1: icmp_seq=98 ttl=64 time=1.135 ms
64 bytes from 192.168.1.1: icmp_seq=99 ttl=64 time=3.810 ms
64 bytes from 192.168.1.1: icmp_seq=100 ttl=64 time=3.683 ms
64 bytes from 192.168.1.1: icmp_seq=101 ttl=64 time=4.350 ms
64 bytes from 192.168.1.1: icmp_seq=102 ttl=64 time=4.148 ms
64 bytes from 192.168.1.1: icmp_seq=103 ttl=64 time=3.907 ms
64 bytes from 192.168.1.1: icmp_seq=104 ttl=64 time=3.768 ms
64 bytes from 192.168.1.1: icmp_seq=105 ttl=64 time=1.644 ms
64 bytes from 192.168.1.1: icmp_seq=106 ttl=64 time=7.536 ms
64 bytes from 192.168.1.1: icmp_seq=107 ttl=64 time=7.881 ms
64 bytes from 192.168.1.1: icmp_seq=108 ttl=64 time=3.987 ms
64 bytes from 192.168.1.1: icmp_seq=109 ttl=64 time=1.364 ms
64 bytes from 192.168.1.1: icmp_seq=110 ttl=64 time=1.251 ms
64 bytes from 192.168.1.1: icmp_seq=111 ttl=64 time=1.632 ms
64 bytes from 192.168.1.1: icmp_seq=112 ttl=64 time=4.191 ms
64 bytes from 192.168.1.1: icmp_seq=113 ttl=64 time=4.285 ms
64 bytes from 192.168.1.1: icmp_seq=114 ttl=64 time=3.966 ms
64 bytes from 192.168.1.1: icmp_seq=115 ttl=64 time=1.419 ms
64 bytes from 192.168.1.1: icmp_seq=116 ttl=64 time=108.544 ms
64 bytes from 192.168.1.1: icmp_seq=117 ttl=64 time=52.418 ms
64 bytes from 192.168.1.1: icmp_seq=118 ttl=64 time=3.854 ms
64 bytes from 192.168.1.1: icmp_seq=119 ttl=64 time=486.287 ms
--- 192.168.1.1 ping statistics ---
120 packets transmitted, 120 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 1.009/52.774/1104.146/159.580 ms
Every 10-20 seconds or so, the connection degrades horribly. The ping times can go above 1000ms (and there is often packet loss), and the bandwidth goes from over 70 MB/s to a crawl of a few hundred KB/s, or sometimes even 0 (tested with iperf3 using TCP and UDP).
I tried everything. I tried setting the 5GHz access point to 802.11ac-only and the 2.4GHz access point to 802.11n-only. I tried every channel and channel width for both access points. I tried disabling authentication. I tried installing the newest firmware, and I tried installing DD-WRT. Nothing made any difference.
It occurred to me that it might be outside interference. I tried connecting my MacBook to my phone with wireless hotspot enabled. The connection degraded regularly just like when connecting to the router. I have also tried connecting to my neighbor's wireless (2.4GHz) (with their permission of course) and the same happens there.
I have also confirmed all this using my brother’s Windows PC, so it's not the fault of my MacBook. For good measure I also tried shutting down everything in my apartment, including my own router, my TV, my wireless headset and all PCs. I also pulled the plug on my microwave and TV. It made no difference.
Does anybody have any idea what could be going on? It doesn't seem to matter which device is connecting to which other device, the same wireless connection degradation always happens. What kind of household equipment could cause this? What can I do to find out?