I have a Linksys WRT54GS version 5 router, and believe that I would like to run DD-WRT on it. This leads to a myriad of issues, in large part because of issues with the version 5 units. The deal is that beginning with version 5, Linksys switched from linux based firmware to VxWorks based firmware. Apparently this has a significantly reduced memory footprint, allowing them to save money by in some cases cutting the size of both RAM and flash in half. Good for them maybe, but bad for people who want to run alternate firmware.
And the word is that the VxWorks based firmware is not as reliable as the linux based firmware that Linksys shipped in the good old days. I do not blame this on VxWorks (I use VxWorks myself for embedded projects in my professional work and like it very much). But the end result is what counts, and the word is that it was a step backwards in several ways. It is worth noting that Linksys now also offers a WRT54GL version that has 4M of flash and 16M of ram. I see these selling on Amazon for $50 or so. Compare this to the WR54G with 2M of flash and 8M of ram for $40. My WRT54GS v5 has 2M of flash and 16M of ram (they sell on Amazon for $95, which seems silly).
There is lots of information, and I am still sorting it out. Here are some links:
You should essentially ignore the information in the router database. If you look up (as I did) the wrt54gs v5 router, it will suggest that you use build 13064. If you go look at the stickies at the top of the Broadcomm forum (as you should), they will tell you that you are a bonehead if you use this build.
Why this inconsistency? Well, you can get some glimmer of an explanation by reading the just mentioned stickies. Here is my take on it: at some point the dd-wrt project transitioned from an open source community project to a closed project with a insider group of developers and a for profit fork of dd-wrt. It may be of some advantage to the for profit group to have users grabbing faulty "free" versions and getting frustrated. There may be some reluctance to call a spade a spade in the forums for fear of alienating the dd-wrt developers. The people who are truly fed up with all of this are running openWRT.
I have a general impression that build 15962 may be a good choice (in the generic micro version) for the wrt54gs. It is hard to get concrete recommendations. Beyond that, it is hard to find build images. It is a mess. For my wrt54gs I know I need a micro generic build; and build 15962 is recommended, See below, I ended up using 14929 and this worked out fine.
Read the sticky threads at the top of the Broadcomm forums. The "Peacock Thread" has a lot of valuable information, and most people asking sensible questions simply find themselves not having their questions answered and getting referred back to the Peacock Thread.
There is a lot to read and digest here. I am not rushing into installing dd-wrt on my router until I really feel I understand all the issues.
Here is one fellows story about how he tried to do this and made a brick of his router. I like his quote "I'm not rich enough to buy cheap things.".
The game for these is that you cannot just do the usual firmware upgrade, you need to first load something called "VxWorks Killer", then you can pull in the firmware you really want. The forum talks about needing CFE instead of the VxWorks BSP (board support package). What I picture is that the flash is partitioned in two sections. One section holds some unchanging stuff, the other section holds stuff that changes (namely the firmware you hope to upgrade). The DD-WRT firmware expects the unchanging section to hold the CFE firmware. So, if you just load new DD-WRT firmware into a VxWorks based router, the DD-WRT firmware finds itself trying to talk to the VxWorks BSP and you have a bricked router. So, you have to do a clever dance to replace the VxWorks BSP and to install the DD-WRT firmware without painting yourself in a corner.
What the heck is CFE anyway, I hear you asking! It is not the the council of five elders in Japan, like you were perhaps thinking, but the Common Firmware Environment, developed by Broadcom. You could sort of think of it as the moral equivalent of a "bios" in the world of routers.
Before you even touch your router, you need to do this:
Here are some tips for the linux user doing this. I put the linux machine I intend to do this from onto 192.168.1.8 via a static IP setup. However, my current internet router is on 10.0.0.1, and it would be nice to be able to view instructions on the internet while doing the firmware update, so ...
su ip addr add 10.0.0.8/24 brd + dev em1 label em1:router route del default route add default gateway 10.0.0.1 route -nAfter doing this I once again have access to the internet, and my machine and the linksys are the only devices on the 192.168.1.x LAN.
And here are some tips on setting up Windows static IP numbers. On windows 7, this gets you to the screens you use:
Control Panel Network and Internet Network and Sharing Center Local Area Connection Properties IPv4
yum install tftpTo send a file to the wrt54, a command something like the following will do. The "-v" is optional, but will give more information.
tftp 192.168.1.1 -c put yada.bin
Even though I am doing all of this from a linux machine, I took the easy way out here and downloaded Gv5Flash.zip onto a Windows 7 machine, unzipped the vximgtoolgui.zip file and ran the executable contained therein. At the top of the GUI you get to select whether you have a wrt54g or a wrt54gs, and there is an entry field where you type your MAC address. You give a name to the output file (I chose mymac.bin) and you click a button that says "generate" or some such. Then I put mymac.bin onto a USB flash drive and moved it to my linux machine. Then I washed my hands with strong soap and water. This file is the custom "killer" image.
Telnet into the router and give the following commands. Be aware that if you do this on anything other than a wrt54gs v5 with the chip mentioned, you will probably be making a brick of your router.
nvram set sdram_init=0x0A nvram set sdram_ncdl=0 nvram commit rebootThis worked just fine for me (and my unit has exactly the chip indicated).
The procedure above recommends installing the MAC address of your router into the vxworks killer image. The story here is that if you don't do this your router will have heaven knows what for a MAC address (perhaps all zeros), and your ISP is likely to refuse to allow you to connect if you come on acting like an anonymous zombie router. Most of the documented procedures instruct you to obtain and use a little GUI that is intended to run on Windows. This is frustrating for a linux guy like myself, but apparently this issue can be solved in several ways:
git clone git://github.com/mirror/firmware-mod-kit cd firmware-mod-kit/src/wrt_vx_imgtool makeThe author of all this seems to be (among others) Jeremy Collake (db90h) and Craig Heffner. Jeremy is the original author of the VxWorks killer tool.This produces the wrt_vx_imgtool executable, but the git clone pulled down a lot of other stuff that bears looking at (more twisty paths to roam down!). There is a file documenting what this is in the root of the cloned tree named firmware_mod_kit.htm. This document points to some forums at:
The situation with a bricked router boils down to this. It takes working firmware to load new firmware. Without working firmware, the normal options are impossible, but connecting a special cable opens up new ways of doing things. JTAG cables are cheap, and along with loading firmware are a great way to do remote debugging and lots of cool stuff. But we hope we can update our WRT54GS firmware without being forced into learning all about this right now.
Tom's Computer Info / [email protected]