Tiny computers are taking over

I’ve been using and working with x86 based PCs for a little over 21 years now.

I started off with MS-DOS 3.3 and Windows 3.0 on a 286.  The 40MB hard drive I had in there was so huge it had to be partitioned across two drive letters as the maximum partition size that MS-DOS 3.3 could see was a whopping 32MB.

I made the natural progression to MS-DOS 6.22 and Windows For Workgroups 3.11, then Windows 95, at which point I learned about networking, and sometime in 1996 I discovered Linux.

Throughout the years, as well as the main machines I’ve done my work on (which, through necessity, have always had to be Windows), I’ve also always had at least one or two machines dedicated to performing specific tasks – usually with Linux.

Sometimes it was simple as just being a networked file server (or “NAS” as we call them these days) that I could access from all my Windows machines, sometimes it was an web server for developing web software and databases, one was a webcam server, with a bunch of parallel port webcams (boy, that was a while ago) relayed through a “proper server” on the Interwebs, and there have been others tasked with various endeavours I’ve needed to accomplish.

Things were ticking along nicely, until a couple of years ago when I discovered the Arduino, and it blew my mind.

If you’ve never heard of the Arduino before, it is “an open source electronics prototyping platform” in the words of the Arduino creators themselves.  What does that mean in real terms?  Well, essentially it’s a credit card sized computer.

It’s very limited in comparison to the desktops and laptops we use on a daily basis, but it’s fantastic for interfacing with other hardware – such as light, temperature or humidity sensors, GPS units, motors, or whatever you like really.

I hadn’t done any electronics since I was in high school, so it seemed like a good excuse to get back into it.

It’s an amazing bit of kit, especially for what it costs (The Uno costs around £22, and the Leonardo can be had for as low as £14 if you shop around), but as I said, it’s quite limited.

While there are some differences between the various models, the Uno, the board I prefer to use, has a 16Mhz Atmel AVR microprocessor, with 32KB of flash memory and 8KB of RAM.  You’re certainly not going to be running World of Warcraft on something like this.

Move on another year or so, and I heard of something called the Raspberry Pi.  Strange name, and I ignored it for a while (especially given that every time I tried to find somewhere to buy one, everywhere was sold out).  I was happy experimenting with my Arduino and getting some practical use out of it (more on that in future posts).

Since initially hearing about the Raspberry Pi, however, I started to hear it being mentioned more and more, and did a little digging.  It’s also a credit card sized mini computer, but wait a minute, what’s this?

Holy cow!  This thing runs Linux!  AMAZING!

With a 700Mhz ARM processor (which can be overclocked) and 512MB RAM (for the second revision Model B), at a price of under £30, I was rather impressed.  It also has a built in 10/100MB NIC, HDMI output, and a couple of USB ports.

As impressive as it was next to the Arduino, I still didn’t really have a need for one.  Sure, it’d be a nice little toy to play with, but if I bought every neat little gadget and toy I saw I don’t think I’d be able to afford to eat.

Recently, though, I finally found a need for one.  I’m in charge of certain technological aspects of an event in a couple of months.  The way my tasks have been performed in previous years has been somewhat inconsistent (as it’s a different host and a different crew running it each year).

Last year was the smoothest I’ve seen this event run for as long as I’ve been going.  This year, it’s our turn, so this particular part is my job.  Having spoken with the fella who did it last year, and listening to his method and process, I determined that it was far too much work and effort, and way too much wasted paper.

Essentially, I need to be able to input data during this event, return an appropriately formatted page to be printed out on the spot.  Last year, every possible combination of data that could be entered was entered and printed out long before the event, just so that they had every base covered when things happened.  It took a number of days of prep work to figure all that lot out.

As I said, far too much work, and far too much wasted paper.  “Why not write a PHP script?” I thought to myself.  So, that’s what I did.  The problem is, it’s on my web server, on the Internet, and there’s no guarantee of Internet access at the event – foiling my plan, and I don’t have a spare “real PC” that I can just stick Linux on and use (and I didn’t want to have to mess around creating a Live CD).

So, in steps the Raspberry Pi, a £30 web server that will easily meet the demands of the evening.  Bought and paid for, it arrived a couple of days later.  Installing Linux (Raspbian) was a breeze, as was setting up Apache, PHP and MySQL (which has now been replaced with MariaDB – not that it actually needs a database for the scripts I’m using at the event).

I copied the pages from my live website to the Pi, and things ran extremely smoothly.  Certainly well enough for the event (although I will have backup solutions standing by, just in case).

The great thing about the Pi is that it boots and does everything on an SD card.  Thanks to photography, I have loads of those.  So, I have one (8GB) setup ready for the event, and on the night it’ll just be a case of slotting it in, powering it up, and it all just working.  Another one (also 8GB) is setup right now as an XBMC media centre hooked up to the TV in the bedroom, accessing movies and TV shows stored on my Windows PC across WiFi.  A final SD card (32GB) is setup as my own personal web development server for an MVC I’m working on.

Having seen how well XBMC runs on the Pi though, I’m finding myself in the position of needing to either get more (we have another TV in the living room, and I still need my web development server), or seek out similar such devices (ideally with a little more power).

Now I find myself Googling all kinds of things, and ran across a somewhat brilliant piece of kit called a CubieBoard.  This is where I became seriously impressed.

One of the problems with the Pi is the way it handles power.  At its maximum, the Pi can only draw 700mA current from a 5v source (a USB charger).  No matter what the charger is capable of, the Pi will never draw more than 700mA.  The Pi itself uses about half of that when idling, even if nothing else but power is plugged into it.  Once you add HDMI and a USB dongle for your WiFi, that doesn’t really leave a lot of power for an external hard drive (unless you want to start messing around with powered hubs or USB hard drives that can utilise an external power source).

As the Pi had a huge advantage over the Arduino, this is where the CubieBoard offered me an advantage over the Pi.

As well as the 10/100MB NIC, 2 USB ports and HDMI output offered by the Pi, the CubieBoard has a 1Ghz processor, with 2GB RAM, and 4GB NAND flash storage.  It also offers, and this is the important bit, a SATA2 socket to which you can connect a 2.5″ hard drive or SSD.

The CubieBoard is also capable of drawing enough current to power it, even if you do have dongles plugged in for WiFi and wireless keyboard & mouse.

I managed to win one of these for an absolute steal on eBay (well below half the regular retail cost), and am currently awaiting for it to arrive.

The Pi still has the advantage when it comes to hardware accelerated graphics, but for raw software power, the CubieBoard definitely seems to take the prize (I guess I’ve found my new web server).

As well as Linux, the CubieBoard also runs Android (surprsingly, an OS I’m not familiar with in the least).  While I’m absolutely not an Apple fanboy (before my iPhone, the last Apple product I owned was an Apple IIe – circa 1983), I do like my iPhones and iPad (and they make great remote controls for XBMC).

There is also a CubieBoard2, which is essentially identical to the CubieBoard, except with a different processor.  This one is a dual core 1Ghz.

I have a feeling, that the built in WiFi, Bluetooth, 10/100/1000MB wired networking, VGA socket, 2GB RAM and 8GB NAND flash of the CubieBoard3 (AKA “CubieTruck“) will draw me in rather soon.

Well, I’m sure I’ll find a use for it.

If you want to learn about the Arduino, see some of the things it’s capable of, catch up on your electronics, and learn how to make the Arduino “do stuff”, you can do a lot worse than visiting Jeremy Blum‘s website.  His site is a fantastic resource for Arduino (as well as other things), and he has an excellent set of tutorial videos up on YouTube.

If you want to learn more about the Raspberry Pi, see their website, and Google.  Same goes for the CubieBoards.

I’ll pop up more useful links to resources for all three boards in other posts as I get to them.