Installing OpenWRT on my TP-Link WDR3600 Router
Recently I invested in a new router, a TP-Link WDR3600. Some of the reviews on Newegg indicated that the vendor firmware’s reliability could be flakey. It’s not surprising considering that it’s rare to find a company that creates decent software, let alone both hardware and software. Luckily, there’s a few alternatives available for open source firmware for routers. Popular options include DD-WRT, OpenWRT, and Tomato. I decided to go with OpenWRT since some people indicated that they’ve had luck with it running on WDR3600.
To download the firmware, I visited the OpenWRT wiki page for the table of hardware, http://wiki.openwrt.org/toh/start, and located my router model. I visited the wiki page for it and found a link to the download page for Attitude Adjustment 12.09. I located the factory bin file for my model with SquashFS and downloaded it. The factory image is what you want when you are installing OpenWRT, the sysupgrade image is what you want for upgrading OpenWRT after you’ve installed it. SquashFS is supposed to be safer than using jffs2 which is why I chose to go with it.
After downloading the bin file, I logged into the vendor firmware’s web UI, selected the update firmware tab, and selected the bin file. The router proceeded to reboot and booted up with OpenWRT installed and running.
The build of OpenWRT that I installed came with LuCI which is a web UI for OpenWRT. I just needed to visit 192.168.1.1 to access it. Wifi and Internet access were disabled by default. Internet access was easy enough to bring up by enabling the WAN interface (though the wiki was not clear that this was a good next step on a residential network). This is under Network > Interfaces. Wifi was also easy enough to enable after enabling appropriate security (WPA2) in the Network > Wifi tab.
The WDR3600 is a dual channel router meaning that it can expose two access points operating at different frequencies. I have one operating at 2.462 GHz for wireless abg devices (older wireless clients) and another operating at 5.180 GHz for wireless na devices (newer wireless clients).
The next order of business was setting up QoS (quality of service) so traffic that is more sensitive to latency is prioritized over traffic that isn’t. The first step is to install the luci-app-qos package in System > Software. This adds a QoS tab under Network. In the QoS tab, I adjusted the download and upload speeds to match what my ISP says my speeds should be and enabled QoS. I suspect this is something where I’ll need to monitor bandwidth usage to capture the true maximum speeds.
As part of setting up QoS, I wanted Netflix on my smart TV to get priority over other non-prioritized traffic. One way to go about this is to create a rule that classifies traffic from my TV as priority traffic. Identifying which traffic is from my TV is a little tricky when I use DHCP on my network as, by default, the IP address associated with the TV can change. One way to get around that is to use static leases which works in a DHCP context to tie a given MAC address to a specific IP address which can then be fed into the classification rule. I identified the TV’s IP address through the network settings on the TV and established a static lease in Network > DHCP and DNS for the MAC address currently using that IP address. In the QoS tab, I created a new classification rule for the priority target that included traffic with a source or destination of the TV’s now statically leased IP address. This should give it priority over non-express traffic through the router (e.g., torrents).
Everything is set up and appears to be stable. In the future, I’d like to investigate setting up a sequestered network for guests and look into setting up access points which are capable of VPN-ing to American or UK endpoints.