Xbox vs Raspberry Pi - Fight!As an early adopter of all things XBMC (by necessity), I have occasionally found myself with a fair amount of old equipment that I’d love to repurpose, but don’t know how. Old component video cables and other sundries just end up in my huge box of cords. Remotes to old dvd players randomly appear and disappear. Power cables that connect to devices that I didn’t know I owned suddenly crop up as if by magic.

Most frustrating of all, however, is this massive, half ton television I bought about 10 years ago, right before HD really started catching on. By all accounts, it was a great TV for its time. It’s huge. It was absolutely perfect for use with the old modded Xbox. And now, as the old Xbox hits its last legs and it’s growing more and more difficult and frustrating to keep the Xbox library of SD content up-to-date, I find myself uncertain what to do with the old lady.

The problem is, I hate to get rid of the TV. I still have a library of SD content and old Xbox games that I’d like to hang on to (plus, it’s heavy and easier to just leave where it is), but at the same time, if I’m going to keep this TV, I’d like it to be able to access all the modern shows and movies I’ve got in my library without having to deal with any irritating transcoding. I’m not a user of Plex, and even if I were, Plex doesn’t really play very nicely with XBMC4XBOX.

On top of that, it’s literally impossible to build any kind of reasonable (i.e. inexpensive) HTPC for this SDTV, because the TV only accepts RCA and S-Video inputs, and inexpensive HTPCs only output to HDMI and VGA (and sometimes DVI). I could buy an adapter, but those things run ridiculously expensive, making them fairly worthless for the simple goal of not throwing away an old TV.

The SD Hardware Solution

All of which brings us to the Raspberry Pi. And more specifically, the composite (RCA) video output that comes built into the Pi. Suddenly, I have an XBMC box that costs 35 bucks and can play back video that the Xbox 1 couldn’t even dream of touching.

Getting the Raspberry Pi for this project, I felt like I was going in fairly blind. There’s not a lot of documentation on whether and how well XBMC works using the composite out. I could very well be blowing a decent amount of money on a paperweight. On the other hand, I’ve got various family members who could benefit from a cheap HDMI-equipped HTPC, so it was never going to be a full loss.

Another one of the XBMC team members, Ned Scott, ordered six Raspberry Pis, because shipping was quicker or something. Since his were expected to come in possibly months before I could get an individual one, I took him up on an offer to just buy one from him.

After a week in the mail, I received my Raspberry Pi. My first discovery was the lack of an on/off switch. The simple solution was to get a remote control electrical socket switch. With this I could quickly and easily turn the power source of my Pi on and off. It’s possible that shutting off the Pi by removing the power source, rather than allow it to shut itself off is bad for the Pi or the SD card where the operating system sits. However, I’m putting myself squarely in the camp of the do-not-care. It’s fast and effective, and the hardware is so cheap as to be easily replaceable.

Next, absurdly enough, I needed to buy a composite cable. It turns out, every device I had connected to that TV didn’t use a standard cable. It used a special cable with a unique port on the device side and a standard composite cable on the TV end. I needed both ends to be standard. Fortunately, these things are dirt cheap at your local brick and mortar store, or online.

While I didn’t have an RCA cable, I did have a stereo y-adapter to connect the Pi to my TV’s audio. So no need to buy that.

Finally, I needed some means of remote control for after I’d completed installation. One of the really cool things about the Raspberry Pi is its built in HDMI-CEC compatibility thanks to Pulse-Eight and their libCEC. Hooking it up to most modern TVs via HDMI allows you to actually control the Pi using the TV’s remote control through the HDMI cable (aka magic). Unfortunately, since I wasn’t using HDMI, I needed another solution.

Enter flirc. Flirc, quite simply, is awesome. It’s just a tiny USB dongle that you set up using your standard Windows/OSX/Linux box to interpret key presses from literally any IR remote control as standard keyboard presses. No need to worry about remote control software or specialty remotes. You can then move the dongle from device to device, and it will remember all the key presses you taught it. I managed to take a remote control from an old DVD player that I wasn’t using and assign all the important XBMC keys to it in a matter of moments.*

*One quick tip though. The version of the software I was using 0.96 has an XBMC specific section, but doesn’t have a button to access the hypercritical context menu. My suggestion is to map out all the keys in the XBMC specific section, then switch to the Full Keyboard section and map a remaining key to ‘c’ so that you are covered.

For an idea of how this works, check out the video below where a user pairs the stop button on his remote to the keyboard letter ‘x’ (the keyboard letter used to stop a video in XBMC).

Finally, the Raspberry Pi was going to need local network access to reach my media shared folders. For me this was a complete non-issue. I already had a LAN cable hiding behind the tv for these exact purposes. Those of you without are going to need wifi support and honestly, wifi support via a usb dongle sounds like a real headache. Unless you are relatively comfortable with following instructions involving ssh’ing, I’d suggest just getting a wifi gaming adapter. These things act like a regular wifi usb dongle, but plug into your Raspberry Pi’s lan port after you’ve followed the direction to get them set up. They’re a bit of an expense, but so astoundingly useful that you could very well be using the adapter well after the Raspberry Pi has been replaced by the next great thing.

Getting the Software Going

I installed XBMC onto the Raspberry Pi. There are a number of different guides found under the Raspberry Pi download link. To install XBMC onto a Raspberry Pi, you have to start by formatting and setting up an SD card on your PC. Because I was using a Macbook Pro, I ended up using Raspbmc, mostly because I was having difficulty following the OpenELEC directions, which appeared more geared towards Windows users. For Windows users, I imagine both should work equally well. I’m not very familiar with Xbian, so I can’t say one way or other about it.

With all that said, installing XBMC was a breeze. I did all the stuff to the SD card on my laptop. Plugged the card into my LAN-connected Raspberry Pi and turned it on. Because there were still several steps left in setup, I plugged an old keyboard into the Pi to deal with the initial work. And 20 minutes later or so, XBMC was up and running.

Initial Impressions

The Raspberry Pi is SLOW. So… so… slow. I’ve got my mom set up with a NVIDIA ION box, which I previously thought was pretty bad, but that’s nothing compared to the Pi. At some point I read a thing that said the Pi’s CPU is roughly the equivalent of the CPU of the Xbox 1, but at half the clock speed. I don’t have that link, and I’m honestly not sure if it’s in any way true, but I’d be willing to believe it.

Navigation of a library is relatively fast, but the initial scanning of that library? Oh my gosh, was it ever terrible. If you have a fairly extensive collection of movies and TV shows, be prepared to wait a good hour for the scan to finish.

I have a feeling a great deal of that problem will be resolved with XBMC 13, if only because I imagine a fair amount of work to better integrate UPnP serving will have been accomplished by then. In an ideal world, my HTPC with its far more powerful CPU running XBMC (or even better, an XBMC Server service) would handle all the scanning behind the scenes. Then the XBMC on Raspberry Pi would automatically have a library hosted for it over UPnP, relieving the Pi’s CPU of heavy strain. That sort of works now, but XBMC’s UPnP implementation still isn’t nearly where it needs to be. For instance, playing a video doesn’t actually mark that video as watched and if you stop a video midway through, you won’t automatically be sent back to that point when you come back to the video. Additionally, once you’ve added the library, the stock skin Confluence currently forces you to access it through the Files folder. Movies and TV Shows won’t be listed as main sections on the Home screen, like they would if you scanned the library locally.

For a video of UPnP as it exists on XBMC right now, check:

With luck, that will all be significantly better by version 13. For now though, the Raspberry Pi remains slow.

The other point worth mentioning is that XBMC for Raspberry Pi doesn’t come with MPEG-2 or VC-1 hardware video decoding. XBMC will still attempt to decode the video in software, but the Pi CPU will definitely choke on any high bitrate video in either of these formats. If all of your video comes in MKVs using the h264 codec, you’re fine. If not, you may want to consider either converting your video or purchasing a hardware decoder license from the Raspberry Pi Foundation.

With those caveats out of the way, my impression of the Raspberry Pi is simple. It blows the pants off XBMC4XBOX. There are still some things the Xbox can do better (playing Xbox games, for example), but for the simple purpose of playing back an HD video library, the Raspberry Pi is absolutely fantastic.

If you are going to install an XBMC box for an HDTV, I probably wouldn’t recommend the Raspberry Pi.  It’s great for hacking and probably still more awesome than a Roku,* but right now I’d easily recommend something like the Pivos XIOS or another more powerful Android box, if you’re looking for a set top box.

*Insert biased pro-XBMC stance here.

But if you’re like me and you want to repurpose an old SDTV, there’s seriously no better way to go than the Raspberry Pi.