So about a month ago, I noticed my internet speeds at home were slowing down.
We're talking like a 2Mbps kind of slow. One test would be very slow, the next test maybe half of almost normal. I have Frontier Fios (fiber) to the house. So there's no reason it should be like this.
I did the immediate things I could do, that the fodder of 1st level tech support would make me do. Like reset cable modem, reboot systems, make sure the computer system is connected directly to the modem, and other dumb stuff like that. Even reset the ONT as well. I explained to them, each time, that that I've tested speeds with the following:
- Chrome / Firefox / Safari
- Wired / wireless
- Desktop / tablet / smartphone
I noticed that the speeds would take a nose dive in the evening times, about 6pm until 11pm. Then speeds would normalize as far as I could tell (full disclosure: I had no idea what the speeds were while I was gone at work at this point). Now, I know what you're thinking. At that time of the day, everyone is at home and jumping on the 'net and the bandwidth is saturated. However, I have fiber and not DSL or cable. That logic doesn't hold water.
I had to find a way to know what my speeds were on a more constant basis. So then I remember reading about a guy who had Comcast as an ISP and had the slow speed issue. He wrote a basic Python 2.7 script to run the speedtest.net command line test, and then tweet the results. This is what I needed!
I searched and found a few speed test scripts. Of them all I selected 2, updated them from python 2.7 to python 3, put in my twitter credentials (key & secret), and tested. It took me a lot of trial and error, I'm no expert, but finally got it testing my speeds. From there I fined tuned it to what I needed.
True to form, the Frontier FIOS twitter team immediately started replying to my tweets of slow speeds. A few members communicated with me back and forth. They asked for the same information, etc. Most said "we'll have to send someone out to your house". I told them directly "Unless you're going to pay this contractor to sit at my house for hours on end testing the speeds its a waste of time". I then created a cronjob to run this test automatically EVERY HOUR of the day. Yeah baby, you can't handle the truth. But...
I fought the ongoing battle that is ISP tech support. I even had one tech tell me "50% of rated speed is acceptable". I blinked a few times, slack jawed. Was this guy just yanking my chain? I reread it a few times. I finally replied to the tweet "If you truly think 50% of speed on fiber net connections is acceptable, you shouldn't be doing support on network connections". After my response to that I had different tech's working with me.
After following, and tweeting all of the slow speed results, all of their suggestions they finally said they were sending this to 2nd level...via email. I got the first email within 48 hours. I responded within 1 hour. It took him 7 days to respond. Meanwhile I continued to run the script, to which their twitter team would respond. One suggested they needed a log, and that would help identify time spans. Good idea! I added logging to the script.
Then they asked for a traceroute. I gave them one, but they asked to traceroute to another domain. I used google.com. They came back and said "there's the slowdown, thats your problem". Huh? No, my network speeds are slow to EVERY DOMAIN. Not just one hop. So I reran the traceroute and used frontier.com. I started logging this to with every speed test. You could see the slow speeds AND slow hops to the ISP domain now. Again, no word back from 2nd level support.
I emailed my log files, in CSV and XLS formats to them. Dates, times, pings, speed tests up and down, trace routes to THEIR domain. I had it all. There was no doubt what and when, and that it was their network that was the issue.
My script still ran every hour, and every time my speed was slow I was tweeting the world. Until I decided to upgrade my workstation. And that very day I got phone calls from 2nd level support. Go figure. They asked questions, understood what I was saying, and would try a few things. They asked me for the new logs again. After a few days I had my workstation back up and testing. At first it was the same results, but then in about 2 days the speeds got better. Completely better!
I received two more calls from 2nd level support since then. Each time I had logs, and the speeds were pretty much great. Like what I'm paying for. They stated they switched my connection on their network switch to a new port. Tada!
I've received permission from original author to post up my version of his python script. I've updated it to work on python 3.x, and I'm sharing the code and my experience.
Want to auto test your internet speed, bug your ISP when it gets slow, log your results because you're geeky like that? I've got you covered.