Hi all,
this post will give you my recipe to build a cheap and powerful GNU/Linux
based media center. I am perfectly aware of the fact that many tutorials and
howto exists around the interweb and certainly explains things far better I
will do. Anyway this one could be of any use to you, the g33k with many spare
parts left over from your previous computer.
This post will be updated as time pass. Indeed I have not yet all needed
parts to build my ultimate media center, and I will make this howto as
comprehensive and complete as possible.
Some context
Context is useful for you to see if you can learn something for your own use
from this post, so :
I have many of my old computers at home, some are used as servers, some are
my sandboxes, etc. I have one specifically which is a file server
(NFS+Samba). It is mainly used to store multimedia content (family pictures and
videos, movies, music, etc.). At this point, my thoughts were : "and what if I
connect it to our TV set ?". So be it ! After some test and researches on the
web, I came with the idea of using XBMC as it is
by far the most advanced and optimized one. I will develop the media center
software choice later.
The computer I talk about is a pretty old one : AMD Athlon XP 3000+, ATI
Radon HD 3650 (AGP), 1 GB RAM. You can tell that I can't play 1080p
movies with this settings. That is not a problem since it just to validate the
concept that I use this computer. I mention it because their is still things to
learn from this one.
A word about interoperability and "user friendliness" : we have
GNU/Linux and Mac OS X computers at home. So the file server shares directories
with NFS (files) and Samba (files and printers). We also want to access
multimedia content through our mobile devices (EeePC with Fedora 13, Android
devices, iPhone and MacBook Air). Multimedia content is shared in DLNA through
uShare.
To sum this up : we pretty much want a full feature all inclusive media box
connected to our TV set and accessible from any devices on the home
network.
1 - Choice of a media center software
This is the tricky part : you have to figure out you needs, and like all
clients in the world you don't know what you really want 
Let me help you with my list to that big old Santa. I want to :
- play all my multimedia content (photo, movies, music) on my TV set (far
bigger than my computer one) ;
- be able to put and retrieve (multimedia) files on my file server ;
- be able to watch my last Fairy Tail
episode on my Nexus One from the bottom of my bed ;
- allow my Apple fan girl of wife to enjoy all those features on her damn
closed Apple's products ;
- share the home printer/scanner ;
- enjoy online content like YouTube or Shoutcast radio ;
- read my RSS feeds on my TV set (geek inside) ;
- read my email on my TV set (the geek always strike twice).
Moreover, I have to think that the computer I use to validate the usefulness
of this media center is a old one. So I want a really optimized software to be
able to enjoy at last 720p movies.
Important point : I don't care about watching TV. I have a HD optic fiber
connected set top box from my ISP that do this job very well, I don't want to
double or replace those features. I only want a single point of entry for all
the medias that are stored across my home network.
With this list in mind what are the media center software that are available
to fulfill my needs ? It is important to note that I want an all integrated
solution : no customization of VLC or MPlayer, no KDE desktop (as beautiful it
is) with shortcuts to media directories and media players. I want something
that do all my required features in one place and I want to be able to boot on
it directly.
Elisa / Moovida :

I tested Elisa some time ago and I liked the interface and features
available, so I went and tested it again. The interface is quite nice and it does pretty much
all what you want/need from a media center. Problem is : for GNU/Linux
distribution their is no packages nor sources available for version 2.0 (only
1.0.9 available). Their is one more issue to me : it
is absolutely impossible to use it on my "pre-prod" computer. It is
super slow (maybe Python have something to do with that ^^) and I can't even
play the standard DivX (no high resolution, only standard SD movie).
So it was a no go for this one.
GeexBox
GeexBox is a media center I discovered
during my quest for the ultimate media center application. This one literally
rocks ! It have unique features that makes it fit my needs almost perfectly :
it is able to share its content through UPnP, it can play many multimedia
content, it supports SHOUTcast and NFS, it also have a unique feature :
bookstore. This one allows you to read on your TV set (or whatever monitor you
plug to your media center box) online content like onemanga.com. Please note that GeexBox is a full
distribution, to get the media center only you want to look at Enna.


I like the interface and the features so this one could do
it. But there some issues : not being able to share content with
anything else but FTP is a big missing feature in my use cases. GeexBox could
also be really improved by adding a plugin system (at least, I am not aware of
any plugin system in GeexBox).
A special mention goes to this media center since it provides many tools for
others to works great (like libdlna, uShare, etc.).
XBMC
Now for XBMC. As you read before :
this is the one I choose. It can do every single thing I wrote
in my whish list ! It is a really feature rich media center, and thanks to its
extension system it can be made even more feature complete ! It looks like the
perfect software to me : easy to use and beautiful (my wife will like it !). It
is also highly tunable and extensible (lil' geek inside already like it !!).
Over all, XBMC have gorgeous themes that makes it a very nice choice for
something that is in the middle of my lounge. Have a look to the Confluence default theme, to the
Aeon theme or to the theme/skins gallery. XBMC also have a really
useful feature in my context, it is called XBMC standalone. When you use this
mode, XBMC acts as a window manager. Use this with auto-login and you will have
something really user friendly (I start my media center as I would have start
my Blu-Ray player).


On the performance side, even if the Aeon theme is not really usable on my
pre-prod configuration (it is full HD 1080p so I never expected it to works
anyway), the Confluence default theme runs just great. Even the last
development version taken from the SVN runs smooth (I had to tweak the
compilation process a little but I'll describe this later).
Freevo
It would not be fair not to mention Freevo. It looks like an
excellent media center... but I have not test it. Why ? Because I might have do
a little segregation against it : as soon as I saw "Python powered" it reminded
me the Elisa/Moovida experience. So in fear of bad performances I did not test
it. That said, from what I can see on the website it recommends only NVidia cards
and I have an ATI/AMD one. There is few screenshots available (note to the
Freevo team : you should really makes more screenshots your challengers are
well recognized and provides there future users with many medias to tease them)
and from what I can see it is much less appealing than XBMC or GeexBox (even if
it is the GeexBox team that made the main theme for Freevo).
In the other hand it seems to be very feature rich, actually it is probably
one of the most feature rich Open Sources media center. No wonder why it is
widely used. With a nice interface like XBMC for example (OpenGL, etc.) it
would be the killer choice (given the fact the performances are corrects). Do
not restrain from trying it, it looks like it will do a lot of good for you.
The documentation is a bit outdated (with OpenSUSE don't bother reading it if
you have packman repository it is packaged).

Final choice
Like I said previously my choice goes to XBMC for both
features and a very appealing UI. Moreover the HTTP remote control, Android
remote and iPhone remote allows me to drop all mouses/keyboards.
2 - Installing XBMC
Now that the one have been chosen, we need to install it. On GNU/Linux based
distributions you always have two options : the easy way and the hard
one. Let's go through both of them.
The easy way: use your GNU/Linux distribution's package manager
So you are a sweet one, you want to go the easy way ? Ok let's see what you
have to do. First you want to go to the page that
is dedicated on Linux installation on XBMC wiki. But since, I am a nice guy
let's see how to install it on OpenSUSE (10.3) and Fedora (13).
Let's start with Fedora (the easiest), simply type :
sudo yum -y install xbmc
That's it ! Off course you can do it with your favorite yum UI too. Last
time I checked though, the HTTP remote control was not enable... Quite a bit of
a problem to me and my Android remote...
For the OpenSUSE it's almost as simple, you just have to ensure that you
enabled the packman repository. If not, go to Yast2 -> Manage
repositories/sources (or whatever the real name is...) -> add a community
repository -> select Packman in the list. By the way this is also here that
you get some nice repositories like AMD and NVidia's proprietary drivers for
your video card (that you need to run XBMC properly). Once this is done just
type :
sudo zypper in xbmc
And you are good to go. Obviously, you can also stay in Yast2 and install
XBMC from the UI. Who said Linux was complicated ?
The hard way : compile it yourself
Ok, you're a tough guy, ye' wanna go fer da hard way. You're damn right :
bounty earned in suffering tastes better 
Actually, XBMC is not that much of a problem to compile... Given the fact
your CPU support SSE2 instructions... which is not the case of my old Athlon.
Anyway, I prefer the SVN version over any sources because it's more unstable...
Hu, I mean : because you got cutting edges developments. One of the things I
wanted from the sources was VDPAU rendering (please note that official sources
do it very well too, you are not forced to use SVN version). This allow us -
NVidia accelerators owners - to use the specially optimized hardware
acceleration in XBMC. It makes a huge difference with your typical SD DivX.
So... without further ado, here is a step by step howto get and compile XBMC
from sources.
The GNU/Linux distribution used is an OpenSUSE 11.3 installed from KDE Live
CD. This precision is for the dependencies : you might not need to install them
all. Anyway, you should read XBMC's official
HOWTO compile XBMC it have many distributions specific howtos and it covers
64 bits compilation that I don't. The following guide is a super-quick
super-condensed version. So, first things comes first : install the required
dependencies :
zypper in make cmake autoconf automake gcc gcc-c++ boost-devel
python-devel python-sqlite2 dbus-1-devel gperf gcc-fortran unzip zip unrar nasm
libavahi-devel SDL-devel SDL_image-devel SDL_mixer-devel jpegint-devel
audiofile-devel fontconfig-devel freetype2-devel fribidi-devel glibc-devel
hal-devel libbz2-devel libstdc++-devel libexpat-devel glib2-devel
libjasper-devel libjpeg-devel mad-devel libmikmod-devel libmms-devel
libogg-devel nvidia-vdpau-devel libopenssl-devel sqlite3-devel libstdc++-devel
libpng-devel libtre-devel e2fsprogs-devel libvorbis-devel lzo-devel pcre-devel
libenca-devel libpulse-devel libfaac-devel ccache xorg-x11-devel Mesa-devel
dbus-1-devel glew-devel alsa-devel libmysqlclient-devel libcurl-devel
zlib-devel xmms-devel ftgl-devel libcdio-devel libtool libsamplerate-devel
libfaad-devel flac-devel libsmbclient-devel libtiff-devel enca-devel
libwavpack-devel libmpeg2-devel libmicrohttpd-devel libmodplug-devel
libdvdcss-devel yasm yasm-devel libass-devel libtool gettext
gettext-devel libmad0 libmad-devel
Of course, nvidia-vdpau-devel is only in the case you own a NVidia 3D
accelerator.
From SVN trunk
Checkout XBMC sources from SVN (at the moment I write this post you can read
the following sentence on XBMC's irc channel on Freenode: "Addons branch
merged, stay <= r28276 for a while! You've been warned!") :
svn co https://xbmc.svn.sourceforge.net/svnroot/xbmc/trunk/
xbmc/
Once this is done, cd into the newly created xbmc/ directory and boostrap
the sources :
./bootstrap
Then it's time for configure :
./configure --enable-mid --disable-debug --disable-pulse --prefix=/usr
--enable-ffmpeg-libvorbis --disable-ccache --enable-vdpau
Again, VDPAU is for NVidia users only. Use this switch if you want XBMC to
use the NVidia boards' hardware acceleration. Once configure is done, build the
code :
make -j3
The -jX option ask make to run X concurrent jobs, usually you set the number
of your processor core plus one (on my Core i7 with 4 hyperthreaded core, I
will use -j9 for example). You are now ready to install XBMC :
su -c "make install"
And you are done ! The only thing that still remains is to configure your
box to log in automatically on XBMC and to configure XBMC to your tastes.
A note for people with hardware that don't support SSE2 instructions (like
my Athlon 3000+), you have to disable SSE2 support in libsquish the quick (and
dirty) way is to comment the SSE2 instructions usage in the
xbmc/lib/libsquish/Makefile.in file.
From SVN Dharma branch
Checkout the Dharma branch :
svn checkout
https://xbmc.svn.sourceforge.net/svnroot/xbmc/branches/Dharma
And everything else is the same that for the trunk. At the moment,
I
strongly advise you to use this branch over the trunk !
3 - Some configuration / Hints
This part is not meant to be exhaustive, I will just give hints but I will
not go through all XBMC's options and I will not explain how to do things on
350 GNU/Linux distributions (go to XBMC wiki for that ^^).
3.1 - File server / organization
In my case the media center is also a file server, I use Yast2 to configure
Samba and NFS to do the job. I have a user (mediabox) which is dedicated to the
media center purpose. In his home directory I have a Medias sub-directory which
looks like that :
Some explanations might not be required but
I'll give them anyway :
- Images : main folder for all our pictures
- Incoming : unsorted media files
- Music : all the music we have
- Users : a storage directory for home network users
- Videos : quite obvious... this is were we put videos (DVD/BR rips,
vacations movies, etc.)
This Medias directory is the one shared on our home network.
3.2 - XBMC
OpenSUSE allows me to specify a user to auto log-in, I choose my mediabox
user and, that is a wonderful feature of XBMC, I choose xbmc-standalone as
default session. Now I can boot my media box like I boot my bluray player (well
my box is actually more quick to boot that my BR player...).
In XBMC you have to add location for your multimedia content, for example
for videos I have a Movies folder, go to the video item, push right (on your
keyboard or remote), choose "files" and browse to select the "Movies" folder
(or whatever yours is). Then select a category (Film in my case) and a
scrapper, don't forget to check the "auto scan" and "recursive scan" box. I
tend to prefer IMdb of thetvdb for movies. This possibility is amazing because
you can set a scrapper per folder. In my case I have standard English spoken
movies and French movies. I use a different scrapper for French movies
(Cine-passion) for better metadata. Do the same for all your multimedia content
(if you watch animes, try the ANIdb.net scrapper ^^).
In case no metadata or episodes are found for your series, please remember
that XBMC needs your series episodes torespect one of those naming conventions
:
- Serie Name - S<Season number>E<Episode
number>.<extension>
- Serie Name - <Season number>x<Episode
number>.<extension>
For example, the Death Note
episode 3 should be name either "Death Note - S01E03.mkv" or "Death Note -
1x03.mkv".
If your movies are not correctly detected, put them in a directory (the name
doesn't really matter) that contains your movie and a file with the same name
as your movie but with nfo extension and put the IMdb link to this movie in the
nfo file. For example, I put beowulf.mkv into the beowulf folder together with
the beowulf.nfo file that contains the correct link to IMdb... Because in
this case a particularly sad
misunderstanding could occur...
3.3 - Remote control
A word now on remote control, XBMC can be controlled by external programs. I
personally use the official
XBMC Android Remote, this one have many feature, is officially developed by
XBMC developers (many thanks to them !) and even if it is still a beta it is
really stable and efficient. On iPhone, there is no equivalent but there is
some nice stuff too. For example the highest rated one (when you search for
xbmc remote in the AppStore) is not free but is almost as good as the Android
version (not quite though).
You can get the XBMC Android Remote on the market. Here is the QR-Code :

You can also remote control your XBMC by pointing your browser at your media
center's address on the port you selected in XBMC settings (default: 8080).
4 - Building a cheap hardware base
Now that we have the software and since my pre-production install proved to
me that the concept was worth the effort, it is time to build a decent box to
use this and play all my multimedia content !
My main concerns for this box are :
- cost efficiency (less than 350 € is a requirement)
- performances (we want to be able to play HD content)
- silence
Although I tried to make the box relatively small it was not in my main
concerns list (I already have many computer at home so... one more, one
less...).
One of my point was to re-use some of my existing (but not used anymore)
parts (like the spare NVidia GeForce 8800 GTS2 I have or the two 2TB seagate
barracuda that are in my desk). So far what I needed was : a case, a
motherboard, a CPU, some RAM memory and a silent power supply. I already own
the other parts (but don't worry I will give you some hints with the price of
those parts if they were to buy).
My hardware supplier is the excellent webmerchant Materiel.net, if you are not in France or Belgium
you cannot use them but the prices should not change that much. So here we go
:
Motherboard + RAM + CPU : upgrade
kit (Intel Pentium E5400 2,70 GHz, MSI P45T-C51,2xG.Skill 1 GO DDRII
PC6400) => 182.99 €
Power supply : Cooler
Master Silent Pro 500W => 72.49 €
Case : Fractal Design
Define R2 => 92.49 €
------------------------------------------------------------------------------------------------------
Total : 347.97 € (Google
says ~ 460 US $)
The case is a bit of a luxury item but silence being on my top 3 concerns it
is worth the price. If you have to buy a HDD and a video card I will advice you
to choose the
WD Caviar Green 1TB (62.99 €) and the
Asus EAH5450 Silent (74.99 €). Both of them are silent, powerful enough for
a media center and power efficient (spare your power tab ^^). In this case the
box is a little bit expensive (if silence is not much a requirement for you,
you can save some money on the case and video card) but it is still less than a
pre-made box of this type. Moreover this box will be a file server, other
cannot be that easily transformed into a file server.
5 - Conclusion
While it took some time to write this post, it is not that long to have this
kind of media center up and running. I cannot imagine go back without now that
I have it, I digitalize all my content and watch everything from my anime to my
baby picture on it. Moreover, if your box is makes enough silent, believe me
the Women Acceptance Factor is quite strong (given the fact you wife/girlfriend
like to watch multimedia content).
I will update this post with more hints if asked in comments and I will add
a description of our real usage of this after a week or two using it.
I hope you will enjoy reading this post as much as I enjoyed writing it
!
Arnaud Dupuis