Carambola 2 Images




Yippee, I finally received a batch of Carambola2s in the mail today.  I had a couple that were ready for me to pick up a couple of weeks ago but didn’t get it until Saturday…

So similar to the TL-WR703N I’ve prepared a standard image with most of the hacker stuff baked in for people to try out with a limited repository (not as comprehensive as the TL-WR703N one and definitely not compared to the 8devices/OpenWrt ones) compiled and available online.

I’ve also build the Image Builder again for people to remix and make their own images without doing the full OpenWrt build.

The following have been tried and seem to work :

  • Python
  • Python-libusb1
  • Pyserial
  • Python HTTP Server
  • USB Serial (ACM)
  • WiFi, Eth0, Eth1, Buttons

Don’t expect anything not to work, but it was worth noting :)

Someone really should donate me a 3G modem to test with…

May Day Uploads – TL-WR703N, TL-WR720N & TL-MR3020 images + Secret Sauce

Uploaded a bunch of images for the TL-WR703N, TL-WR720N & TL-MR3020 on May 1st.

Based on OpenWRT r36503, it has the new 3.8.10 kernel as well as the new LuCi theme.  Due to the slowly expanding size of the kernel and the packages, I had to drop 3G out from the ‘standard’ image and made a separate ‘3G’ image.  All images are very barely tested though so that’s why I’m not updating into the main project page.

The benefit of these images is that this time I’ve included the image builder as well as helper scripts that should give people an idea on how to quickly roll their own images and still have access to a set of online packages.

Lots of comments asking me how I compile USBIP and make it work with the outdated Windows client, so I’ve included all the extra files I use on-top of the OpenWRT source in a package.  Yup I was too lazy to set up a github or similar for it 😛  It basically is 3 packages and a couple of modified source files…

All files located here :-

TP-Link TL-WR720N Test Images (OpenWRT)

I’ve uploaded two test images based on OpenWRT r35905 (Linux 3.8.2) for the TL-WR720N here :-

Both Ethernet and WiFi appear to work as well as the mode switch.  Both images are similar to the WR703N images but with less things (mjpg-streamer ser2net dropped).  I had to cut down as it appears the newer kernel is significantly larger [either that or I did something wrong].

I will upload the repository and packages tomorrow if I don’t find a better way to squeeze more goodies in.

How to install OpenWRT on a TL-WR703N that came with DD-WRT


I have only done this procedure once and sharing because of the lack of information on the web on how to do this.

Some of the sellers of the TL-WR703N are shipping the routers with DD-WRT pre-installed – some with a Chinese interface, some with an English interface.

Regardless, you need telnet or SSH access to the router as upgrading via the web interface will not work.

Step 1 :

Get the OpenWRT image onto the router.

root@DD-WRT:/tmp# wget
Connecting to (
openwrt-ar71xx-gener 100% |*******************************| 3840k 0:00:00 ETA

Other methods can be found here :-

Step 2 :

The TRICK is that the partition names are different between OpenWRT and DD-WRT.  Whereas all OpenWRT instructions will tell you to write to the ‘firmware‘ partition, this does not exist on DD-WRT and you have to use the ‘linux‘ partition instead.  Use the ‘mtd’ command as per the example below to write the OpenWRT image onto the router.  Note the ‘-r’ argument will reboot the router as soon as the flash is complete.  (As usual, do not power off or disconnect during the flashing!).

root@DD-WRT:/tmp# mtd -r write openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-factory.bin linux
Unlocking linux ...
Writing from openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-factory.bin to linux ... [e]
Connection closed by foreign host.

TL-WR703N Example Project 4 : Webcam Streaming

Connecting a webcam and using the router to stream video around the place should be one of the easiest things to do. A bit too easy in that I neglected to provide simple instructions on how to set it up.

mjpg-streamer and the necessary drivers are included in the standard images I provide on the TP-Link TL-WR703N project page.

Preliminary steps :-

  1. Get a router, load it with the standard image.
  2. Set-up wireless or any other networking changes.  See an example here.
  3. Plug in the camera

Now there are two ways to get mjpg-streamer to auto-start, there is an easy way and an elegant way.

  • Easy way : Just add the command to the auto start script using LuCi…
  • Elegant way : Edit the configuration files /etc/init.d/mjpg-streamer and /etc/config/mjpg-streamer

I prefer the easy way you are less likely to screw it up.  First we should check that the camera works well with mjpg-streamer…

  1. Telnet/SSH into the router
  2. Run the following command :

    mjpg_streamer -i “./ -n -r VGA -f 6 -d /dev/video0” -o “./ -p 8080 -n”

    This command uses VGA (640×480) resolution “-r VGA” at 6 frames per second “-f 6”.

  3. If that doesn’t work and an error appears, it most likely means your camera doesn’t support JPEG images.  If so, try the following command instead :

    mjpg_streamer -i “./ -n -q 60 -r QVGA -f 6 -d /dev/video0” -o “./ -p 8080 -n”

    This command forces mjpg-streamer to convert into raw into JPEG at (-q) quality 60, at resolution (-r) QVGA, this can be “160×120” for example.  The frame rate is specified by the -f (6).  This method is MUUUUUUUUCH more CPU intensive and you might have to tweak the resolution and frame rate down.

  4. Using a device connected to the router, use a web browser (e.g. Chrome) to connect to the following to get a live view:

    You can also get a single snapshot at:

  5. If you need to play around with the commands, use CTRL-C to kill mjpg-streamer and try again.  Avoid high resolutions (e.g. 1920×1080) as that will just crash the router.  I used 640×480 at 25 frames per second relatively happily on a JPEG enabled camera (e.g. Logitech/Microsoft ones, not the cheap no brand ones).
  6. Once you have a workable set-up, copy the command you have and put it into the local start-up.  Append the command line with an ampersand “&” so it runs in the background.  e.g.

    mjpg_streamer -i “./ -n -r VGA -f 6 -d /dev/video0” -o “./ -p 8080 -n” &

    Hint – In Luci, select the Systems tab, then select Startup, scroll down to the Local Startup section and add your command to the box and press save and apply.

Enjoy? :)

Project sneak peek and procrastination

This is a project sneak peek at the LED lamp I am making.  This post is really an excuse to post some random pics and videos, and a way for me to procrastinate and not actually finish the darn thing.

My eyes! My not look at LED array with remaining eye...
My eyes! My eyes…do not look at LED array with remaining eye…

The project is a LED lamp that will be mounted on the wall.  It comprises of 24 LED Strips of 30 LEDs each of which has an integrated WS2811 controller chip that enables individual addressing and 24bit RGB colour.  The strips are driven by a Teensy 3.0, which then subsequently interfaces with a controller board that will do most of the processing.  I hope to have it run games (e.g. Tetris) as well as turn on automatically at night, display the time and temperature and do some other random stuff.

Below is a video testing the display with Tetris…I haven’t drawn the border etc…and the pixels look fugly because it isn’t finished :)

The test setup is so crude, I just used scrap washi paper and dumped it directly on-top of the LED array.

Test set-up with scrap washi paper and power supply
Test set-up with scrap washi paper and power supply

I’m still debating on what I should use as a controller for the games.  Waiting on a “DDR mat” from eBay to arrive so I could test that, but I would appreciate any novel ideas people can suggest!

Some more pics after the break :)

Continue reading “Project sneak peek and procrastination”

TL-WR703N Example Project 3 : Wireless 3D printing (or 2D printing or just simply wireless USB)

So it has taken me over three months of procrastination of building a USBIP image that will let me connect to my 3D printer wirelessly to actually writing up a tutorial to share it with the world.  This tutorial provides the basics of setting up a fresh TP-Link TL-WR703N image to wirelessly connect a Windows machine to a USB device attached to the router.  I am using primarily using this to connect to my pp3dp Up! printer (only reason this is for Windows…), but I have also tested this method on a USB Logitech webcam and a USB flash disk.

Again, a disclosure is that I am an affiliate to 3D printing systems and that if you’re interested in buying an Up! Plus or Up! Mini and you’re in Australia/New Zealand you should do it via this link 😛

Continue reading “TL-WR703N Example Project 3 : Wireless 3D printing (or 2D printing or just simply wireless USB)”

Squeeze! Reducing toothpaste waste…

Self explanatory photo post… or just an example of over-exposed phone photography…

Colgate – All used up…
I’ve really used up the toothpaste now!

I’m printing a bunch of these to hand out as trinkets at the local hackerspace.  Demonstrates how a 3D printer can be used to make stuff, and handy enough for everyone to be able to find a use for it!

RoboDino Trinket Production :)
RoboDino Trinkets

Will be uploading this to Thingiverse in a tick…

TL-WR703N Example Project 2 : Cute Exterminator (Remote Control Toy)

The Cute Exterminator is another demonstration project using the TP-Link TL-WR703N router to create a WiFi enabled remote control toy.  It shows how the router can be used to control servos with minimal programming other than with html/javascript and a single line of shell script.

Again (well I repeat this a lot), not a comprehensive write up because it was a quick a dirty build but read on for the short description and a visual walk-through.

Continue reading “TL-WR703N Example Project 2 : Cute Exterminator (Remote Control Toy)”