In a previous article, Kevin Herring showed you how to turn an Xbox into a low cost, full function NAS. This is all well and good, but I've always thought that the Xbox would be a perfect platform for media center, and I'm not alone. The Xbox Media Center Project (XBMC) team has created a fantastic, full featured media center for the Xbox.
The project recently rose to critical acclaim in the open source community winning the 2006 sourceforge community choice award in both the "Best Multimedia Project" and the "Best Game Project" categories. (They were nominated this year in six categories, but didn't win any.)
Shortly after Kevin's article came out, I picked up an extra Xbox from a friend, modded it and "rolled my own" media center based in Xebian. This wasn't exactly trivial to do and Freevo 1 just lacks that certain inexplicable "flashy" factor. Even running an extremely efficient Linux OS on the Xbox's limited resources took a toll on overall media center performance.
But, I'm happy to report that the XBMC install and configuration is considerably less demanding and XBMC's interface and features are absolutely fantastic. In this How To, I'll show you how to unleash your Xbox with XBMC.
The Xbox doesn't have a "real" operating system per se; the BIOS handles the startup of game software and all the other lower level tasks like networking, storage, system clock, etc. We need to replace the BIOS with another one that will allow us access to more of the Xbox's capabilities. Part of the game startup process includes checking that the game software was signed by Microsoft. So swapping out the BIOS is not as easy as just sticking in a CD with XBMC on it.
There are two approaches to BIOS substitution. The first is a "softmod" via the MechInstaller crack, which sounds good on paper since you don't even have to open the Xbox. Microsoft, however, is now aware of the crack and has fixed it in recent releases of Mech Assault which makes finding the correct version increasingly difficult.
The other approach is to solder in a chip to house an additional BIOS to extend the Xbox's capabilities. This requires rolling up your sleeves a little, but as avid readers of SmallNetBuilder, this install is a breeze. Not only will an alternate BIOS let you run XBMC, but it can add a whole slew of other functions to the Xbox, all while letting you still play all your favorite games.
In my previous mods, I've always used the DuoX 2 modchip. For this Xbox, however, I decided to go with the Xecuter 3 CE modchip. It's one of the more expensive modchips out there, but all the extra connectors and plugs actually kept the additional soldering to a minimum. The Xecuter chip also has numerous optional add-ons like an external LCD display and an additional IR receiver that'll allow you to turn the Xbox on and off with the remote.
The 3 CE modchip also has the ability to flash its memory banks via HTTP, a very nice feature since the Xbox is extremely picky (especially if you have a Thompson DVD drive) about the media it chooses to read. Having fought the media battle a few times before, I decided to get smart this time. I should note however, that selecting a modchip is a lot like selecting a motherboard; they all bring the same basic functionality (in this case, allowing you to install an alternate BIOS), you just have to choose which bells and whistles you'd like.
Installing the Modchip
Detailed installation instructions and pictures for the Xecuter 3 CE modchip can be found in this PDF document.
Figure 1: Xecuter 3 CE Modchip Wiring
A note to owners of Xbox version 1.0 or 1.6: Version 1.0 of the Xbox will probably have the holes the pinheader is meant to go in filled with solder. Unless you're lucky enough to have a solder sucker, these can be a pain to clear with a solder wick. Have a friend heat the filled solder junction while you gently push the pin on the pinheader through. Version 1.6 of the Xbox requires a special PCB supplied by Xecuter.
Figure 2: Xecuter 3 CE Modchip Installed
Flashing the BIOS
Unfortunately, due to some questions regarding the legality of some of the code in "homebrew" BIOSes, they're not available for easy download from a website. Most of the homebrew BIOSes are listed here. Details on obtaining one of these BIOSes and compiled builds of XBMC can be found here or you can find XBMC builds around the web as BitTorrents. For this mod I'm using the X3 BIOS since it's already a 1024 KB BIOS (saving you the need to pad a 512 KB BIOS to 1024 KB) and it's designed for the Xecuter line of modchips.
Instructions for flashing the BIOS via HTTP can be found here. If you installed the external bank selector, make sure that banks 1 and 2 are selected and that flash protection is disabled. You don't need to worry about this if you didn't install the bank selector, the Xecuter modchip defaults to bank 1 and 2 without it.
Now that we've got X3 flashed, you'll be greeted by X3's main configuration screen.
Figure 3: X3 BIOS Config Screen
By default, the Xbox will use the static IP address 192.168.0.1 which can cause problems since most consumer routers default to this as well. Navigate to the Network Settings menu (Settings > Network Setup) and enable DHCP or assign the Xbox a valid static IP address. Also take note of the FTP login and password, by default x3 and x3. It's safe to leave the defaults here, since XBMC also runs a FTP server that supersedes the BIOS.
Figure 4: Enabling DHCP
Next, disable the hard drive lock to allow us to copy XBMC to the Xbox's hard drive.
Figure 5: Removing the Hard Drive Lock
Return to the main screen and "Cold Reboot" to have the new settings take effect.
Now that the Xbox is up in our network, connect your favorite FTP utility to the Xbox's IP address (listed in the lower left on the main screen, 10.20.7.59 in my case), create the directory "apps" on the E: drive and copy over the XBMC folder into E:\apps. (Note: X3's FTP server is pretty basic so fancy FTP clients may not work too well or at all. gFTP in linux works great as does FlashFXP in Windows.)
Figure 6: Installing XBMC
Running XBMC as the Default Dashboard
XBMC can be configured to be run either as an application or as a dashboard. XBMC is well suited to be the dashboard on your Xbox, since pretty much any program can be called from within XBMC. To make things easier, the XBMC team have developed an "XBMC Shortcut XBE" which essentially acts as a pointer to XBMC install. Download the shortcut here. Create a regular text file named "default.cfg" and put a single line in it:
Transfer both default.xbe and default.cfg to the Xbox's C: drive.
Next, configure X3 to run the shortcut dashboard. In the Dashboard Filenames menu (X3 Config Live > Customize X3 Bios > Dashboard Filenames) rename a dashboard to "default.xbe" (it doesn't matter which one you rename).
Figure 7: Renaming the Dashboard
Change the dashboard boot priority to execute "default.xbe" first (X3 Config Live > Customize X3 BIOS> Dashboard Boot Priority).
Figure 8: Setting the Dashboard Order
And disable X3's config autostart (X3 Config Live > Customize X3 BIOS> Autostart X3 Config Live). You can get back to the X3 config menu by holding the white button during boot.
Figure 9: Disabling X3 Autostart
Reboot to Dash to start XBMC.
XBMC's configuration is just as simple as configuring the X3 BIOS. First, set the network settings to use DHCP (Settings > Network > Network > Assignment).
Figure 10: XBMC Network Configuration
Next, enable the web server and change the FTP user password to something more secure (Settings > Network > Servers).
Figure 11: XBMC Web Server Configuration
Also we can configure XBMC to autoplay Xbox games when inserted into the DVD drive (Settings > System > Autorun).
Figure 12: XBMC AutoPlay Games
Figure 13: XBMC Home
The first thing that struck me about XBMC was the beautiful Project Mayhem III skin. The menus and animations are really well done. Most of the menus and features are very intuitive and "just work" right out of the box, definitely a credit to the XBMC team. A quick glance at XBMC's features shows support for virtually every video format, audio type, and streaming protocol in use today.
Looks great, right? But what about HD support? The good news is, there is support... sort of. With the Xbox High Definition AV Pack, the Xbox is capable of displaying up to 1080i. According to the FAQ, XBMC is capable of upconverting 480i to 720p or 1080i, but it just doesn't have the computational horsepower to decode native 720p and 1080i (like HD-DVDs) on the fly.
I didn't have a component video cable handy to test this claim, but I can't say that I'm surprised. Video playback does look fantastic however, thanks to MPlayer, even without HD resolutions. I tested it out on a 36" TV and a DLP projector, neither of which left me wanting more. The convenience of having all your media at your fingertips and so easily accessible outweighs any lack of cutting-edge video quality.
The control system for videos was very smooth as well. You can control almost every aspect of playback with the Xbox controller alone. I was very excited to see that XBMC is really centered on playable media, things like Divx movies, MPEG Top Gear episodes, etc. The majority of the other media center applications I've used seem to be, in my opinion, overly focused on TV.
One feature that I particularly like, and one of the project's great strengths, is a robust architecture for 3rd party add-ons and scripts. Bundled with the XBMC package was a number of great scripts and as a movie junkie, one of my favorites is the Apple Movie Trailer viewer.
Figure 14: XBMC Apple Movie Trailers
In the viewer, you can stream movie trailers from Apple's site, watch exclusive behind-the-scenes trailers and special featurettes—all from the comfort of your couch, not hunched over in front of a computer.
XBMC also came bundled with a YouTube movie viewer. But I had trouble getting this script working. It seemed to be able to connect to YouTube and download lists of movies. But it had a hard time playing them, even crashing XBMC occasionally.
Figure 15: XBMC YouTube Script
Another great feature that I found particularly inventive was the web-based control panel which allows for full control of XBMC via the web. You can work on the computer in the other room and change the music from the comfort of your desk, without having to step into the next room and find the remote.
Figure 16: XBMC Website
I mentioned earlier that I had been using my own Linux-based media center for a couple years now. Even then, my first impression with XBMC was complete astonishment. The system performance just crushes my Linux system's; I suspect this is mostly because XBMC doesn't have to deal with the overhead of a "real" operating system.
The user interface is so much more aesthetically pleasing than Freevo 1, although Freevo 2 looks great and should make for an interesting comparison down the road. One thing I do like about Freevo that (to my knowledge) XBMC doesn't offer, is a way to browse your movies by cover images.
I was a little skeptical that streaming media via SMB (Windows file sharing) would perform well since I had a hard time getting the performance to watchable levels in Linux. But I was pleasantly surprised! I was able to stream everything from Divx movies to MPEGs to MP3s and still images to XBMC. I ended up using NFS on my Linux-based media center in the end; Linux-to-Linux streaming just doesn't work as well with SMB.
XBMC is a very impressive project. Being able to run natively on the Xbox allows XBMC to take full advantage of the limited hardware available and really delivers a slick user experience. For around $100, plus a little time, you can convert your Xbox into a formidable media player that rivals systems with twice the hardware.