The Raspberry Pi

Almost everyone has heard of the Raspberry Pi now, well if you pay any attention to the news you will have.
The Raspberry Pi is a tiny computer, the approximate size of a credit card, designed to teach basic computer science to kids in schools. It consists of a 700MHz ARM11 CPU, VideoCore IV GPU, 256Mb RAM, HDMI, Ethernet, USB, and most important of all, costs as little as £30 (inc. shipping costs).
The price is really what sells it, it’s a surprisingly versatile machine, and at £30 it’s pretty much the cheapest computer you’ll find. I had to have one of course.
I waited a very long time for my Raspberry Pi. Having first hearing about it in 2011, it took up to March 2012 for it to be announced for sale. I got up at around 6:00AM, and attempted to purchase but it failed horribly. The demand was too large, and the websites were down throughout most of the day. Eventually in the evening I managed to register my interest for one, and proceeded to wait. It took until May for me to finally be able to order my Raspberry Pi, and then I had to wait another 5 weeks for it to arrive. Now June, it finally arrived on my doorstep.
Unboxing
For essentially a bare board, the device was well packaged and came with some nice informative materials:
Booting up
Having not received my new SD card (an 8GB Transcend Class 10), I put off properly testing the device, instead giving the Debian image a spin on a spare 2GB unbranded MicroSD. I was very surprised by its speed. It’s by no means fast, I feel it’s even slower than my old Pentium III, but it did fairly well, although I did come in with low expectations of its performance. Considering the X Window System wasn’t using GPU acceleration too and using a framebuffer instead, it wasn’t that horrible.
When I finally received my new SD card (the next day), I wrote Arch Linux ARM (my preferred Linux distribution) to it. You can get all of these images from the Raspberry Pi website. It booted up surprisingly fast and I then configured the typical configuration files (rc.conf, locale.gen, hosts, resolv.conf – see the beginner’s guide here), set up a new user, changed the root password, installed and configured sudo, and updated the entire system. This took a fairly long time, and when it was finished I installed the X Window System, LXDE, and some relatively light apps.
I recommend you read the Arch Linux news before updating, I know that I at least had to be careful updating the filesystem package.
Using Arch Linux was a fairly similar experience to the Debian image, performance wasn’t great, nor did I expect it to be. The only problems I encountered were an occasionally freezing mouse (I don’t know if this is a problem with the fact it is a wireless and thus more power hungry mouse, or the framebuffer being slow to keep up, or something else entirely) and also X crashing the entire system when being exited. Fortunately I won’t be using this as a desktop much, at least not directly.
The Raspberry Pi with everything connected
Improving performance
Arch Linux was just noticeably slower than Debian. As it turns out, Arch Linux has a different memory split to Debian, the 256Mb RAM was split evenly between the GPU and the CPU. Because I did not intend to use the GPU much at all, besides occasional desktop use, I changed the split to 32Mb memory for the GPU, and 224Mb memory for the CPU with this command:
$ sudo cp /boot/arm224_start.elf /boot/start.elf
And then rebooted.
Additionally the resolution wasn’t correct for my monitor, which meant adjusting the hdmi_mode value in /boot/config.txt to 16, which is 1080p at 60Hz. Other values for other resolutions are listed here. Note my config.txt also contains disable_overscan=1.
Conclusion
I like the Raspberry Pi. I think it’s excellent in its aim to teach computer science to children. For my use, it’s a nice little PC to just play around with. It is very versatile. Although desktop performance isn’t great, it works well as a web server. Having little electronics knowledge I’ve yet to do anything particularly low level with it such as using the GPIO pins, but the possibility is there. What I haven’t mentioned much in this post is that its VideoCore IV GPU is also very capable. It can play 1080p H.264 video at 40MBits/s, and has fast 3D capabilities which support OpenGL ES 2.0. Support for it in software is currently minimal, but installing a distribution such as XBMC provides a decent media centre experience. I would definitely recommend purchasing a Raspberry Pi, there’s just simply so much you can do with it. Be prepared to wait for it though!