Fix Harry's wifi
Background
A friend suffers from crappy wifi. I keep telling him that I'll fix it, but I haven't yet. We spend time talking or eating instead of poking at the wifi. Before I go over again, I want to have a streamlined process for diagnosing the problem with all the necessary tools pre-loaded on my laptop so I can look like a rock star.
So I'm practicing on our wifi and trying to make sure I've got all my tools together. These procedures assume that I have access to an Android phone and a linux laptop both on the wifi network of interest.
Android Wifi Analyzer for signal strength
At home I get a maximum signal of about -50 db from Portlandia when the phone is less than 5 feet from it. I get about -75 db from ahub which is one floor down from the phone.
Identify protocol
Standard android wifi settings page tells me link speed, security type, and IP.
- Portlandia: 54Mbps (802.11g)
- ahub: 36Mbps (mixed 802.11b+g)
Other possibilities are:
- 802.11n (2009) up to 150Mbps
- 802.11ac (2012) up to 866Mbps
see what dhcp is giving us
root@ferret:~# less /var/lib/dhcp/dhclient.leases lease { interface "eth0"; fixed-address 10.0.0.6; option subnet-mask 255.0.0.0; option routers 10.0.0.3; option dhcp-lease-time 43200; option dhcp-message-type 5; option domain-name-servers 8.8.8.8,8.8.4.4; option dhcp-server-identifier 10.0.0.3; option domain-name "finninday.net"; renew 0 2013/11/24 04:12:33; rebind 0 2013/11/24 08:53:29; expire 0 2013/11/24 10:23:29; }
what does the routing table look like?
root@ferret:~# ip route list default via 10.0.0.3 dev eth0 proto static 10.0.0.0/8 dev eth0 proto kernel scope link src 10.0.0.6 metric 1 root@ferret:~# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 10.0.0.3 0.0.0.0 UG 0 0 0 eth0 10.0.0.0 0.0.0.0 255.0.0.0 U 1 0 0 eth0
measure ping time and packet loss to default gateway with mtr
- on a wired network ping time is between 0.2 and 0.4ms
- across portlandia ping time between a desktop and a tablet is between 1.9 and 99ms. Average is 57ms.
- there is no measurable packet loss
how many hops to DNS?
how fast is DNS?
measure bandwidth with curl
The curl manual says the speed is measured in bytes per second.
Over a wired link, I get this:
root@ferret:~# curl -o /dev/null http://speedtest.wdc01.softlayer.com/downloads/test500.zip % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 20 500M 20 103M 0 0 5683k 0 0:01:30 0:00:18 0:01:12 6896k^C
Over Portlandia, I get about 2MBps out of a theoretical max of 6.75MBps:
[rday@servo lf]$ curl -o /dev/null http://speedtest.wdc01.softlayer.com/downloads/test500.zip % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 7 500M 7 38.2M 0 0 1595k 0 0:05:20 0:00:24 0:04:56 1936k^C
Over ahub, I get about 2.6MBps out of a theoretical max of 4.5 to 6.75MBps:
[rday@servo lf]$ curl -o /dev/null http://speedtest.wdc01.softlayer.com/downloads/test500.zip % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 11 500M 11 56.3M 0 0 2397k 0 0:03:33 0:00:24 0:03:09 2632k^C