The State of Home-Brew PVRs on Linux

We've heard rumblings in the community for quite some time about individuals
creating homebrew PVRs using
Linux. Out of these stories and legends, a few projects have actually developed
some rather useful PVR applications. In this article, I'll describe my own
experience building my PVR. I'll also outline the various projects that make
up the current state of PVR technology on Linux.

Hardware Requirements

You'll need to consider a few things when building a PVR. The first is the
type of case. Since the PVR box will most likely reside in your living room
next to your TV, you will want a quiet, good-looking case. Several cases on
the market today cater to the home entertainment PC.

Since your PVR will be encoding video, you'll need a decently beefy
processor. Freevo's documentation
recommends at least a 400MHz processor, while MythTV says you'll need over 1GHz to record and watch TV at the same time. With the current low prices of processors, I
recommend going as fast as you can afford. I also recommend buying as much RAM
as possible.

If you wish to record a show and watch a live TV show at the same time, you will need two TV cards: one for recording and one for watching TV. I would highly
recommend using one of the many cards supported by the bttv Linux drivers. If you wish to listen to FM radio, you can pick up one of the WinTV cards that include an FM tuner as
well.

Audiophiles, listen up! You'll want to put a nice sound card in the box and
purchase some nice (-looking and -sounding) speakers.

Software Requirements

Before installing MythTV, you'll probably need to install ALSA, fortunately found in the latest 2.6 test kernels. On the other hand, if you are installing Freevo, you will need
quite a few applications to get it up and running.

Both MythTV and Freevo require a few libraries and applications. First
you'll need to install XMLTV to download TV listings and LIRC to use a remote to
control your Linux PVR once you have it set up.

Freevo is basically a controller application that launches various
applications, depending on the user's request. To play movies, record TV, watch
recorded shows, and play DVDs, you will need MPlayer. Alternatively, Freevo's CVS version also has a plug-in for using Xine to play DVDs. I highly recommend tvtime for watching live TV. MPlayer is currently the default TV application; however, I found that the A/V was out of sync. Using tvtime fixed this problem.

Remember, for both Freevo and MythTV you will most likely have to recompile
your kernel. Make sure to include frame-buffer support, USB support (for a
StreamZap USB remote and other USB devices, such as gamepads), and ext3 support
(for quick reboots after hard power downs).

MythTV vs. Freevo

Freevo

When I started my project six months ago, I decided to go with Freevo, mainly
because it played DVDs. Freevo is also programmed in Python, which makes it
much easier to hack on for those of us who are C-challenged. It's designed
very modularly, making it easy to use other applications.

One of the problems I have with Freevo is that a lot of the features are
only 90% complete. There are some small and annoying UI problems, though
overall, the application is easy to use and works well for basic PVR
applications. Freevo is currently transitioning to a recording daemon, which
should improve its recording abilities drastically. For now, I highly recommend
using WebVCR+ until Freevo's
recording daemon becomes stable. Also, those wishing for time shifting (pausing
live TV) may want to consider MythTV, since Freevo does not currently support
this feature.

If you decide to install Freevo, you may want to look over my Freevo HOWTO.

MythTV

MythTV sports a few features that Freevo lacks, but can be quite a bit
harder to set up. In fact the setup process is one of the few reasons I didn't
choose MythTV. However, the impressive list of features in MythTV will be
enough for many people to trudge through the lengthy setup process.

MythTV's more impressive features include time shifting, a client/server
environment, rudimentary video editing, and DVD ripping. One of the drawbacks,
however, is that MythTV uses its own modified version of NuppelVideo as its
primary codec, which will limit those wishing to export recorded shows to other
formats (i.e., VCDs). MythTV also comes with its own web back end, support for
LIRC, and a themeable onscreen display.

WebVCR+

WebVCR+ is an easy-to-use
recording interface. It's web-based, written in PHP, MySQL, and Perl. I use
WebVCR+ to record TV shows, which are then moved into my Freevo folders where I
am free to watch them on my TV. I only mention WebVCR+ because it records TV.
If you want more than mere recording, you will want to install Freevo or
MythTV.

Outputting to Your TV

After a lot of fussing around, I was able to get Freevo to output to my TV.
Whether you decide to install Freevo or MythTV, you will want to purchase a
Matrox G400/450 card, which has the best TV-out support under Linux.

Freevo supports both the Linux frame buffer and running in XFree86,
while MythTV only runs under X. While getting Freevo to display full-screen on
my TV with the frame buffer was rather simple, getting X to display in
full-screen was difficult. In fact, I gave up and went with the frame buffer,
since it was already working.

The Cost

Just like any computer, your PVR box can be cheap or expensive. I've put
about $600.00 (USD) into my box so far; however, this includes a nice Seagate
drive, sound-dampening materials, and a lighted window case. I also justify the
extra cost by telling myself it does other things than a regular TiVo and that
a TiVo with a lifetime subscription can cost almost as much.

Conclusion

The good news is that the PVR applications out there are ready for home
media-center use. The bad news is that it's not a simple task to get a box up
and running. More good news is that both Freevo and MythTV have support for
much more than mere PVR applications. Both projects support MAME, photo albums,
CD ripping/playback, MP3/Ogg playback, IMDB support, and Internet radio and weather reports.

I'd say, on a whole, Linux PVR technology is in great shape. I actively use
my Freevo box daily to record TV shows, watch DVDs, and listen to music.

Joe Stump
is the Lead Architect for Digg where
he spends his time partitioning data, creating internal services, and
ensuring the code frameworks are in working order.