Setting Up The Linksys WRT54G Router

My brother finally got fed up with the substandard wifi reception which he was getting with our Gigabyte router (fyi never buy routers from Gigabyte or DLink, as they all (like most sub-$100 routers) are useless piles of junk which need constant attention). He bought a cheap Linksys WRT54G router off Ebay and guess who had to set it up :-)

Because the router was used, I wanted to reflash the firmware (for security reasons, eg. if the previous user installed malicious software), and decided to go with one of the many open-source Linux based solutions. Just Googling “wrt54g firmware” brings up a million articles on how to do this. In summary, a few years back, Linksys was discovered to have been using GPL code and distributing binaries without the source. Thus they were forced to release their source to the eager hands of the Open Source community who quickly turned the crappy sub-$100 device into an insanely powerful router, on par with the multi-thousand dollar machines that Cisco sells. This is great for Linksys and resulted in an ever increasing large demands for these models, but bad for Linksys’ parent company who is, that right, no one other than Cisco. Starting in Jan 2006, with models v5 and up, Cisco attempted to screw over the community by reducing the size of the internal flash memory which the open source upgrades are stored, to just 2MB, far too small for most of the community software out there. And luckily for me, my brother got a version 6. Fortunately, while using the DD-WRT wiki (DD-WRT is probably the most popular open source replacement for the WRT54G firmware) to look into this matter further, I happend upon the Bitsum project, which attempts to rectify this exact situation (god bless the open source community, every time the industry tries to impose another restriction, they see it as an challenge). By following the detailed and well written steps here,, I was able to successfully upgrade my router to the latest DD-WRT fireware. Unfortunately, only the micro version fits in the flash memory, and thus most of the advanced features (such as VoIP and VPN server support) are not included, but its for a simple, personal home network, and thus I donot need them. All in all, in my opinion a simple wireless router should:

Up to this point, all the routers I’ve owned haven’t lived up to all these standards. Besides dropped connections, and insufficient wireless power, additional annoyances include limiting the number and complexity of firewall rules which are defined, not supporting static MAC/IP mappings, not supporting port forwarding (yes I’ve actually had a DLink router without this feature), among various other pitfalls. I tried this upgrade with hope that the Linksys router is as good as everyone on the net makes it out to be.

After the installation, I found the first quirk with the router. It seems that when you try to save any changes you make on any page by clicking the “Save Settings” button, Firefox in Linux prompts you to select the program which to open “apply.cgi”. This is probably due to some quirk with the Javascript on the page, I didn’t look into it too far, and the solution is to simply use the Windows version of Firefox to configure your router. Not a great solution I know, but it works for now (unless you don’t have Windows installed :-( )

Using the “Setup” tab, I was able to change my router’s name and internal ip range (I like changing it from for security reasons), set the primary DNS to my personal internal DNS server (used for faster lookups and resolutions), and set the dynamic dns information for my domain. Using the “Wireless” tab, I was able to configure my access point and to incorporate security into the system, and using “Applications & Gaming” i forwarded the necessary ports to my router. Additionally, I changed my username/pass from the default settings using the Admin tab (shame on you if you havent done this!). It is interesting to note that I didn’t need to touch the “Security” or “Access Restrictions” tabs. I have no need to block outgoing connections for any port/host/keywords, and to my best understanding the Linksys router will block all incoming connections unless forwarding rules are specified under “Applications & Gaming”. (an excellent (yet simple w/ iptables) feature which many routers that I’ve used don’t support)

A major annoyance had occurred when I configured the router the way I wanted it setup using a single connection to my PC (eg. I had no other cables hooked up to it, including the WAN cable). When everything was right, I unplugged the router and moved it across the room to hook it up to my cable modem just to find out that once I did so, all my settings were gone. I had to spend a while reconfiguring it in place, while it was connected to the network (a security risk).

Regardless, I am fairly impressed with this router. It was much easier to setup than both the Gigabyte and Dline routers that I have and has many more features than either (partially due to the excellent DD-WRT firmware). For example, the firmware I installed provides many tools which can be used to configure the router graphically (including a command terminal into the system) (unfortunately because I can only use the DD-WRT micro firmware due to the limited size of the memory, my router doesn’t have ssh support) By default the router also allows all outgoing connections, while filtering incoming requests (in a secure stealth fashion) in accordance to the rules I specified. The wireless range/power is much better than my previous routers, resulting in a much more satisfying and simple end-user experience.