I've made a few other posts regarding issues with my DIR-651 - all of which pointed me to the need to be able to get the GPL released firmware working, so I could modify it, as it looks like none of the other open source router systems support this particular model. (Please let me know if I'm wrong.) Anyway, I downloaded the GPL firmware from the link FurryNutz has provided in several other threads (http://tsd.dlink.com.tw/GPL.asp). I also found an older post by Fatman suggesting http://support.dlink.com/GPL.asp for US GPL code, but this seems to point only to the main DLink support page.) At this point, I have successfully compiled the FW but not yet tested it. I'd like to use this topic to ask a few more questions, describe what I had to do to make it work in case it might help anyone else, and perhaps start a discussion about commonly desired enhancements for this FW.
First question: what is the difference between the NA (or any other region specific) and WW firmware, preferably in general terms? I would have loved to see that the version I compiled is the same as the official release, but I have the NA and the GPL is for the WW.
Major issue: as released, the GPL code needs to be compiled on a 32 bit system. I suspect I'll eventually figure out how to do it on a 64 bit system, but there are too many places where it seems to try linking 32 and 64 bit libraries together, and that just won't work. My initial guess is that the released code includes a toolchain already built in 32 bits, but the full build process tried to rebuild some of the toolchain, thus mixing arches.
Minor confusion: the package I downloaded contains both a toolchain and a firmware package which also includes a toolchain. I don't know if this is just an oddity in the way they created the package, or if there is some reason for two copies of the toolchain. My successful run was ignoring the separate toolchain, and just using the package that contained both. Does anyone know anything about this apparent duplication?
Another minor issue: all the components are very old. I've seen this pointed out elsewhere, especially as a reason to use one of the fully open source router firmwares. I'm not sure if I'm going to try to slowly upgrade each of the packages (such as kernel, binutils, ssh, ....) or perhaps try to migrate the router specific parts into a framework from dd-wrt or another such project. I'd love to hear if anyone else has tried this.
Actually, aside from needing to install the rcs package, there was only one change I absolutely needed to make to get the build to complete. This is because the current version of make no longer allows mixing implicit and normal rules, so there were two sections in one Makefile (for busybox) where I had to duplicate a few lines, one copy for each type of rule.
Current plans: I need to find a time I can be without Internet for a while, in case things don't go well (yes, I do have other routers I can use if necessary) so I can apply the newly compiled FW. Hopefully, this version should be identical the the 1.10 I'm running now (except for any NA -> WW differences.) Next, I'll make one or two cosmetic changes, such as in a page title, just to convince myself it works. After that, my next two gols are figuring out why applying daylight savings time makes the router keep jumping back to the login page and updating the library (SSL?) so it can use TLS to send email to an SMTP server which requires it.