Linksys routers, and I’m talking about WRT54g series, are not so popular anymore. In fact they are pretty much dead, as a technology, at this point. Technology that once were notorious among routers with their endless capabilities router-wise. Projects like DD-WRT and OpenWRT started with these WRT54 routers and now look at them. But because of their slow wifi and ethernet speeds, lack of modern wifi standard support and old chips they became obsolete, but among hackers and makers the name wrt54g is known very well. And when wrt54gl came out in 2005 it was the best-selling router of all time.
Today these routers still can be used for some projects (because of their extensive hackabilities software- and hardware-wise) where network speed is not the top priority. They can probably be compared to small raspberry computers with wifi and ethernet ports already available.
As it happens, I have a couple of these laying around at work (more specifically wrt54gl v1.1) and I thought maybe I could make a piratebox out of one of them. So I started gathering information if that would be possible. I didn’t find any info if piratebox would install properly, so I thought I could just try anyway and see how that goes… and the first thing I needed to do was to install USB ports.
I started off with reading through various forums, blogs and wiki pages, gathering information on how could this be done. I didn’t think it’s possible with my router version, but knowing they can be modded, I was confident that something existed, only question was how complicated it could be…
These routers use Broadcom chips that do have USB support and Linksys even made tracks for the data pinouts, just shorted to ground. Later models had USB ports built-in. And it turned out to be not complicated at all – first source of info I found was this OpenWRT wiki entry which confirmed officially that it’s possible.
My main sources of information were this DD-WRT forum thread, this DD-WRT wiki entry and this OpenWRT wiki entry.
So I first began with making a 5v source for USB’s. Found a scheme on instructables. Following that I made a simple voltage converter and connected it to the 12v input source:
After that I soldered wires to USB data pinouts and connected to the 15kohm (working as pull-down) and 22ohm resistors:
Took a pair of USB ports that once were as USB extension for a desktop computer and ugly-connected that only for testing purposes:
After all that was done, I flashed the router to a dd-wrt.v24-12548_NEWD_std-nokaid_usb.bin image, which is wrt54gl compatible with USB stuff built into it. After a successful flash I saw that the router doesn’t recognize my USB ports and dmesg isn’t showing anything good :/
A few hours of debugging revealed that I had connected ground wires to the wrong pins on the router and that I have mixed data+ and data- wires. Resolving those issues made the router see USB ports!
It was now confirmed that everything works and I could make these wires more tidy and fix those USB ports to the case:
As you can see there’s a quarter of router’s inside is empty space. Might be that Linksys left it for mods like this intentionally :D After assembling everything, it looks nice and tidy. And here is the end result:
Now I have flashed it to OpenWRT and installed the packages listed on that wiki page I linked to above. Everything works fine.