DD-WRT is a third party developed firmware released under the terms of the GPL for many ieee802.11a/b/g/h/n wireless routers based on a Broadcom or Atheros chip reference design.
The firmware is maintained by BrainSlayer and is hosted at dd-wrt.com. The first versions of DD-WRT were based on the Alchemy Firmware from Sveasoft Inc, which is in turn based on the original GPL'd Linksys firmware and a number of other open source projects. DD-WRT was created directly from Sveasoft's software decision to start charging for their firmware, closing the door to opensource.
At present DD-WRT is available for free, although a different business model is being drafted by BrainSlayer in order to pay his salary, as this is his full time job.
The new version of DD-WRT (v24) is a completely new project. DD-WRT offers many advanced features not found in the OEM firmwares of these devices, or even the firmware available for purchase from Sveasoft. It is also free of the product activation or tracking found in the Sveasoft firmware.
Note: Beta firmware, by its very nature, will contain bugs. It is not recommended to install beta firmware on large networks that are used for businesses, etc. However, there is now a bugtracker in place for DD-WRT firmware located here:DD-WRT Bugtracker.
If you're looking for a cheap and functional router to put DD-WRT on, the Belkin F7D3302 is recommended. They can be found for around 20 dollars and have great hardware for the price. It has 64 MB ram, 8 MB of storage, and a USB port for NAS. The 8 MB of storage means it can fit the mega build of DD-WRT. The F7D3302 also supports Tomato firmware.
This list covers additional software that can be installed on devices running DD-WRT. Note that you can install any OpenWRT package, using ipkg. Additionally more than 1000 packages are provided with NSLU2-Linux Optware packages build specially for DD-WRT.
If you use a different subnet for your LAN then you will need to change the subnet in the command to match yours or use this set of commands.
LAN=`nvram get lan_ipaddr`/`nvram get lan_netmask`
iptables -t nat -I POSTROUTING -o br0 -s $LAN -d $LAN -j MASQUERADE
If you have a more advanced configuration with additional interfaces on the LAN side such as unbridged wireless, unbridged VPN, additional VLAN's, etc. then you will need to create commands similar to the first one for each of your local interfaces that you want to enable loopback for.
This set of commands should enable loopback for all local interfaces.
iptables -t mangle -A PREROUTING -i ! `get_wanface` -d `nvram get wan_ipaddr` -j MARK --set-mark 0xd001
iptables -t nat -A POSTROUTING -m mark --mark 0xd001 -j MASQUERADE
Current k2.6 builds after ~16500 no longer support any old devices. This means that if you have a device that uses k2.4 then you must use k2.4 builds, and if you have a device that uses k2.6 then you must use k2.6 builds! There are no longer any devices that can run both.
If you accidentally flashed a newer k2.6 build on a device that needs a k2.4 build or vice versa then you must use either Serial or JTAG to recover it. See the Peacock Announcement for more details about recovering.
--more detailed info about the k2.6 build changes--
Thread Previously named:
CPU 4704 Owners (corerev=11) - No K26 builds after 15314 on the unit.
All other CPU's Corerev <16 - no K26 builds after 16500.
UPDATE It is now learned that any router with a corerev lower than 16 will no longer be supported with the K26 builds after ~16500. (per Eko)
It is advised that you test your unit's corerev BEFORE attempting to use the K26 builds on it.
The older corerev routers will still run the NEWD builds using the old wireless driver.
To test your corerev, login via telnet or ssh and run:
nvram get wl0_corerev
For dual radio devices, also run:
nvram get wl1_corerev
If the numbers are 16 or higher then you can use the K26 builds.
After working with Eko to determine the problem...I found that the changeset of svn 15315 bricks the Asus WL-500W unit. This is only if you run K26-NEWD-2 builds...the regular V24 later builds work fine on the unit.