Sometime earlier this month I started noticing more frequent problems with my internet connection at home. Flash back to June of this year, our local Frys Electronics had a sale on the Netgear WNDR3700. I had done a quick search in store and found that the WNDR3700 was supported by DD-WRT, so I picked one up. I may have been a bit overexcited and flashed the device with the latest build without fully reading what could go wrong. Several users have reported problems with wireless signal strength after flashing the unit. Reverting back to stock firmware doesn’t seem to fix the problem, and you end up stuck with a wireless router with terrible range. As time progressed, the WNDR3700 seemed to degrade even further, dropping long lived TCP connections, and hard-locking on occasion. In order to get reasonable 802.11b/g range, I was forced to use an old router as a dumb access point, as the WNDR3700′s signal barely reached 15ft away from the unit before clients dropped their connections.
Back to today: As a potential fix, I looked to the DD-WRT router database for advice on a replacement router. My requirements included gigabit Ethernet, dual-band (a/b/g/n) radios, and alternative firmware support. There are sadly few devices that meet this mix of features, but I settled on the Linksys E3000. Users were reporting fairly good wireless range, and reasonable stability. When the router arrived, I removed the WNDR-3700 and the old router providing 2.4Ghz connectivity. I was confident that this new device would fill the void left by the old and broken hardware. DD-WRT setup was a breeze, following instructions on the wiki. Once the new router was up and broadcasting, old wireless devices associated and I was able to connect to the internet without issue. Everything had gone well with the upgrade, or so I thought.
Early in the honeymoon period with the WNDR-3700, I was using OpenWrt. I was unable to get a UPnP daemon running that my Xbox 360 approved of. Often Xbox Live connections failed to work properly as the required ports were not opened on the routers firewall. Remembering those problems, I decided to test the Xbox 360 with the new E3000 to make sure there would be no unforeseen problems in the future. I powered on the Xbox, and turned on our projector. By the time the projector warmed up, the Xbox had already booted and was waiting at the dashboard. Sadly, the Xbox reported that I was not automatically signed in to Xbox live. This situation was tell-tale of UPnP problems with the old router, so I checked the UPnP administration page on the E3000, but no connections to the Xbox were opened.
I attempted a connection to Xbox Live manually, but the Xbox threw an error, recommending I run its network diagnostic wizard. The wizard blinked and chirped for a while, then decided that the console could not acquire an IP address. Strange, I thought, as numerous other devices on our home network were able to connect without issue, and get fresh DHCP leases. Looking at the DD-WRT status page, I could see that the Xbox’s MAC Address had a recently requested DHCP reservation. I initially thought it was a transient error, so I gave the Xbox another shot. It once again came back with the ‘could not acquire an IP address’ error. I tried a couple more things — setting a DHCP hostname, entering a new MAC Address, rebooting the router and Xbox, and even switching Ethernet cables. I eventually assigned the Xbox a static IP, and things started looking up; the Xbox could now connect to the Internet, but complained that the firewall settings were awry. This change in luck lead me to focus on DHCP as the source of my problem.
I finally decided to fall back on the Internet for advice. After a bit of poking around, I found this helpful DD-WRT forum post.
Tim.Lad: Check the DHCP lease times are not set to 0 or Blank the 360 will not take an ip address if the lease time is 0
Jumping back to the DD-WRT administration page, sure enough, my DHCP lease time was set to 0. I changed it to 5, applied my changes, and ran the Xbox connection test once more. Everything worked perfectly.