We've been taking a look at some Intel-based NASes from Thecus and ASUSTOR that are being promoted as HTPC replacements. While I'm waiting for another one to arrive, I thought I'd put my Raspberry Pi to good use and test Raspbmc on it. I wanted to see if it could do as well, or better, as a media player than NASes more than 20X more expensive and with much more powerful processors.
But first, I should define the Raspberry Pi for those that may not have heard about it. The Raspberry Pi is a credit-card sized computer that has been setting the DIY world afire with its many uses.
The original intent of the Raspberry Pi was to create an inexpensive computing platform for education, but once the $35 unit hit the market all sorts of uses were found for it. If you want to see some examples, just head over to The MagPi.
The Raspberry Pi comes in two models, the Model A with 256 MB of RAM, one USB port and no Ethernet. The Model B has 512 MB of RAM, two USB 2.0 ports, and an Ethernet port. Both models have composite audio and video and HDMI on the board.
The device boots to an SD card, which makes it nice and easy to have multiple uses, all on different cards. The little Pi uses a Broadcom BCM2835 High Definition 1080p Embedded Multimedia Applications Processor with an ARM1176JZFS core running at 700 MHz. The crowning gem is the embedded Videocore IV GPU, which is capable of Blu-ray quality playback.
The latter was quickly adopted in the open source community and XBMC was ported to the ARM processor, birthing Raspbmc. Raspbmc was created and is maintained by Sam Nazarko, a 19 year old student from London.
On the NASes I've tested, setting up XBMC or Boxee has simply been a matter of obtaining the software package and loading it up via the NAS' particular software manager. It was very easy, almost too easy at times.
Upon first look at the Raspbmc Technical Wiki I felt an overwhelming sense of dread with what appeared to be the steps to install Raspbmc, including building the filesystem, kernels and application. I'm very comfortable in Linux, but I hate spending hours chasing down package dependencies and looking up errors in compiling. I foresaw evenings of sitting up, modifying config files, wondering why it was not working this time and questioning the meaning of life.
My inhibitions quickly dissipated and I felt a sense of joy however when I read further down the page and found a Windows Installer that simply loads the SD card with XBMC, no configuration needed. The installer wipes your SD card, so that is a consideration. Luckily, SD cards are pretty cheap, so I just kept my original intact and bought a new one for Raspbmc. The image below shows the modest installation options.
Modest Raspbmc installation options
After a few minutes, Raspbmc was set up on the SD card and I was ready to reboot. The image below shows the Congratulations screen...quick and easy so far.
Congratulations, the first step is done!
Once I found there was a Windows installer I did what most Windows users do on an install, I let it run and I didn't read any directions. I had the Raspberry Pi hooked up with no display at this point, so I couldn't see what was going on in the new OS. It didn't appear to come back up. So I unhooked the Pi from my workbench and brought it down to the TV. I debated simply plugging the Pi's power source in to the TV's USB jack (the Pi uses a standard Android USB cable for power), but a quick test showed the TV to have no power to the USB ports when off.
Once plugged into the TV via HDMI, plugged its power wart into the wall and connected its Ethernet port to my LAN, the Raspberry Pi lit right up and I was able to see that it was setting up the OS and downloading Raspbmc for first time use. This was all completely seamless with no user input. I didn't time it, but it took around 10 minutes. The image below shows one of the setup screens upon first use.
Continuing setup upon reboot
Once the filesystem was set up and XBMC installed, I was finally presented with user input. I started to use the XMBC Remote for Android when my one year old daughter started playing with the TV remote. I was surprised to see she was controlling Raspbmc with our TV remote!
Upon doing a little research, I came to find that the Raspberry Pi has integrated support for HDMI-CEC. In a nutshell, this means that your TV remote can control Raspbmc (or other apps on the Pi) and apps on your Pi can control your TV and much more. This is a very cool feature that gives it a plus one over the NAS-as-HTPC options. Not having yet another remote is huge!
It did come with small drawbacks though, rebooting the Raspberry Pi via SSH would turn the TV on as the Pi came on. A small annoyance and I'm sure there are configuration steps around it, I just made sure not to do that unless I was present to turn the TV off. It was a small price to for being able to control all Raspbmc functions with my TV's remote.
The Raspbmc/XBMC main screen shown below was the familiar Confluence skin with the typical Weather, Pictures, Videos, Music, Programs and System. On the Thecus NAS, I was presented with a bunch of Python errors coming into the XBMC main screen and the weather app didn't work. On the Raspberry Pi, there were no Python errors and the Weather app worked great, even figuring out my current location.
Raspbmc Main Screen
As I started to use it, let's just say I was very skeptical. I expected a $35 board sporting a 700 MHz CPU working as an HTPC to be more of a novelty than something really functional. Poking around, I found that Raspbmc is built to overclock to 800 MHz automatically, with turbo on. Even still, that really doesn't seem like much, but surprisingly it was.
The Raspberry Pi doesn't have internal storage beyond the SD card. So I debated mounting a drive with media via USB for testing. But since the USB and 100 Mbps Ethernet are run off the same chipset, I decided to test over my Gigabit network via SMB shares and UPnP/DLNA, reasoning the bandwidth and associated bottlenecks would be comparable.
The first thing I did was play some internet HD content from Vimeo via Plex Media Server. I chose Town of Ghosts as it is 1080p content. The video and sound quality were exceptional and it played flawlessly. I monitored the CPU and saw it coasting along around 50%. I also monitored power consumption via my Kill-A-Watt and it seemed to average around 2.5W during heavy CPU usage. In all of my testing, the highest consumption I saw was 2.8W. Another win over the NAS options.
Next I went to our Vortexbox videos for some serious testing. I pulled up the 26 GB Blu-ray rip of Super Troopers and it stuttered. So did the 21 GB rip of Sherlock Holmes. Those two files have proven too much for every media server I have tried so far. The only thing that has been able to play them is our Samsung UN50EH5300FXZA TV. I was a bit disappointed, but not surprised.
Next, I tried some of our other Vortexbox movies. Strangely, they had sound, but no video. I checked CPU and it was hardly being touched, so I went online. What I found was that the Raspberry Pi Foundation licensed only certain codecs when releasing the board. Since the goal of the Raspberry Pi was an inexpensive education platform, it was felt that additional codecs would raise the price beyond what they were shooting for and they did not foresee much need for it. You can read more about this here.
Luckily, the Foundation listened to the community and figured out a way to allow Raspberry Pi users to purchase an MPEG2 decode license. With currency conversion, I paid $3.19 for the MPEG2 decode license. I also "accidentally" purchased the VC-1 decode license for $1.60, which would allow me to decode certain Windows and other video formats.
The small price seems silly to not be included. Until you do the math and realize it's an additional 10-20% of the unit cost depending on currency conversion rates. So I was happy to pay for the license.
The email said the licenses would arrive within 72 hours, but it was closer to 12, which was a bonus. The reason for the potentially long wait was because each license is tied to the Pi's unique serial number.
Once I installed the MPEG2 and VC-1 licenses, I went back to the Vortexbox SD videos, they all played great with the new license. CPU hovered around 30-40%, power around 2.5W and playback was DVD perfect. I pulled up some 720p and 1080p videos that I had reduced in bitrate and they played perfectly as well.
I moved on to some of the internet streaming players. For this test, I ran everything through PlayOn and Plex Media Servers using the UPnP Devices option of Raspbmc's Add Video. Hulu content played flawlessly from PlayOn via Raspbmc. From Plex, HD YouTube and Vimeo content worked great and looked great. However, I could not get any of the PBS channels to play. The image below shows some of the Add Video options within Raspbmc.
Raspbmc Add Video uPnP option
Of course, there is always more than one way to do things. By going through our media servers, I was really just adding a level of complexity that wasn't necessarily needed. XBMC has Add-Ons for videos, Pictures and Music that allow you to access sites like YouTube and Vimeo directly. I decided to cut out the middle man and test those as well.
My first test was Town of Ghosts again. The Vimeo Add-On prompted me to watch it in 720p or SD, I chose 720p and then pulled up the Raspbmc Info as it started to play. According to the Info screen, it was playing 1080p. I noticed 1080p wasn't an option anywhere in the Vimeo app, so I can't explain the discrepancy. At any rate, the video looked great and played well. The image below shows the Info information. I've also enabled the Peformance Metrics on the top of the screen just for fun and viewing pleasure.
Raspbmc Vimeo test through Video Add-Ons
I then tried YouTube and other various Add-Ons, each working fine. The Add-Ons are written by independent developers, so options and look and feel between apps varied slightly.
I also ran tests against the Pictures and Music section of Raspbmc. These tests were a little easier. as nearly all media servers work just fine with JPG and MP3 files. Music and Pictures worked well within Raspbmc. I perused some of the Add-Ons, but couldn't find anything I really wanted to test. If you have a favorite Add-On, please let us know in the forums.
I didn't expect much from a $35 computer, especially not when compared to a $500+ NAS. But the little Raspberry Pi surprised the heck out of me! It played most everything I tried on it and everything that played was great quality. HDMI-CEC was a huge plus, allowing me to control Raspbmc via my TV remote. It never drew more than 2.8W during my testing, which is also a plus when you compare it the power usage of a NAS.
In reality, when I keep mentioning $35, that is the barebones cost of entry. And only if you order directly from the Raspberry Pi Foundation's official manufacturing partners, 14/Premier Farnell and RS Electronics. While there is usually no problem getting accessories, you'll often find the Raspberry Pi itself out of stock. If you don't want to wait, you can buy from other suppliers, but you'll pay ~30% more.
The Raspberry doesn't come with a case, power supply or SD card. My combo with clear case, power supply (same as any Android phone) and preloaded SD card ran me just under $70. You could easily do it cheaper with any SD card, an old USB power supply (with micro USB connector) and a DIY case (sorry, an Altoids box doesn't fit). The image below shows my "setup".
My complete Raspberry Pi
When compared to the NAS-as-HTPC options, I've seen so far. Raspbmc is much better executed and much less problematic. Aesthetically it's also a lot easier to put in your media room, since it takes very little space and makes no noise whatsoever.
Looking at Raspbmc on the Raspberry Pi was really the first time I've looked at an inexpensive media player and felt it was nice enough, and user-friendly enough, to let my wife and family run it without getting completely frustrated by IT nerdiness. I may just do that.