Chip designer have to think broadly if they want their product to be profitable. Often, they include features in their chips that aren’t implemented in a final product because they’re cost prohibitive or aren’t necessary. So when Linksys was forced to publish their API because they used software that was part of the GPL, that gave hackers full access to all the hardware in their products. Software like dd-wrt, OpenWrt, and others, added new features to the routers by replacing the proprietary and inaccessible firmware (the operating system running on the router) with open-source firmware.
A wonderful walk-through that is almost a perfect analog for this post is Void Main’s wiki article on USB modding a WRT54Gv3.
After installing dd-wrt on my router and confirming that it’s chipset ( Broadcom BCM5352) has an on-board USB 2.0 controller, I loosely followed this article to break out a single USB port (I felt two wasn’t necessary for a git server). USB is driven by a clean 5V DC power source, and the router is driven by a 12v DC ~1A power supply, so I built a circuit around a 7805 5V regulator that I pulled out of a stereo, some filtering capacitors and resistors to comply with the USB standard, and tapped the USB hub on the BCM5352 for the USB + and – channels. After that, I followed this walk-through to setup git on the router and ensure the files were kept on a thumb drive and not in local memory (which is 16MB and nowhere near large enough for file sharing).
Unfortunately, this project was done with time constraints because it did need to be implemented same-day to host files, so the photo documentation was sparse and is not exactly linear. Please post any questions you have and I’ll do my best to answer them.
There are hints on this process all over the place :