Rolando Islas Random Ramblings

How Not to Upgrade your Router

Let us begin: /r/tifu by buying a cheap router.

I have owned a few routers over the years. My first router/modem was the Actiontec PK5000. It is still serving as my modem to this day and in terms of modem operation, it is great. The routing capabilities are lack-luster, but sadly, this is to be expected from most routers on the market. This device served as my router for a year or two before I finally upgraded to a standalone router and put the modem in WAN bridged mode. The modem was finally just a modem; no access point, firewall, QoS, etc.

Next up is the Linksys WRT160N v3. This was a fantastic router. I installed DD-WRT (an open source router firmware) on it and away it went. Thinking back, it may have just been a combination of decent hardware and an even better firmware. Anyway, the router authenticated over point-to-point protocol over ethernet (PPPoE), which, without getting too technical is a way to send and receive data from two commuters (the ISP and the router). It operated fine and offered a lot of features thanks to DD-WRT. Unfortunately, the router began to stop randomly. I assumed it was an overheating issue and drilled holes in the top of the case to allow for better airflow. It seemed to work, but eventually, it happened again and continued to happen occasionally. It was not the biggest deal, but if the router were stressed with a lot of traffic or it was a hot summer day in hell Arizona, I would have to let it rest and work out its issues for while before it would turn back on. During its “meltdowns” if it were to be plugged in the lights would blink as if it were communicating its distress and it would not turn on until it has been given its rest, unplugged.

On to the next Linksys router, the E1200 v1. This one has a similar story to the WRT160N. I installed DD-WRT from the get-go. It felt about the same as the previous router, their specs were similar and from a software standpoint, they were running the same firmware (mini) with the difference being a newer build. It performed well, but eventually, the radio would go down after a reboot and I would have to secure shell (SSH: remote command line access) into the router to forcibly restart the networking service and toggle the radio. This worked occasionally, but it was annoying and when it did not work I sat there waiting for it to decide it wanted to play.

Now, back to the PK5000. Ah, yes that old thing that has routing capabilities. I decided to use it instead of buying a new router for a few reasons. One, I do not have much need for speed with a 9 megabits per seconds (Mbps) download link.

You may be thinking, “but what about the LAN (local area network) transfer speeds”, and to that I say, “I don’t transfer over LAN often, but when I do I prefer SyncThing”. Think of it like DropBox, but instead of going to someone else’s servers, the data is shared between only the computers you specify.

The PK5000 did its job well enough. All the wireless devices were happy with the wireless G access point. The web interface is surprisingly well done. One thing that is annoying about it is that there no option to save changes before applying like in DD-WRT, so a save will cause a reboot on a lot of pages. The router started having issues loading pages. The static IP DHCP lease page specifically would cause the router to become unresponsive, needing to be rebooted to restore functionality. With no static IPs defined (after a reset), the page loaded fine. This was one annoyance that made me decide to switch to a new router.

The other major annoyance was the router was making requests to a domain constantly. is the domain that the router loved to call. Having a poke around Wikipedia and the Wayback Machine, I found enough evidence to assume the calls to the domain were for some service that Actiontec/Qwest has installed in the router. In any case, that modem no longer connects via PPPoE, so it does not have internet access and just in case, is blocked via DNS. The site seems to no longer function, but I do not want my modem to access the site regardless.

Before we get to the new router, let us talk about the mentioned DNS blocking. I run a Pi-Hole server, a DNS server that blocks known ad-serving domains, on my local network because I am an arsehole.

A lot of people justify ad-blockers by claiming that ads are annoying and therefore everyone has justification to block them. I block them, but I do not pretend that I am not directly hurting the producers of content that place these ads. If you run an ad-blocker you are an arsehole.

My Pi-Hole server started out, as you probably guessed, on a Raspberry Pi Zero. No, of course not. I used an old Eee PC 900A running Ubuntu 12.04 because I was not going to waste those fun header pins on a Pi-Hole server. The Eee PC becomes the Pi-Hole server. At the time I transitioned from the Linksys E1200 to the Actiontec PK5000, I thought it would be a great idea to transition the Pi-Hole server to a micro-computer. I had a C.H.I.P collecting dust so I decided to use this and retire the Eee PC. Everything went well and the CHIP was running the Pi-Hole software.

Then, everything changed when the fire nation attacked.

To recap, because this post has gotten fairly large:

  • Modem: Actiontec PK5000
    • Working fine
  • Router: Actiontec PK5000 » Linksys WRT160N » Linksys E1200 » Actiontec PK5000
    • Underperforming/failing
  • Pi-Hole: CHIP micro-computer
    • Working adequately

The new router is a TP-Link WR940N v6. It is on the low end of routers, but it has three antennae, so that must mean performance! It is a wireless N router for no reason at all other than new-ish G routers are rare. I did a bit of DD-WRT research before buying it and noticed that the builds for it were not stable and the ones that were operation had to make the choice between the ethernet ports or the WAN functionality working. I figured that I could get by on the stock firmware since I had been doing fine with the PK5000 without DD-WRT. I take a look at the stock firmware and immediately notice it does not support PPPoE. Thanks, mate.

I did not want to return it, but I also did not want the modem handling PPPoE. That is when OpenWrt came to the rescue. PPPoE and working LAN ports? Sign me up. Unfortunately, it seems OpenWrt is a bit beefier in size than DD-WRT because while the DD-WRT would have provided me with a web interface, the OpenWrt firmware does not leave enough room for their web server, LUA, and software that handles the web configuration backend. So I am left with only configuration via config files accessed through SSH. It is not horrible, as OpenWrt has a mostly central configuration system located in /etc/config and the public key auth is largely more secure than the HTTP web interface would be.

The router was finally running. I needed to assign a new IP to my Pi-Hole and decided I would take the time to update it. A new update had come out a few days prior and I had not gotten to updating it yet. A read of the release notes did not result in anything that stood out, although be warned to Debian Jessie users, the release notes for Pi Hole core v3.3 are missing the following line:


  • Silently fuck over Debian Jessie users

The release notes failed to mention that a new configuration option for DNSMasq would render the older version in Jessie’s repos useless. I thought it would be no problem to upgrade from Jessie to Stretch on the CHIP, but it turns out the wifi driver breaks under the new Linux header. Rather than attempting to remedy upgrade woes on the CHIP, I opted to revive the Eee PC with Debian 9 Stretch. Pi-Hole is now again installed and my network configuration lives after many hours of SSH on routers, micro-computers, and old laptops.

TL;DR: I bought a router that did not have great software and spent a while tinkering with it. Other software failed in the process.

Disable/Enable the Wireless Radio on a DD-WRT Router

This post is mostly for myself as a reminder for when my router inevitably decides that it will not re-enable the radio after a reboot.

In my case, I have SSH access to my router, so I can run the following command from a console, however, this should also be possible to execute from the web GUI (Administration » Commands).

wl radio on

That is it. A whole blog post for one command.

More info about the wl command can be found on the DD-WRT wiki.

Edit (01/06/2018): The wl command listed avobe does not fully restart the radio. See the gist below for a restart script.

TF2 Damage Comparison

Ah, a good ol’ TF2 update that brings more hats, contracts, bugs, and of course, broken pyros. Or not.

I have seen far too many people complaining on the TF2 casual servers that the pyro is broken and such and such should be nerfed, but how many of those people have played pyro? Yes, a pyro can do a lot of damage very quickly, but it does so at similar levels to other weapons and has a big drawback: the range.

Let us not pretend that pyros have massive range. In a close encounter the pyro has the advantage, however, other classes have range and/or zoning capabilities. If we take a hypothetical corridor with a pyro on one end and another class at another, the other class will likely have the range to deal with the pyro. A soldier can shoot rockets before the pyro can even come close, the demo is laughing at the thought and a heavy is already eating a banana. The support classes will have difficulties and have already turned tail and promptly scurried back to the safety of their friendly neighborhood yeti heavy.

But what about the projectile reflection!?

Timing! Time those rockets or grenades. Did that airblast just go off? Fire! Just like there is more than one cosmetic slot, there is also more than one weapon slot. A shotgun in the secondary slot can help with those reflecting pyros and do not forget that sticky bombs are more difficult for a pyro to deal with.

Remember, pyros are your friends that want you to use your S key on your keyboard and pay more attention to the enemies sneaking around behind you. Do not forget to show your Mmmphing pyros a good time by shooting them right as they lose their uber.

TL;DR: Play better. The DPS stats below show that you are just bad at the game.

**Note: Frame times are arbitrary, based on the reviewed clip and are only used to provide the timing for damage calculations.

Damage Stats

Dragon’s Fury

Frame by frame damage

Continuous firing being charged into by a soldier

Frame Time Description
31.28 fire animation begins
32.03 27 damage
32.17 4 damage
32.19 84 damage
32.27 86 damage / death


Time: 29 frames / ~0.97 seconds

Damage: 201

DPS: ~207.22


Frame by frame damage

Continuous stream of flames being charged into by a soldier

Frame Time Description
3.14 7 damage / first damage tick
3.18 7 damage
3.19 7 damage
3.22 8 damage
3.25 9 damage
3.27 10 damage
3.29 4 damage + 11 damage
4.03 12 damage
4.04 13 damage
4.07 13 damage
4.10 13 damage
4.13 13 damage
4.15 13 damage + 4 damage
4.18 13 damage
4.20 13 damage
4.22 13 damage
4.25 13 damage
4.28 13 damage / death


Time: 44 frames / ~1.47 seconds

Damage: 209

DPS: ~172.18


Frame by frame damage

Fired from the max range of a flamethrower at a soldier

Frame Time Description
5.25 shooting animation begins
5.27 66 damage
6.18 79 damage
7.07 55 damage / death


Time: 42 frames / 1.4 seconds

Damage: 200

DPS: ~142.86

Rocket Launcher

Frame by frame damage

Fired from the max range of a flamethrower at a soldier

Frame Time Description
16.0 shooting animation begins
16.11 99 damage
17.05 97 damage
18.01 97 damage / death


Time: 61 frames / ~2.03 seconds

Damage: 293

DPS: ~144.33

Direct Hit

Frame by frame damage

Fired from the max range of a flamethrower at a soldier at the feet for the bounce, then while airborne for a mini-crit

Frame Time Description
31.0 shooting animation begins
31.12 123 damage
32.09 161 damage / death


Time: 39 frames / 1.3 seconds

Damage: 284

DPS: ~218.46

Frame by frame damage

Fired from the max range of a flamethrower at a soldier with no mini-crit

Frame Time Description
13.01 shooting animation begins
13.07 123 damage
14.02 121 damage / death


Time: 31 frames / ~1.03 seconds

Damage: 244

DPS: ~236.89


Frame by frame damage

Fired from the max range of a flamethrower at a soldier

Frame Time Description
13.14 frame before first bullet tracer (already spinning)
13.16 33 damage
13.18 33 damage
13.21 22 damage
13.24 21 damage
13.27 21 damage
14.0 43 damage
14.04 32 damage / death


Time: 20 frames / ~0.67 seconds

Damage: 205

DPS: ~305.97

Grenade Launcher

Frame by frame damage

Fired from the max range of a flamethrower at a soldier

Frame Time Description
13.26 shooting animation begins
14.04 100 damage
14.23 100 damage / death


Time: 27 frames / 0.9 seconds

Damage: 200

DPS: ~222.22

Macbook Pro Price Comparison and Custom Build

I created this while running Xubuntu. Please print and insert any Windows vs OS X squabbles into your favorite orifice.

  Apple Macbook Pro 2016 Dell XPS 15 Touch
Price $2799 $1649
Display 15.4” 15.6”
Resolution 2880 x 1800 - 220 PPI 3840 x 2160 - 282 PPI
CPU Intel i7-6820HQ Intel i5-6300HQ
CPU Mark 8716 5822
Storage 512 GB SSD 256 GB SSD
RAM 16 GB 2133 MHz DDR3 8 GB 2133 MHz DDR4
GPU Radeon Pro 455 2 GB NVIDIA GTX 960M 2GB
Wireless 802.11ac - Blutooth 4.2 802.11ac - Bluetooth 4.1
Camera 720p 720p
Touch Bar 1 0
Ports 4 - Thunderbolt 3.0/USB 3.1 2 - USB 3.1, 1 - Thunderbolt 3.0

I now want to know how much a comparable desktop build would cost. Prices from Amazon rounded to the nearest dollar: November 15, 2016.

Custom Build Component Price
i7-6700 - CPU Mark 11030 $290
MSI B150 ATX Motherboard $90
Crucial MX300 525 GB SSD $123
Ballistix Sport LT DDR4 16 GB $80
GTX 1060 3 GB $221
Gigabyte 802.11ac Bluetooth 4.2 PCIe Card $33
Logitech C270 Webcam $21
Samsung UE5900 Monitor $312
AmazonBasics Mouse Keyboard Combo $20
Corsair Carbide 100R Case $53
Xubuntu $0
Total $1243

Smite Running on Linux/OS X via Wine

For a while, years now, there have been attempts to run Smite under Wine. Unfortunately, the launcher could never get past waiting for that HiRez patch service. If your are just interested in getting Smite running in Wine check out WineHQ. If you want to go the PlayOnLinux (POL)/PlayOnMac route, I have created a POL script that should get you up and running. You can find the script in a gist on GitHub. Details are avaliable in the repo’s readme.

Edit (16 Jan 2016): Moved scripts to a regular GitHub repo.