TL-WR703N Serial Port

The TL-WR703N is a handy bit of electronics for a hacker to have. It is an extremely compact wireless router that ticks all the boxes:

* Supported by OpenWrt.
* Cheap and easy to buy ($20 USD from eBay).
* Has a USB host.
* With a little work, it has a serial port.
* Small form factor.

What follows is a simple hack to add a serial port to your WR703N device. In essence, you just need to solder a couple of wires to some pads onto its PCB. I’ve decided to elaborate and show you how to do this properly.

This instructable is aimed for electronics and robotics enthusiasts. Exposing the serial port is only useful if you plan to custom firmware (i.e., OpenWrt on it) and do some hacking. This mod will void your router's warrant and I take no responsibility if something goes wrong!

Step 1:

Open up the device’s case. It is cunningly snap-locked together and can be tricky to prise apart. The latches are in the corners as shown below. I used a couple of small flat-head screw drivers for this task.

Step 2:

Remove the blade from your hobby knife and put in the drill bit. Drill two holes, 0.1” apart, beside two existing holes by the LED. I found that manually drilling was quite easy with a sharp drill bit. The existing holes were for a through-hole LED, but we’ll repurpose them. Remove the solder from the existing holes and confirm that the 0.1” header fits.

Step 3:

Put the blade back into the hobby knife and carefully cut a couple of pads from the PCB’s ground pad as pictured. Again, a sharp blade really helps here. I suggest that you scratch away enough silkscreen prior to cutting the pads.

Using the knife cut the traces from the LED to the existing plated through holes.

Slowly and carefully enlarge one of the holes you just drilled by twirling the tip of the blade in it. Leave the one that designated for ground alone! You’ll need to enlarge the opening especially on the top layer of the PCB. The router’s PCB is multi-layered, so you want to make sure the newly made through hole pads don’t short to ground. Check this by dry-fitting the header and checking whether there is any resistance between the pads and ground with your DMM. Solder the header and confirm that the only pin that is shorted to ground is the one that is meant to be!

Step 4:

Grind a small slot in the PCB for the wires to go into. This is to prevent the wires being accidently guillotined.

Tin the serial port pads which you are going to bring out. Strip the wire-wrap wire and tin it as well. Now carefully solder the wires to the pads. After doing this fasten the wire to the PCB with hot melt glue as I have done.

Step 5:

Solder the other ends of the wires to the header pin ends. Also solder the power wire as shown (red one in diagram).

You’re almost done! Do one last resistance check with the DMM. Now power-up the device and with a bit of luck you’ll get a serial based console from the router. I’ll tell you how to re-purpose that for other things in a subsequent tutorial.

ezar, after I've put OpenWrt on it I disable the console output on this port. To do this, edit the file "/etc/inittab" and comment out the line "ttyATH0::askfirst: ...". Also edit the file "/etc/sysctl.conf" and add the line "kernel.sysrq = 0". Note that the initial boot messages still come out of this port. I guess one could make a custom image and direct this output to a different (/dev/null ?) to avoid this problem?

Most of my robotics-related projects usually involve connecting low level electronics (microcontrollers controlling motors and reading encoders, rangefinders etc) with a computer. This is relatively straight forward using a serial port. Because I put OpenWrt on the router, I can write software to run on the router and talk to things like an Arduino. I have also used the serial port to get the router to log data from a GPS module, and also streamed the serial back (via the ser2net serial to network daemon) to a host computer so I can control my robots economically via wifi.