There’s a new toy about to be available to anyone who wants it (and can follow my slightly-lacking-in-some-areas drawings and assembly instructions).
It’s called the DarkPi:Trio, and it’s the result of several years of thought and effort.
Today’s release is prompted by my impending homelessness and a desire to make information free for anyone.
Please pirate my design and make it better.
(or, support my efforts to fix the world)
Want to see what it’s running on the backend?
Go take a look at the dev branch of functions.sh, it’s all going in there.
Three raspberry pi systems connect to a USB 3.1 hub, a Hex router from Mikrotik, and a long range mesh networking and comms array. A trio of vape battery cells and a half dozen supercapacitors apiece ensure that the device can gracefully deal with brownouts and external power loss.
The three physical devices perform cross-checks and aggressively re-deploy (using a script-assembled SD card image written to the “OS” portion of the system partition(s)) if any weirdness or corruption is detected. As long as at least one of the three systems is online, the user experience doesn’t degrade under light to medium load.
The raspi units (and modular bits, eg the USB hub) are intended to be hot-swappable, but I encourage you to avoid unplanned power loss for the sake of your SD cards.
The DP:T is just a computer core.
But it’s a computer core for a reason.
Stay tuned for more updates.
Another part of the DarkPi project has fallen into place with the announcement of the Multipath TCP protocol for the Linux kernal.
The protocol allows the transfer of information over multiple connections. This will enable the DarkPi to do two things. First, it allows for better resource allocation. On a distributed network like that established between DarkPi nodes, network bandwidth is at a premium. Secondly, it will theoretically allow the end user’s connection to be split between multiple exit nodes, increasing the difficulty of tracking an end user.
I made a comment more than a month ago about how I had acquired a wifi dongle and would be testing the wifi capabilities of my Raspberry Pi. That didn’t exactly work out like I had planned.
The wifi adapter I obtained is the Linksys Compact Wireless-G USB Adapter with SpeedBooster (model number WUSB54GSC). While working through SirLagz’s tutorial on how to turn your Raspberry Pi into an access point, I ran into a few issues. Namely, the wifi adapter that I was (attempting) to use has some driver issues. I worked at it for a few hours, but didn’t make any significant progress. I’ve decided to not pursue this avenue, and instead purchase a long range wifi antenna of the sort I’ve mentioned in the past.
I’m not sure which one I’ll end up getting (although I’m leaning towards one of the Ubiquiti Wifistations), but when I decide I’ll post it here. I have a bit of cash from Christmas that I’ll be using, so while my budget isn’t large, it is larger than it was before.
In other news, I’ve run into a bit of tech that may both make the DarkPi more interesting and more feasible. It’s called “FreedomPop” (Forbes was running this article on it), and it’s a service that makes monthly internet (nearly) free. Put down a deposit, and you can get 500mb of 4g wireless access. Share that with others, and you can get free upgrades.
I haven’t tested it yet, but my thought is this: Instead of trying to make the DarkPi connect to the internet via any nearby open access points, why not use one of the USB dongles produced by FreedomPop? Ideally, each DarkPi would have one of these. A single DarkPi would be forced to directly connect to the internet through the dongle. But bill_mcgonigle mentioned in a comment on SlashDot that it might be possible to spread out the packets over all available connections. If this is possible, any request on a given node network could be distributed over a random number of nearby nodes, reducing both the bandwidth on any specific node, and protecting the anonymity of anyone on the network. I’m going to do a bit of digging to see if FreedomPop supports linux, or at least provides drivers usable on linux.
I ordered a Raspberry Pi a bit ago, and it arrived just this last week
After resolving an issue with networking (protip: make sure you use an undamaged CAT5 cable), I installed and tested a few utilities, and basically tried to see how much the hardware could take. Despite the fact that the Pi is only running at 800mhz (with 256mb of RAM) I was even able to briefly host a Minecraft server. The next step in the development process will be setting up and testing several different intrusion detection systems.
With the direction I’m taking this project, the GUI is not going to be used, so I am currently using something called Raspbian Server Edition 2.1 (RSE), which is a stripped down version of the Raspbian OS. The current version of RSE has an install size of just over 200mb.
The real gem, however, was the blog written by SirLagz, the maintainer of RSE, and specifically his post on how to turn your Raspberry Pi into an access point. While it’s not directly applicable to the current stage of development, once I start testing wireless hardware for the Pi, the walkthrough he provides will be a perfect starting point.
A day or two ago, a comment was posted linking to a project very similar to this one. It’s called ‘Project Byzantium‘, and it’s aiming to create a bootable OS that allows easy creation of a wireless mesh network.
While I intend to continue moving forward with my research, I will be taking a hard look at what Byzantium has put together. It may be more productive for me to contribute to the live OS, and then customize and automate it as necessary to work on the hardware I have in mind, rather than re-invent the wheel.
Just to be clear, unless something drastic happens, I will not be merging the DarkPi project with Project Byzantium. My focus is on the hardware and autonomy possibilities of a mesh network of this kind.