‘Big Iron’ computing is fun. SANs, fiber, clusters and data centers are where my work days are spent – and I love the work!
At the same time, ever since I wire-wrapped my first z-80 based computer, I have been captivated by the potential of small, affordable, and modestly powered computing. In the past, single board computers based on mainstream (x86) technologies have been interesting, but were usually significantly more expensive than a hobbyist/tech tinkerer/product inventor (dreamer!) could afford.
More recently there has been a surge of interest and creation of a wide range of embedded or single board computing options – from both the commercial space and Open Source communities. Examples of these include the Parallax Basic Stamp, Beagle Board, Gumstix, and many more.
The two platforms that have most recently caught my imagination are the Arduino and the Raspberry PI. The Arduino has been extraordinarily successful at providing an affordable, flexible platform for embedded controllers and dedicated single function computational platforms. What has been missing, until recently, is the general computing equivalent of the Arduino.
When I first read about the Raspberry Pi – that in addition to their original goal of an affordable education platform, “Developing countries are interested in the Raspberry Pi as productivity devices in areas that simply can’t afford the power and hardware needed to run a traditional desktop PC; hospitals and museums have contacted us…” – I thought to myself, “That’s cool, but I think they are optimistic about the $35 price point.” Then, of course, I ordered one right away.
While waiting for its arrival I considered a number of options to put this little board to the test. Then while following the Twitter streams for a number of co-workers attending the Books In Browsers conference in San Francisco this year it hit me – I must get our Ibis Reader EPUB 3 browser-based book reader working on my Pi! I see this as an interesting blend of browser reading with an added potential for open access to information and the opportunities created by lower-cost computing.
Doing the installation seemed reasonably straightforward. There are several OSs available for the Pi and the ARM based Debian distribution called Raspbian is very similar to the environment that we use internally. I booted the os, installed a few of my favorite tools (screen, git, etc), installed dependencies, and started installing Ibis using our standard procedure. The first build failed rather quickly – mostly because of differences in locations of files in Raspbian compared to our normal environment. After small number of iterations finding these files and installing them I started what I thought would be ‘the’ build. After some time of looking like an easy and successful build, gcc barfed and the build failed with:
error: command 'gcc-4.6.3' failed with exit status 3"
This was new to me – and a quick search of a number of C programming books in our library and some web searches turned up nothing!
The Pi has 256MB of memory and it is divided roughly 40/60 between video buffer and system memory. I had intentionally tried the build out of the box with no memory reallocation and though gcc left no real information as to why it failed, I was sure that low memory was the cause. I reassigned as much RAM away from the video buffer as I could (I am only using terminal sessions after all) and tried again. The build failed again, gcc barfed again, but this time farther along. At this point I decided to give the Pi gobs of memory by attaching an 8GB USB stick so that it has 2GB swap and the remaining 6GB as /home. Here is what the configuration looks like on my desk:
The next build completed successfully! The capacity of this configuration is extremely modest. Two simultaneous sessions work, and the math isn’t optimistic about many more, but for $35 (plus a spare usb stick) and less than 1 watt of power, this is a true general purpose application which hints at the potential of small, affordable, and modestly powered computers.
I’m thinking the next experiment might be making a solar power system to run a cluster of these 24/7 around the clock. Or maybe a DIY S88/S95 compatible process control system with the Pi supervisory control units and Arduino loop-controllers. Or when my 16 core $99 Parallela board gets here I’ll make a solar powered Software Defined Radio, data telemetry, and epub serving robot to roam the seas.
Why not? :-)
Check these out: