Cisco/Linksys E4200 overclocked to 532 MHzIt’s a question asked in the DD-WRT forums all the time. It’s a question often asked in the comments of my DD-WRT posts. And it’s a question to which no “official” answer from the primary maintainers of DD-WRT exists… and therefore it will probably keep getting asked. However, based on my experiences (and some conversations with some of the builders themselves), I’ll take my best stab at explaining the differences between the various popular builds of DD-WRT, particularly those released by BrainSlayer, Eko, Fractal, and Kong — and finish with an explanation of why you really should ignore the Router Database on the DD-WRT website. I welcome updated and corrected information in the comments, and I’ll incorporate it into the post.

First, let’s start with BrainSlayer. His real name is Sebastian Gottschall, and he’s the founder and primary maintainer of the DD-WRT project. As such, BrainSlayer gets the final say regarding what bits are included in the “official” stable release versions. However, the last stable release, known as Version 24 Service Pack 1 (or more commonly seen as v24 SP1) came out way back in July 2008. Since then, the WiFi technology landscape has changed massively, there’s been flurry of development activity in the third-party open source router firmware space, and literally hundreds of new router models have come on the market. That means that BrainSlayer’s goal of creating and packaging “one firmware to rule support them all” is a major challenge.

BrainSlayer actively contributes to the DD-WRT source code, and tracks all source code development with the Trac SVN system (you can view the timeline of that development here). Every new code changeset that gets committed to the system is automatically assigned a changeset number (for an example, click here to see what changeset 22212 looks like). Because it’s an open source project, anyone is welcome to download any version of the DD-WRT source code from the SVN and compile their own binary firmware file.

Which brings us to the difference between “source code” and “build.” Most open source projects have a central repository where the source code is managed, and developers make changes to that source code based on feature requests and bug reports from users. Source code is generally hardware “agnostic” — meaning it’s not targeted specifically to one particular hardware platform. Take the open source browser Firefox as a well-known example. Even though the Windows, Mac, and Linux versions of Firefox all share the same central source code, you can’t run the Windows version of Firefox on Mac or Linux, or the Mac version on Windows or Linux, or the Linux version on Windows or Mac. That’s because source code needs to be compiled (or built) for a specific hardware platform before it can be used on that platform. DD-WRT is no different. Even though they may share the same source code, a DD-WRT firmware file that was compiled specifically for a Linksys router won’t run on a Netgear or Belkin router (and in fact, might break it).

When BrainSlayer himself builds a set of binaries (based on one of the changesets in the source code), that’s called a BrainSlayer build. BrainSlayer builds do not happen often, and are only available on the DD-WRT website. Final “stable” builds (like the one from July 2008) are always BrainSlayer builds. “Official” development releases (listed on the front page of the DD-WRT website) are also BrainSlayer builds. BrainSlayer’s development builds tend to focus on supporting only the most recent router hardware. As such, most of the BrainSlayer “development” releases are generally not compatible with router hardware that may be only 1-2 years old. And the “stable” releases are so old (again, 2008!) that you’re missing out on a massive amount of features by running them… which is why other contributors’ builds are popular among open source firmware users.

If you examine the SVN timeline, you’ll see that BrainSlayer isn’t the only person committing changesets to the project. On the DD-WRT About Page, he lists a number of other contributors to the project, including Ales Majdic — better known in DD-WRT circles as Eko. Eko is less active these days, but used to be a major contributor of bug fixes and new features to the DD-WRT source code. He is perhaps best known for being one of the first developers to create separate builds (called “rolling” a build) that incorporated older drivers for some of the older hardware (referred to as “VINT” for “vintage”). In those builds, Eko removed some newer packages from the source that wouldn’t compile properly for older router hardware (especially Broadcom). Even though Eko no longer actively creates test builds, his older builds can generally be found on the DD-WRT website and still work on older hardware.

Another popular builder is Kong. Kong’s older “kongmod” builds focused on making tweaks to the source code to allow compatibility with certain types of hardware, with an emphasis on getting as many features and drivers working on various router hardware, even if that means patching some of the drivers with versions that are even newer than the ones used in the official source. But that’s no longer the case. BrainSlayer has since granted write permission to the DD-WRT source code repository, so Kong no longer creates patches outside of the source — and no longer creates “kongmod” builds. His patches and tweaks are now contributed directly to the DD-WRT source code project, and his current builds are (in his words) “plain DD-WRT without any extras.” Kong recently told me:

Thus you won’t have any benefits anymore by flashing my builds, except that I’m able to provide sometimes more recent builds, as I concentrate on a subset of supported routers. In addition to that I do some basic testing with the units I own and I usually don’t upload builds that have issues with basic functionality. Since Brainslayer cannot test each build on every router he supports you will see issues for his builds like fw not beeing flashable because it is a few bytes to big, or broken wireless etc. That’s the reason why my builds are popular among users that have the unit I develop for.

Kong’s builds (both the older “kongmod” and newer “plain dd-wrt” versions) can be found here. Kong also gave me a humorous description of how some of the well known DD-WRT contributors and builders could be considered:

Brainslayer is Master Yoda. I’m now Obi Wan. Fractal is a Padawan. Eko is a retired Jedi Master. There are a few more Jedi Masters e.g. Sash, Chris, Markus :)

Sash, Chris, and Markus are known contributors to the DD-WRT source code, but don’t actively create test builds. And Fractal? Let’s discuss him next.

Fractal is a relatively newer contributor to the DD-WRT project, and will also contribute to the main DD-WRT repository. Like Kong’s newer builds, Fractal’s builds are also based on the central DD-WRT source code, but with a primary focus on rolling builds for Broadcom-based hardware, especially the newer Cisco/Linksys routers. Fractal is known for rolling a large number of “trailed” builds specifically those types of units, which allows them to be flashed directly from the stock firmware. Fractal has told me:

 I do / have been concentrating on Broadcom builds especially with the new hardware, aka E series routers, and now the AC devices. I roll trailed builds when I know something major has been fixed and I do contribute to the SVN trac, however I have not the Jedi master — I leave that to Brainslayer and Kong….

Fractal’s builds can be found here.

So, which build is right for you? In the past, that depended primarily on your hardware and your goals. For older Broadcom stuff, you’d run Eko. For bleeding edge features, you’d run a kongmod. For newer Broadcom stuff, you’d probably lean toward Fractal.

But now, with the DD-WRT source tree unified, and all the major builders and developers feeding into (and from) the same source code repository, it now matters a lot less which test build you run (especially if you have current WiFi hardware). If you insist on an older “official” build, even if that means you’re missing out on features, then go for a BrainSlayer “stable” build. The best advice I can give you when choosing the right build for you is the start with the DD-WRT wiki entry for your specific router model. It will (usually) contain up-to-date information regarding where you should at least start, and then watch the forums to see which builds are stable.

Where you shouldn’t go, however, is the “official” DD-WRT router database. It’s ridiculously outdated (which is a problem known to the DD-WRT developers), and probably won’t be improved until the next official stable release comes out (again, the last one was 2008). Users of routers with Broadcom internals are strongly encouraged to read what is referred to as the Peacock Thread before proceeding with any DD-WRT install. That tread includes the following:

DON’T USE THE ROUTER DATABASE! The router database has recommended some less stable builds, including SP1 and 13064 (10/10/09) build. I suggest using the builds that are recommended here or in Redhawk’s announcement above, rather than the ones in the router database. SP1 is full of bugs, and while 13064 is not nearly as bad, some are reporting connection issues fairly regularly. Sometimes the router database also has had the wrong build type. The router database is being worked on improve the recommendations but it still contains errors and bad builds. Do not skip over reading the install wiki for your router just because you got the files from the router database. You need to KNOW what to do with those files. The wiki usually has the right builds for particular routers. READ THE WIKI!

If you use a Linksys E4200 v1 router, I maintain a separate blog post that always includes my recommended build for that router (since that’s the one I use in a number of different locations). As long as I use that router and DD-WRT, that post will stay updated with the build I think works best.

To sum up, the bottom line is that all the builds, whether BrainSlayer, Eko, Fractal, or Kong, share the same central code from the official DD-WRT source. Those builders will pick a changeset number and create a build (whose build number matches the changeset on which it’s based), and then compile the source for the specific hardware models in which they focus.

Development versions of open source firmware (which all of these builds are) are different than what are considered “stable” or “release” versions. And one of the differences is that it requires a bit of work to inform oneself as to what will work best for you. If you’re not willing to put in that work, you’re better off just keeping the stock firmware that came with your router. But if you’re willing to read the DD-WRT wiki, browser through and participate in the forums, and seek out blog posts like this one, you’ll be rewarded with the ability to squeeze the maximum performance out of your router hardware.

I welcome your comments and feedback below. I also welcome corrections, especially from any of the individuals mentioned in this post (I always prefer to get official information direct from the source). Please be aware that I don’t offer DD-WRT support, and I can’t answer questions such as “I have XYZ router – what build should I be running?) Your best source of specific information about DD-WRT is always the DD-WRT forums. :)