Warning! Extremely nerdy stuff ahead!
Back in February, when the idea of the Cloak first emerged, I had some doubts if it was at all possible to run Tor on a small embedded router. The only way to be certain was to actually try it out.
The first attempt was actually build on a prototype board from a Chinese company called Gainstrong. Their GS Oolite V1 module had some reasonable specifications:
I decided to give up on the Oolite module since Gainstrong refuse to supply any documentation whatsoever – no schematics. The primary outcome of those experiments was that I got a patch for Oolite included in the OpenWrt mainstream (see wiki page here, patch is here, that is now included in mainstream).
Luckily at that time I had gotten in touch with Edwin from Dragino in Shenzhen and he send me a couple of his “hacking friendly” and extremely well documented Dragino devices:
The Dragino is a small wireless router based on Atheros AR9331 and containing 16 MB of Flash memory and 64 MB of RAM.
I managed to build an OpenWrt image for the Dragino containing Tor and started messing around with firewall rules. Somewhat to my surprise it actually worked quite brilliantly. The Tor software is a bit of a memory hog, however, with a bit of tweaking it turned out to be possible to run Tor on the Dragino, with plenty of both flash storage and memory available.
I managed to make 4-5 of these devices (+ load a similar image on a bunch of TP-Link WDR4300’s – which has got similar specs) to do some live testing (I can add that they have behaved well the past half a year or so).
At this point in time, commercial reality forced us to turn our attention to some other projects. These projects were all “Internet of Things” related.
The first module we designed was an Atheros processor combined with an A micro controller:
The left hand side of this module is actually a “Cloak” (with an added Micro-SD slot). USB Port, Two Ethernet, WiFi, 16 MB of Flash and 64 MB of RAM (and a rather ugly wire replacing a forgotten trace).
Based on the above design, we decided to make modular prototype friendly Internet of Things prototyping and production module – which became known as the MicroThing.
The above image show the first version of PCB’s for 3 different modules. The yellow PCB is the uThing (MicroThing), the red PCB is the pThing (PowerThing, a hugely efficient power supply) and the purple PCB is a “not meant for production” Ethernet module that turned out to be necessary after I repeatedly screwed up the bootloader of the uThing.
You may ask if we’re colour blind. The purple PCB we ordered from OSH Park, and they always deliver boards in that colour. The uThing and the pThing, well, basically, since this was prototypes, we wanted to experiment with different solder masks, to see what worked best. A result of that experiment is that the red PCB is absolutely horrible since it is very hard to read the silk screen, while the yellow PCB with black silk screen works quite well.
The MicroThing and the PowerThing was a bit too complex for us to bother with hand soldering, so they were actually ordered fully machine assembled, while the ethernet module I hand soldered (I wish I still had the eyesight I had when I was 20 – SMD components are TINY). The first prototypes were actually working way above expectations. If you look closely on the above image, you can see that a coil has been replaced on the power supply, but that was actually the main issue we had (and proved the reason why one make prototypes such as this).
The interesting thing in relation to the Cloak, and the reason why I bring all this up here is that these modules fitting together actually is a clumsy version of our intended final hardware for the Cloak.
The above image actually show a running prototype of the final Cloak (it is powered but Ethernet and antenna is not attached) apart from the Micro-SD which won’t be needed or included in the Cloak.
Based on the the above prototypes, we have designed the following preliminary PCB for the Cloak:
The design is still preliminary pending coordination with the enclosure design which is a work in progress.
One thing that has been quite essential for us is that the uThing is functionally identical to the Dragino, which means that the same binary images can be used on the Dragino as well as the uThing and the final Cloak hardware.