The Pi Has Landed
It arrived. After quite some delay my Model B Raspberry Pi has arrived.
The Raspberry Pi is powered by the Broadcom BCM2835 SoC which includes an ARM1176JZF-S core running at 700Mhz, 256MB SDRAM and a Videocore 4 GPU which is capable of BluRay quality playback (H.264/MPEG-4 AVC at 40MBits/s) which puts it roughly on par with a 1st generation Xbox with slightly better graphics.
There are two models of Pi. The Model B which is ‘available’ at the moment comes with two USB ports, Ethernet connectivity and 256MB RAM and the lesser-equipped Model A which was originally going to have half the RAM, no Ethernet and only one USB port but is now predicted to have the full 256MB of the Model B so there may be other changes as well.
These differences aside, the Pi come equipped with a decent assortment of ports, including HDMI and composite video and will boot from an SD card, or as I found out, a MicroSD in an SD Adaptor!
The highly capable GPU and HDMI output are what clinched the purchase for me – if I couldn’t think of anything cooler to do with it, I could port XBMC to it and use it as a very affordable Home Theatre PC.
As many of you are no doubt aware, there has been a phenomenal amount of interest in getting hold of a Pi as I too found out and by the time it had arrived the RaspBMC project had been created which uses a minimal Debian based-distribution to bring XBMC to the Raspberry Pi.
gunzip -c ~/Downloads/installer-testing.img.gz | dd of=/dev/sdb
This command simply gunzips the .gz file to STDOUT which is piped through to dd and subsequently written raw to the SD card.
I unmounted the disk and plugged it into the Raspberry Pi along with HDMI to the television, Ethernet cable to the router and finally USB power from a 5V phone charger and within moments was watching a Debian boot.
I’m not sure whether it’s a rather noisy driver or a really bad SD card but I was seeing a *lot* of console output from the mmc0 module about timeouts and codes but I chose to ignore this and wait for the installer to spring into life.
The installer itself is an ncurses based system that is incredibly hands off and robust unlike many quick hacks which can drop you into a rescue shell with no hope of getting out!
It guides you through and provides useful information on what is happening as it repartitions your SD card, fetches the latest RootFS and kernel.
Eventually you will be prompted to reboot the Pi – which I did with an unplug/replug – and the system will now boot you into the latest environment. It’s worth noting that the RaspBMC distribution will keep itself upto date, checking for updates every time it is powered on.
For those keeping count, it took approximately a minute for XBMC to finally launch but it did so in full 1080 with working sound.
I tested with some HD trailers I had and the graphics seemed to struggle a bit with some of the 1080p media I threw at it with dark lines appearing on screen and occasional drop outs where the TV could not detect an HDMI signal, but it was playing from a USB drive and had full DTS audio so it may have proved too much.
One of the killer features of XBMC is how extensible it is given that the plugins are all Python based which means no binary incompatibility – I was able to install the TED Talks, 4oD and BBC iPlayer plugins with ease and was impressed with the performance which saw no issues at all.
By default FTP and SSH services run on the platform which means that it can be used for light file serving/server needs and RaspBMC also has full access to the ARMEL Debian repositories which provide a wealth of software that is just an apt-get away.
I’m not sure if I’ll continue to use the Pi as a media centre as there may be more interesting projects I can do with it but at the moment it is a good showcase for the Pi and provides a project that may garner heavy interest in the future. It’s a bit rough around the edges and it looks like RaspBMC really pushes the hardware but it’s a great piece of kit and I’d recommend giving RaspBMC a spin.
- TDD in C with Ceedling and WSL2 – performance issues - October 7, 2021
- C++20 modules with GCC11 - August 18, 2021
- Modern Embedded C++ – Deprecation of volatile - May 12, 2021