Lego Router (WRT54GL)

•January 8, 2010 • 103 Comments

Lego router

So, I got the urge to build something again. As I looked around my room, I noticed the five Linksys WRT54GL routers I had bought from when they were on sale. Of course I immediately thought, “I wonder if that would fit nicely in a Lego case?”. So I opened one up and measured the circuit board. It looked like it would be a good fit, so I decided to go ahead and design a case for it. This is the result.

Lego routerMy goal was to recreate, as much as possible, the stackable design of the original WRT54GL case while maintaining full functionality of the router (buttons, LEDs, ports). I also wanted to keep some air flowing through the case to avoid overheating the board.

Perspective renderThe first step was to take detailed measurements of the WRT54GL PCB. It turns out that the board is exactly 160mm x 144mm, which means that it fits perfectly within the dimensions of Lego bricks (which are multiples of 8mm).

Over the course of the next two days, I drew the design using MLCAD. I kept with the style of my previous Lego computer: a sleek exterior, smooth top, and subtle air vents.

Lego router back viewThe design I finally decided on has two air vents (one on each side), a row of clear bricks for the LEDs to shine though, a hole for the front button, and an opening for the ports in the back. The PCB is secure in the case, so there is no trouble with it moving around when you connect/disconnect cables.

After I was happy with the design, I exported it to BrickLink to find a seller who had all the parts I needed. My order came to about $50, but I added some extra “just-in-case” parts which bumped the total to $60. (Twenty dollars more than I paid for the router itself!)

Lego router inside viewThe PCB for the WRT54GL is an “L” shape, which presented an interesting challenge. The small side of the “L” is just shy of 61mm, which is 3mm short of being a multiple of 8mm. Initially, I thought I would have to leave a big gap, or just design a square inset.

However, Lego plates are 3.2mm tall. I took advantage of this by using hinge pieces to rotate the orientation of the bricks by 90 degrees, and using a flat tile as a spacer. This brought the width of the inset to be exactly the size of the PCB by filling in that extra 3mm.

I also learned from my previous mistake, and lined the top of the case primarily with flat tiles. The top is secured by only four small plates, one in each corner, which makes it much easier to remove without having to dismantle the whole thing.

Lego router topAside from assuring the board fit snugly in the case, I also took into account ventilation. The back and two sides of the case are open, allowing air to flow through. Additionally, the top to the case is thin to reduce the potential insulating effects of the Lego bricks.

Lego bricks are actually manufactured to be slightly smaller than 8mm to allow them to sit nicely against each other when connected. I took advantage of this fact by making a large section of the top only one tile thick, which leaves gaps through which hot air can escape from the case.

Lego router with WRT54GL faceplate on topThe lid also makes the case stackable with itself, although, unfortunately not with the original WRT54GL. Left to right, and width-wise, the feet of the original case fit great, but they are not spaced a multiple of 8mm from front to back, so they could not line up with my design. I can pretend though 🙂

Lego router in front of WRT54GL boxOnly two problems came up as I was constructing the case, and both were relatively minor.

First, the top pieces were not high enough to go over the antenna connectors. Somehow I measured wrong and omitted one layer of plates. Luckily, I bought enough extras to fix the mistake.

After I resolved that, the antennas wouldn’t screw on because they were too big to reach the connectors. As it turns out, the wide plastic piece at the base of the stock antennas is removable! Popping it off exposes the TNC connector (in the same style as the high-gain HGA7T antennas) and allows the antennas to attach without issue.

Ultimately, I am very pleased with how this project turned out and I hope you enjoyed reading about it. If you’d like to try making a case for your own WRT54GL, I’ve packaged all of the design documents and images and released them under the by-nc-sa Creative Commons license. You can choose the small download (155 KB), which contains only the documents and part lists, or the full download (5.5 MB), which contains all of the assembly images as well. Check out the included README.html for details.

Oh, and here is the obligatory time lapse video…

Thanks for reading!

Lego router

Lego Computer

•June 25, 2008 • 239 Comments

Update 7/16/2009: Moved downloads to a new location, the links should work now!

Update 8/08/2008: I decided to max out the case, so I bought another hard drive and set them up in a RAID1. I also added a second fan to the pre-existing mounts (needed to drill the holes in the fan with a 3/16″ bit as before). I rerouted the SATA cables behind the motherboard and pushed some of the others out of the way to improve airflow.

I also got this fantastic little wireless PCI card for $10. I removed the PCI bracket, but the antenna connector protuded too far and the card wouldn’t fit. What I did was desolder the connector, flip it around, and solder it back on. The card fits perfectly now. It’s got a cheap little 2dBi antenna, but a surprisingly strong signal (especially considering how much electronic stuff is crammed in such a tight space). I might use it as an AP. Dunno yet. Anyway, that’s all. Thanks again for all the feedback!

Update 7/12/2008: I’ve packaged all of the design documents and released them under the by-nc-sa Creative Commons license. You can choose the small download (215 KB), which contains only the documents and part lists, or the full download (11.3 MB), which contains all of the assembly images as well. Check out the included README.html for details. I hope this inspires you to create something of your own. Thanks!

Completed and powered on Lego computerSo, I decided I wanted to build something, and I wanted a small computer to use as a web/development server. What better to do than make it out of Legos?

Using MLCAD, I started working on some preliminary models. MLCAD is basically a primitive CAD program for Lego bricks. It uses the LDraw parts library, and you can export your models to purchase the parts at BrickLink. It’s a bit buggy, but it’s the best software out there for this sort of thing.

MLCAD final perspective renderAs it turns out, Lego bricks are a little under 8mm square, and 9.6mm tall. This makes them remarkably perfect for a number of computer components… although, as it turned out, not perfect for them all.

Since I was trying to make something small and low-power (and of course, inexpensive), I decided on the Mini-ITX form factor. These little motherboards measure 170mm square and consume very little power.

The amazing PicoPSUIntending to use it as a network device, I chose a JetWay motherboard with dual gigabit ethernet ports. It has a 1.5GHz VIA C7 processor, accepts up to 1GB of DDR2 RAM, integrated audio/video, 2 SATA, and cost $120 at the time. The accompaniments include a stick of cheap Kingston RAM and a half-height Seagate Barracuda 7200.10 250GB hard drive. A couple Zalman fan controllers to keep it quiet and an Antec 80mm fan to get some air flow. The NewEgg total was a little over $250 after shipping and tax.

The whole thing would be powered by the amazing PicoPSU. I aquired an open-box PicoPSU on eBay for $30 and bought a 110 watt 12v power supply from mini-box for about $40 shipped. A couple odds and ends from Directron added another $20, and that tops off all the parts. Then, the Legos…

The side panel comes off for easy accessWith the parts chosen, but not yet purchased, I had to design the case. Based on dimensions I found online, I made paper cutouts of each part and converted them to Lego dimensions to decide how they would best fit. For example, an 80mm fan is 10 bricks wide and 25 plates tall (three plates make the height of a brick). This made it easy to try a bunch of different configurations to figure out which one would be the most space efficient, have unobstructed air flow, and be easily accessible.

Step 64, right before attaching the side and topAfter many revisions, the final design turned out to have the power supply at the bottom, the hard drive cage at the top, and mounting points for 80mm fans on the front and back. To make it easy to get to stuff inside, the left side of the case is actually split in half to make a separate access panel. The lid lifts up and the side comes off.

The parts are organized, the laptop is readyWith MLCAD, I was able to export a parts list to Bricklink and it showed me sellers with the parts I needed. The 2×4, 2×6, and 2×8 bricks were the parts with the highest counts (105, 84, and 61 in the final model, respectively). Of course, these were the hardest to come by. I ended up using one seller for the majority of the parts, and three others for these major bricks.

Finished! Time to add the brainsSince I didn’t have the computer components yet, I was relying on manufacturer’s specs and some creative measuring of pictures on my monitor. I wanted to order some extra bricks in case there had to be changes to fit stuff. (It turned out that everything fit nearly perfectly, so very few alterations were needed. More about that later.)

Rear view of the fan and I/O panelThe total brick count for the model was 1039. I bought 199 extras, bringing the total ordered to 1238. The cost was $124.715 for the needed parts plus $14.488 for the extras. Since I had to order from four dealers, shipping costs were $24.10. So, the total for all the bricks came to $163 and change. Not bad, considering an actual Mini-ITX case costs around $100 plus shipping. And would not look as good 🙂 That brings the total to just around $500 for the whole project.

So, Lego bricks and components in hand, I get to work. I print out parts lists for each section, and export step-by-step images from MLCAD. I put the images on my laptop and laid out all the parts on the floor. About 2 hours later, I had an empty computer case. (See YouTube video at bottom)

Closeup of fanLike I said before, everything fit nearly perfectly, but there were a few minor problems, all easily correctable. The female plug on the power cord was a tiny bit too wide for the slot, so I shaved it down a bit with a razor knife. The holes in an 80mm fan turned out to be just a little too small for a Lego axle. They also do not line up vertically, only horizontally. The solution to the first problem was to drill the fan holes a tad bigger.

Power/reset switches, power/HDD LEDs

The solution to the second, unfortunately, was to only attach the fan by two holes. Luckily, it doesn’t vibrate or bang around at all. Partly because of this, but mostly because of the huge lack of heat from the tiny motherboard, I decided to only use one fan. The other mounts are still there, but unused.

Just like with the fans, a Lego axle is a little too big for the motherboard mount holes. Of course, I was not going to start drilling holes through the PCB. Instead, I put the axles in a drill press and sanded them down until they fit. Whatever works!

Inside view of switches and LEDs, notice the unused fan mountThat was really the extent of the problems. Most things worked out amazingly well, like the ATX power switches fitting perfectly snug in the space of a 1×1 brick, and the LEDs fitting perfectly in a 1×1 brick with hole. I hot glued a 1×1 brick to the power and reset switches to act as buttons. I also put a dab of hot glue on each corner of the ATX I/O plate, which was just a little too small to fit snugly.

I also realized that I underestimated the cohesive strength of Lego bricks. When I first put the top on, I couldn’t get it off! I had to add a nearly complete border of flat plates from my spare parts to get it to detach easily.

With the top off, the hard drive cage can lift upAll in all, I am very satisfied with how this project turned out. It’s come in handy as a backup device, development machine, and home theater PC. Also great for homework 😀

Pose for the cameraAnyway, hope you enjoyed seeing this, and congratulations if you actually read it all (ha). If you’re interested in the MLCAD model (don’t you want to build one now??) or have any comments/questions, feel free to ask.

Update 7/12/2008: The models are now available to download. Check the top of the blog entry for details.

Here’s the silly time lapse video I made of the assembly, set to techno music. Cliche & pajamas ftw 😮

Thanks for reading!