The popularity of internet-connected devices built with Arduino shields or single-board computers like the Raspberry Pi and Beaglebone has exploded, but for simple tasks like controlling a relay, reading a sensor, watering your garden or lighting LEDs there's an overlooked (and often free) option: old wifi routers and access points.

Used APs and routers are wasting away in our homes, offices, and landfills, and though they won't match the hardware of a Pi or Beaglebone, they do usually have a few GPIO pins, a serial port, wireless and ethernet connectivity, possibly even a USB host port or Power-over-Ethernet support!

Businesses and institutions in particular may have dozens or hundreds of obsolete access points of a similar make and model, providing a great opportunity for creative reuse and enough potential benefit to work out quirks, limitations and annoyances, develop tools to automate an installation and setup process.

(A handful of routers, like the Linksys WRT54G or TP-Link WR703N, have developed a strong following online and have many well documented mods, but plenty of others are far less explored)

What you need:

* A old wifi router or access point

* 3.3v serial cable

* An ethernet cable

* Soldering iron, solder, wire, basic hand tools

Step 1: Check for compatibility with OpenWrt

Routers, access points and networking devices may already run some variant of Linux, many can be flashed with an embedded linux distribution called OpenWrt, which allows for more possibilities. Visit the OpenWrt web site to check compatibility and find installation instructions and support for your device.


The installation process can vary quite a bit between products: for some routers it is a simple point and click, in other cases it involves using TFTP and a serial console, and in other circumstances manufacturers have made the re-flashing process very difficult.

A FTDI/serial cable @ 3.3v can come in handy in the flashing process. As can a refresher on how to use TFTP. To flash some routers you may have to use a JTAG programmer.

The router I'm going to re-purpose is from Meraki, and to install vanilla OpenWrt I have to use TFTP and a serial console.


If you don't have a router at home check thrift stores, craigslist, friends, hackerspaces and e-waste recycling centers. You can find one for free or at a nominal cost.

<p>this seems wonderful. does google translate this into english? i really wish i had grown up in the binary generation so that this wasn't an alien language with which you guys beat me about the purse strings! do any of you have any idea how further evolved you are?</p>
<p>In the screenshot of the code in Step #4 you show lines 21 &amp; 24 as:</p><blockquote>toggleLight(&quot;/cgi-bin/<strong>ledUp</strong>&quot;);<br>toggleLight(&quot;/cgi-bin/<strong>ledDown</strong>&quot;);</blockquote><p>respectively, but your instructions call for making two files called:</p><blockquote>/cgi-bin/<strong>ledOn</strong><br>/cgi-bin/<strong>ledOff</strong></blockquote><p>That will cause an obvious error upon execution if followed. I'm sure that most would've figured it out and changed the names one-way-or-another to match, but I thought you'd like to officially fix it, too.</p>
<p>Wow, really cool. I already have one of those routers that i previously modified into an access point but now it is just collecting dust. That means I only have to do half of the work here.</p>
excellent idea. there are a lot of possibilities with this.
<p>Thanks for your sharing, I try it.</p>
<p>I mentor robotics with the Boy Scouts. a few months ago we re-purposed an AP into an autonomous blimp. </p><p> Those old AP with DD-WRT are a great source for controllers. </p>
<p>I would like to see an instructable on that. </p>
<p>As would I :)</p>
<p>I wonder if you could connect a usb or ethernet hard drive and store stuff on it? Then you get wireless NAS.</p>
<p>I've done something like that on my WRT54GL v1.1. There were four free GPIO lines that I could use for USB. The thing doesn't work as intended, though: only one USB port is working, and it's a kernel issue, not hardware etc. The working USB port is used to connect a flash drive, so I could install more packages and I even tried to set up a small NFS share. I'm using OpenWRT Backfire with brcm-2.4 (or maybe it was brcm47xx?); newer images are too big for it, so I've got to stick with the old version, and I'm not so keen on cross-compiling a new kernel. I had dd-wrt on this device earlier, but the power supply died, bricked the router and I had to flash it via JTAG (to install the original firmware) and then tftp (to install openwrt).</p>
<p>Very cool, thank you for sharing!</p>
<p>PS. There's a 7805 soldered to the USB socket's enclosure, so that the whole thing is compact and the chip has decent cooling. The red &amp; blue ribbon supplies 12VDC. The other one is for GPIO.</p>
<p>Awesome! Thanks for sharing!</p>
<p>Good one. I am going to make it.</p>
<p>Very very good!</p>
Very interesting idea. Love the thought of repurposing something that would otherwise be thrown away
<p>This seems so interesting, but h&eacute;las ! it's so far from an instructabul. Just the beginning, nothing to close the deal. I'm sorry.</p>
<p>umm interesting.</p>

About This Instructable


1,534 favorites


Bio: Sharing knowledge and ideas. Constantly learning!
More by danasf: Intel Edison and Addressable LEDs Internet of Ducks Lighting In A Bottle
Add instructable to: