Node-RED on WRTnode
TL;DR – it runs – now I need to put together some GPIO nodes.
Updated 5 Dec 2014 – In my original post Node-RED was so slow it was unusable. Using Michal Vondráček’s node-ws package fixed that.
Background
The WRTnode website features a screenshot of Node-RED, so I thought it would be fun to make it come true.
Node.js on WRTnode
My first hurdle was to get Node.js running on the WRTnode. Node has previously been run on OpenWRT, but that implementation was old and specifically targeted to a big endian MIPS architecture. Luckily Michal Vondráček published a working WRTnode implementation of Node.js the day before the ThinkMonk hack day.
Installation
I next struggled with installation, as ‘npm install –production’ was first running out of memory and then complaining about a lack of filesystem locks. Thankfully Node-RED creator Nick O’Leary was on hand to point out that I could simply copy an installed Node-RED from another system (like a VM on my laptop).
It runs
With Node.js installed (mostly onto a USB stick) and Node-RED also copied onto the USB stick I was able to start Node-RED, see it coming up on port 1880 and browse to it.
Having installed Michal’s node-ws and deleted the ws package from the Node-RED node_modules directory everything works:
Todo
I now need to get the GPIO mapped so that I can get Node-RED to blink some lights etc.
Too slow
Sadly running interpreted JavaScript on a low end MIPS CPU doesn’t result in a development environment that anybody would want to use. After half an hour or so of waiting I didn’t even see the tool palette load. I squashed any ideas of moving on to GPIO mapping for the WRTnode.
Can it be made to work?
Possibly – more of the code needs to be compiled to native MIPS. I don’t really know whether this is an issue that can only be addressed in the core V8 runtime, or whether some smart cross compilation of modules might help. Since Nick told me that most of the modules are now pure JavaScript, implying that the clever optimisation has moved from the edge to the core.
Filed under: WRTnode | 1 Comment
Tags: javascript, node, Node-RED, node.js, OpenWRT, WRTnode
Netflix have announced the release of the Message Security Layer protocol (MSL), which they describe as ‘A Modern Take on Securing Communication’. The project is available on github under the Apache 2.0 license, with implementations in Java and JavaScript. The high level goals of the protocol are to improve performance, be cross language, flexible and extensible, standards compatible and offer automatic error recovery.
Filed under: InfoQ news, security | Leave a Comment
Tags: MSL, Netflix, open source, PKI, SSL, tls
OpenWRT on TP-Link WR-703N
The TP-Link WR-703N is a nice, hackable pocket WiFi router. I’ve seen them put to some interesting purposes, but I didn’t own one until yesterday when the kind folk at QCon Shanghai gave me one. I’m not a fan of factory TP-Link firmware at the best of times, but more so when it defaults to Chinese, so it was time for another OpenWRT install (like I’ve done in the past with my TL-WR2543ND and TL-WR841N [1]).

First read the official OpenWRT Wiki article. The point of this post is to cover stuff that’s not presently covered in the Wiki.
I downloaded the stable Barrier Breaker release 14.07, r42625 factory update image and blundered through the Chinese language web UI to upload the new firmware and flash it.
By default the OpenWRT image comes up with no WiFi, and the ethernet port configured as LAN. This makes perfect sense from a security perspective, but not much sense for this particular device.
Turning on WiFi
Having connected to the ethernet port from my laptop I was able to access the web UI (and SSH). From there the WiFi can be set up by clicking on Network > WiFi.
Enable WiFi:
Provide a name for the network and make it part of the LAN:
Then turn on security and provide a key:
At this stage it’s time to connect to the WiFi interface – using the SSID and security key that were just configured. Unplug the ethernet cable to confirm that connectivity is still OK.
Ethernet == WAN
Next go to Network > Interfaces and Add new interface…
At this point the ethernet port (eth0) is on both the lan and wan, which isn’t good, so go back to the lan interface and edit out the eth0:
It should now be OK to plug the ethernet into a hotel outlet, your home network or whatever else you’re trying to WiFi enable with the mini router.
WiFi bridging (not working)
One of the things I love about WRTNode is the ability for it to route on from another WiFi access point, so with hotel WiFi you can sign in many devices but only need one registration. I’m told that it should be possible with the TL-WR703N, but I haven’t figured out how to do it. Putting in a similar block of config to what I use on WRTNode doesn’t seem to have the desired effect of creating an apcli0 device:
config wifi-iface
....
option ApCliEnable '1'
option ApCliSsid 'theSSID'
option ApCliAuthMode 'WPA2PSK'
option ApCliEncrypType 'AES'
option ApCliPassWord 'theWiFiKey'
Note
[1] Both of these routers support the Barrier Breaker release 14.07, r42625 firmware, though the relevant Wiki articles haven’t been updated to reflect that.
Filed under: howto, networking | 2 Comments
Tags: ethernet, lan, OpenWRT, TL-WR703N, TP-Link, wan, wifi, WR703N
CloudFlare have made SSL available to all free subscribers to its content delivery network (CDN) with Universal SSL. The move addresses both cost and complexity issues that have previously confronted web site and application owners wanting to deploy SSL. CloudFlare takes care of issuing a certificate at no cost to the end user, and enabling SSL becomes a selection from a dropdown menu.
Filed under: InfoQ news, security | Leave a Comment
Tags: CA, CDN, certificate, CloudFlare, security, SSL, tls, web
The WRTnode is a great new open source hardware dev board that takes the guts of a typical home router and makes it hackable. It’s more than an Arduino, less than a Raspberry Pi, and very network capable. WRTnode runs the OpenWRT Linux distribution, which I’ve used in the past on some of my home routers (to replace the awful firmware that gets shipped by OEMs).

One of its neat little party tricks is that it can be used to share a WiFi connection to multiple devices, so as I type I’m making use of that to share a hotel WiFi connection between my laptop, tablet and phone.
Developing for the WRTnode
The WRTnode Wiki has a section on OpenWRT Development with a classic HelloWorld application that’s build from source, packaged into an ipk file and installed. I struggled with this because copy/paste of the make files from the web to my text editor stripped out the tabs, and make needs those tabs otherwise you get ‘Make error: missing separator’.
Introducing wrthelp
The WRTnode has a number of commands to simplify getting online, which are covered in the Starting section of the Wiki. That’s fine if you can see the Wiki, but what if you need reminders of the commands so that you can get online (in order to see the Wiki)?
wrthelp is a simple command line tool (adapted from the helloworld example) that prints out the key instructions needed to get the WRTnode connected to a WiFi access point. The Github repo contains the source code and details for how to build, install and run.
Todo
Getting a working SDK was something of a pain, so I should probably Dockerise the one that I have to make it easily accessible.
I’m looking forward to doing some proper hacking with WRTnode (probably at the ThingMonk hack day.)
Update
1. The WRTnode SDK can be run in a Docker container using:
sudo docker run -it cpswan/wrtnodesdk
Take a look at the image and Dockerfile on Docker Hub and Github if you’re interested in the details.
Filed under: networking, WRTnode | 1 Comment
Tags: helloworld, OpenWRT, SDK, wrthelp, WRTnode
Docker Networking
Here’s my presentation from container.camp:
If you’re interested in a deeper dive then take a look at the Container Networking Tutorial I did for ONUG.
Filed under: Docker, networking, presentation | 2 Comments
Tags: Docker, Flocker, network, networking, ODCA, OpenVSwitch, OVS, pipework, vxlan, Weave
Weave is an overlay networking system for Docker containers. Whilst Docker can already link containers on a single host, Weave provides connectivity for containers that are spread across multiple hosts. It has been released under the Apache 2 open source license by Zettio, a new company targeting ‘apps for the zettabyte era’ founded by RabbitMQ creators Alexis Richardson and Matthias Radestock.
Filed under: Docker, InfoQ news, networking | Leave a Comment
Tags: Docker, InfoQ, networking, SDN, Weave









