I/O Extender Board And Case For A Cheap WiFi Router

This 3d printed case houses the already small [TP-Link TL-WR703N] but also makes room for a custom expansion board. The expansion board is designed to make the device more hacker friendly, and who doesn’t need a nice case to hold it?

Since the router board already has a USB port (intended for use with USB 3G modems) the add-on acts as a USB hub. The stock USB connector is replaced by a pin header which mates with a DIL socket on the underside of the expansion board. Through the use of an FTDI chip the expander offers three USB ports and a 2×10 pin header to break out the GPIO pins from the router’s processor. Only two USB ports are visible in the image above. That’s because the third is recessed, and an opening has not been added to the enclosure. This struck us as odd until we read that the port is meant to be used with a low-profile thumb drive, essentially adding internal storage for the device.

[Thanks buZz]

23 thoughts on “I/O Extender Board And Case For A Cheap WiFi Router

    1. its for when your reprogramming/andor programming a router to do things other then “split internet” … those boxes are actually nice little computers without a display ect.

      but without the “GPIO” pins, they are essentially only usable as “internet thingys” like miniature webservers ect.

      when you add on the GPIO, you now have a uC like arduino(AVR) or PIC… BUT WITH BUILT IN WEB INTERFACE! :)

      GPIO in case you didnt know just means “GeneralPurposeInputOutput”, exactly the pins you program and control on your AVR(arduino) or PIC or ARM or 8051 ect ect ect

      so to summarize, it means you can take a free (andor used/donated) router and turn it into an arduino with built in EthernetShield and built in USBhost as in this case.

  1. Very nice compact, professional-looking layout! With the lack of a solid ground plane underneath all those USB traces I wouldn’t bet on it being able to consistently do high-speed transfers, but for something like this that doesn’t seem like a huge deal (as plenty of useful peripherals are full-speed or low-speed anyways…).

  2. I wonder where they sourced the usb hub chip–I’ve been wanting to do something similar, but none of the usual suspects (mouser, digikey, newark) seem to have a plain ol’ usb hub chip in a human-solderable package for the pennies I’m sure they cost.

    Does anyone know of a source where I might find them?

    1. Doubtful, the flash is most likely built right into the Atheros SOC itself, so there’s no way to simply replace the chip other than replacing the entire SOC (which would be pretty much impossible to do by hand).

      1. The flash is a normal 8 pin SOIC. It’s easy to remove and replace (in terms of hardware), but you’ll have to pre-load a u-boot that has support for your replacement device. I am unaware of anyone who has successfully DIYed this on the wr703n, but would be very interested in any reports!

  3. Hi All,

    I am the designer of the PCB. It was done quickly over a few days with minimal prototyping, so isn’t ideal in a couple of respects, but serves the original purpose. It was all a bit of fun to see how it would turn out.

    The USB signals are not properly routed as differential pairs (not supported in Eagle 5.11, so approximated by eye) and I wanted to keep the cost low so it is only a 2 layer PCB. That said, I’ve copied hundreds of MB between two USB 2.0 sticks on the hub (hi-speed) without error. The traces that run under the crystal are only full-speed, but not ideal.

    The USB chips were sourced from Aliexpress. But I prototyped with chips from cheap hubs from Dealextreme – which mostly use this exact chip. The datasheet is pretty poor, so worth examining a few designs using it to see what to do (or not to do in the case of one really unreliable hub).

    It is pretty easy to change the SOIC flash on the router, but you need the right programmer as well. Compatible 8MB chips can be had on Aliexpress, but I don’t think you can get 16MB in 8 pin wide SOIC. In any case, I think you are better sticking a small USB flash drive in and using extroot or similar.

    Regarding the description above, the FTDI chip gives you 2 serial ports, and two 4-bit GPIO’s. It doesn’t actually break out any GPIO’s from the router processor – it is all USB based, and can be used with any USB host. One of the serial ports can run in MPSSE mode which is commonly used for JTAG adapters, but can also support other protocols like I2C and SPI with a bit of work.


    1. Curious why you chose a hard to source usb hub chip when digikey shows a bunch of 4 port hub chips in stock in the $2 range for 1s quantities? Seriously though, love the idea. Also, why break out only one GPIO set but both serial ports?

      1. Thanks all for your comments.

        I chose that hub chip mostly because we had a bunch of really cheap hubs that all seemed to use the chip with very few support components, but also the same chip had been used by Chumby and FTDI (so it wasn’t complete rubbish). I then found them pretty cheap on AliExpress.

        Being in Australia, Digikey availability isn’t a big criteria, although I guess it is nice for open designs and known as a trusted supplier. As harviecz mentioned, they are also easy to source on low volume by buying cheap usb hubs.

        A goal was to design the board in that form factor (just because :-) so I had limited space for I/O. The two serial ports are broken out for comms with things like GPS, Arduino, etc, but also for JTAG (CPLD/FPGA). We had hoped to break out the other 8 GPIO’s, but I just couldn’t fit them.

        It really is meant as a general purpose router expander, but in a convenient form factor to suit that particular router. Of course, feel free to take the design and use it as a basis for your own project (CC-BY-SA).

        My initial tests in reading/writing the router flash chips was a bit of a flop due to the specific chips required. We are awaiting some 8MB flash chips and various programmers, and will be testing those very soon and reporting our results. Some people on OpenWRT forums report success, but without much detail on the initial programming.


    1. Jim,
      In “normal” UART mode of the FTDI chip, several of the GPIO pins are just Port A UART control pins. The others are FTDI specific control signals. See the list at http://www.seeedstudio.com/depot/TPLink-WR703N-Expander-p-1683.html
      For more advanced control, you need to read the FTDI MPSSE application notes – and the code will be dependant on your programming language. Python bindings exist via libftdi and llibmpsse, but Python won’t fit on a standard OpenWRT install (but can be on an additional flash drive connected via the hub on this PCB.)

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.