Thursday 11 June 2009

The woes of building a home HTPC / file server

Recently I decided that I want to build me a nice HTPC. You know - the PC you stick under your TV and it's supposed to manage all the media playback, recording and other management thereof.
I just happen to have a nice Athlon 64 X2 3800+ sitting around, doing absolutely nothing, so I thought that sticking it into a nice HTPC case, adding 3 super big disks in RAID-5 and connecting it to my Logitech Z-5500 speakers + a nice full HD LCD TV might fix all my file and media needs.

These were my requirements:
  1. File server - i have lots of projects I'm working on and some of them require substantial storage
  2. Media storage - i also make about 20GB of photos and movies with my digital camera per year
  3. Kids games - not a requirement, but it would be nice if my kids could play some games on the gadget
  4. IP TV - i have a provider that streams live TV through IP. Though their offering is quite user friendly, I still want to have all the functionality merged in one box.
  5. Simple interface - I want the media functionality to be as easily accessible as possible
  6. Instant on - I want my HTPC to be available from shutdown or stand by in a few seconds time
  7. Performance - I want all my movies to play back flawlessly with no dropped frames
To be honest, I didn't expect to bump into so many problems with the first requirement already: the desire to make my data a bit safer by using RAID-5 turned out to be a major problem. Hardware controllers are pretty expensive and also a bit of a problem when they die: if you can't get a replacement, your array died with the controller. So I decided to go software. I found that there's a hack for windows XP, but none (yet) for Vista or Windows 7. I just can't understand why MS offers this support only for server OS versions. Where have you seen a decent server that used software RAID?!? One point for Linux since RAID-5 is quite well supported there. I just don't like hacks...

Requirement two also turned out to be a bit of a problem: most HTPC softwares simply don't offer what I need in this respect. I don't want my movies to be separated from my photos. They were shot in order and I want to watch them in order as well, not in some other menu with a gazillion clicks to find what I'm looking for. It's idiotic, really, since all media software can display images as well as play movies, but few can simply take what I feed them and display that in the photo gallery without regard for the type of the file. We're in the 21st century guys!!! Even photos aren't what they used to be any more.

I haven't played much with the third requirement - at this point I can only say that Windows 7 Media center has a special menu for games installed in the Games folder. How it works I haven't even checked out yet.

IP TV also poses a significant problem. Lots of PVR / HTPC software recognizes and works with tuners, but simulating a tuner with IP TV is so much tougher. Many won't even think of going there, others just make it hard. Direct separate support for IP TV is of course out of the question.

Simple interface isn't a problem. Most of HTPS sotwares offer easy enough interface. It just starts getting a bit more complicated when you're trying to solve specific problems through plugins.

Instant on again proved to be quite a handful. The computer in question takes about a minute to boot into OS and a minute is not the time I'm willing to wait for it to boot. So sleep / resume is the only option forward. Well, as it turns out, only Windows 7 makes my little Athlon go to sleep and resume, all other OSs simply fail at any step of the process. Some won't go to sleep, some won't properly resume after...

And finally, there's performance issues. It seems my Athlon isn't capable of playing full HD content on one core, it simply needs both and even then it might skip a frame here and there. Some HW acceleration would definitely be appreciated from my good old GeForce 6600GT graphics card. As it turns out, the card is too old to support H264 acceleration. And I do recode all my movie clips into H264. I'm not exactly fond of MPEG 2 they are originally coded in. It's way too big for my taste and my quantities. Recoding to H264 and AAC saves me lots of space. 5/6 to be exact.
Anyway, it turns out that mplayer in Linux is compiled single threaded and so it most of other media software. I managed to compile mplayer with multi threading support, but mplayer isn't exacty the front-end I desire in my HTPC. I failed with other programs...
FfdShow for Windows on the other hand seems to handle my files just fine...

Well, currently I'm quite stuck with my little project. Some of my requirements aren't met in Windows, some in Linux and I'm not exactly sure how I can get my self out of this mess and still have my HTPC.
It seems the problems on windows are easier to solve. Since there's no SW RAID, I can always just buy a HW card and be done with it. Or write a nice little driver that would do things my way. I already know backup is going to be an issue. I'm planning on having an array four times as big as all the disks I currently have...
As for the other problems - Sometimes I understand why everyone wants to build their own HTPC / PVR software...