The Raspberry Pi as an open set top box

A remote control and a partial screenshot of the XBMC interface showing videos

The Raspberry Pi may be designed as a cheap educational computer, but hardware-wise it has a lot in common with set top boxes. However, set top boxes are traditionally locked down and not easily modifiable by the user, the Pi is the opposite and is open to user experimentation. People have been building their own media centres for years and now the Pi offers a very cheap route into learning about this area. XBMC defines itself as a "software media player and entertainment hub" that is packed with features and offers a fairly friendly user experience which follows the ideas in the ten foot user interface. It has also been ported to work on the Pi. I've been experimenting with OpenELEC - a minimalistic Linux distribution that hosts XBMC and makes setting up this sort of environment on your Pi not as difficult as you might think.

OpenELEC actually has a lot in common with the sorts of Linux environments that you would find on set top boxes. It is designed to be almost flashable firmware that you run on your device rather than a desktop distribution where you use a package manager to update and maintain applications. If you want to update it you install a new image rather than download individual applications. It is pretty easy to get up and running with it. You can opt to compile the whole environment yourself on your computer and then run it on the Pi, but I opted for a precompiled image which can be found on the downloads page of the OpenELEC site under "Official Daily Builds" then the openelec-rpi directory. These seem to be built about once a week and as this is under active development things can break (e.g. at the time of writing MP3 playback is dodgy)!

Screenshot of XBMC playing music

You can download the file and extract it on your computer. Getting it onto an SD card is quite easy, all you need to do is go to the directory containing the extracted OpenELEC files and run sudo ./create_sdcard /dev/[where your SD card is]. It is very important to get this command right! I would recommend unplugging any other USB sticks or memory cards you may have while you run this command. The script will prepare the card and when it is ready you can pop it into your Raspberry Pi and boot up. It will be a few minutes before the XBMC environment appears on your screen (I'm sure you are all used to the pace at which the Pi does things by now!). Note that OpenELEC is upgradable so you do not have to do all this again to update it, see the Updating OpenELEC wiki page.

OpenELEC sets up a media centre for you that is largely preconfigured. It is worth setting your location and timezone though (under Settings -> Appearance -> International). OpenELEC sets up some WIndows style network shares for you and you can use these to easily copy media files and updates to the device across your network. You can use a keyboard and mouse to control it or take advantage of the preconfigured LIRC support. I found that a WIndows Media Centre type remote worked without the need for further configuration. You can also control XBMC from your phone using the Official XBMC remote app or open a web browser and go to your Pi's address to find a web based remote control!

XBMC features UPnP support. This is not switched on by default but can be enabled in the settings. This is a very useful feature and if you have a TV like mine that is a few years old and does not feature any network functionality then it makes the Pi value for money for this one feature. I found that I could easily push pictures, music and video to my TV via the Pi from my mobile phone using this feature. It is also one of the ways that you can enjoy media hosted on other machines on your network using XBMC. It also supports Apple's AirPlay, but I could not get this to work. If anybody does please comment.

Internet radio add on for XBMC

Lots of add ons are available for XBMC and these can easily be installed in a few remote control button presses. An essential one to know about that is preinstalled is OpenELEC OS Settings found under Programs. This lets you change the keyboard layout and configure your network connection. The Radio add on by Tristan Fischer (above) turns brings radio stations from all over the world to your TV. It gets its station list from who also have a website and apps for phones (they are also really helpful - I noticed a local radio station missing from their line up so emailed them and they added it within two days).

Screenshot of a live stream of a Danish TV news channel

Lots of video add ons are available too. I found one that would stream live Danish TV into my living room (which is not in Denmark). Thanks to the hardware video decoding capabilities of the Pi this worked rather well (sadly I don't speak Danish but when I tweeted a picture of this working I got replies with translations - thank you!). There are also plugins for, Vimeo, YouTube and other more specialised services like the Khan Academy. I watched a few web shows on YouTube this way and it worked really well. It is possible to log in through the client and see your subscriptions, watch later list and so on. Again the video was very smooth. It is also possible to write add ons for XBMC yourself. It was quite sad to see a lack of add ons for British media outlets though.

The one notable feature that XBMC lacks though is support for HTML5 applications which is a shame as these could be the great hope for TV platform standardisation. The platform as a whole can also be rather slow to use on the Pi, but it is still usable. This could be a great choice if you want to experiment with set top box technology or just add network capabilities to an older TV on a tight budget. For me it shows the cost of the hardware to connect televisions to the Internet is becoming trivial and that can only help the world of Internet TV to expand.


TVCatchup has a xbmc addon that brings and EPG and all the freeview channels streaming right in.
I also love 1channel and icefilms for streaming pretty much anything that's ever existed.

I've been using raspbmc, but think I'll try openelec, as it's clearly going to be a bit less resource intensive.

...Also, can you please port Your MP to xbmc now you're using it? I miss this plugin since I ditched Boxee for XBMC.