June 29, 2006

Set up a Freevo media center

Author: Manolis Tzanidakis

I've been a happy MythTV user for a long time -- you can check out my review of version 0.19 -- but lately I've been feeling that something is missing. MythTV is great for watching and recording TV, but I watch TV less than four hours per week. On the other hand, I love music, and MythTV offers no easy way to listen to music from various sources, such as audio CDs and Web-based and FM radio stations. After fiddling with custom solutions based on MPD and MPlayer, I decided to look for an alternative -- which led me to Freevo.

Freevo is like a window manager -- an interface controlled by a remote control or the keyboard -- that provides access to various media. It is written mostly in the Python programming language, which makes it hacking-friendly.

Everything you expect to find on a media center platform is present in Freevo; you can listen to music, view pictures, and watch TV and video. Freevo offers no internal player, but relies exclusively on external programs like MPlayer and Xine for playing media files and viewing TV. I use MPlayer for all media formats except DVD video playback, since MPlayer currently has no support for DVD menus. Xine fills that gap nicely.

For TV viewing, you can use MPlayer and Xine, or if your tuner card is supported you can use tvtime instead, which claims to offer higher picture quality. Unfortunately tvtime doesn't support my TV card. Freevo uses MEncoder for recording TV, and it can use TV guides in XML format, which can be downloaded off the Net using XMLTV or similar programs.

The music player supports audio CD playback, Web and FM radio, and of course traditional digital formats such as Ogg Vorbis and MP3. With the audio.detach plugin -- which is installed but not enabled by default -- you can even have music playing in the background and do other stuff like play games or view pictures at the same time. The image viewer, in addition to the expected slide show feature, also allows limited image editing, such as rotation and deletion. The games plugin supports console and arcade emulators and can be configured to run modern Linux games or Windows games emulated with Wine.

Figure 1: Click to enlarge

I installed Freevo on the same system I used for MythTV -- a home-built box with a 1.8GHz Pentium 4 CPU, 512MB RAM, 80GB hard disk, ATI Radeon 9200 video card, and Hauppauge PVR-350 TV/radio tuner. If you plan on using HD video resolutions you should get a faster system. My media center box runs Debian Testing (Etch) with a few packages from Unstable and MPlayer from the debian-multimedia.org unofficial repository.

I've found Freevo to be quite stable. The only crash I had was when I was listening to music and at the same time viewing a slide show of some high-resolution photos, but I wasn't able to reproduce the problem. Since I used to have similar problems with MythTV I suspect that the problem is caused by ATI binary drivers and not Freevo.

Installation and configuration

The Freevo project offers binary packages for most popular GNU/Linux distributions. Installing from source should not be a problem since Freevo is a Python program and requires no compilation. The difficult part is to install its dependencies.

In order to finish the installation you must run freevo setup (the Debian package did this automatically in my case) to set up basic things like paths of external programs, TV system, and the geometry of your display. Freevo does not require an X server and can also run on a frame-buffer device -- with video cards from vendors such as Matrox -- so getting the geometry right is essential.

Figure 2: Click to enlarge

If you're used to MythTV and run Freevo for the first time, you may wonder where the Setup menu option is; there isn't any. The only things you need in order to configure Freevo are a text editor and lots of patience. Start by creating a .freevo directory in the home directory of the user who will run Freevo, copy the file local_conf.py (installed in /etc/freevo by the Debian package) into it, and then open it. You should also open the freevo_config.py file (usually installed in /usr/share/freevo), which contains the default parameters, as a reference for all available options. Do not edit it, though; make modifications to the local_conf.py file instead.

If you're a newcomer to the Unix world, this configuration process might seem peculiar, but on the other hand, Freevo can be customized extensively. You can select different options for MPlayer for each media file extension, disable a specific function -- for example, TV, if you don't have a TV tuner card -- or turn off de-interlacing for TV, among other options. Freevo is quite modular -- almost everything is a plugin. In order to get a list of the available plugins and track which ones you've enabled, issue the command freevo plugins -l | less; to get more information about a specific plugin and how to activate it, run freevo plugins -i plugin_name. The command freevo -h shows all available options. Additional plugins and skins can be downloaded from the add-ons page.

Everything you need to know about installing and configuring Freevo is available in the project's documentation. Freevo has myriad options; we'd need 10 more articles to cover them all. Read the docs carefully and don't be afraid to get your hands dirty.

Turn it on

After tailoring the configuration to your liking, running the program is just a simple freevo start away. The Debian package starts it automatically using init scripts, but I chose to disable them (with update-rc.d -f freevo remove) and run it manually instead. If your configuration file is error-free you should be greeted by the main menu and be able to browse through your media collection; if not, check the logs (by default /tmp/freevo/main-1000.log) and try again. Forgetting to add just a single tiny comma is enough to break things. You can exit the program with freevo stop, or select Shutdown on the main menu. Note that the TV recording server does not start at the same time as the main program -- you have to manually activate it by issuing freevo recordserver start.

If you are spoiled by MythTV and its TV time-shifting, multi-tuner card support, and client/server architecture, you should either stick to MythTV or wait for the version 2.x of Freevo, currently in development. At the moment, TV support in Freevo is quite spartan, with the exception being that another system can be used as a TV recording server. Nevertheless, basic TV viewing and recording works without problems. I've managed to watch and record a few World Cup football (or soccer, for American readers) games these days.

Though it lacks advanced TV features, I prefer Freevo over any media center program I've tried so far, but, as I said, I rarely watch TV. MythTV is clearly a winner in that area; if you like TV and plan to create a digital video recorder, you should choose it instead. On the other hand, MythTV lacks some features that Freevo excels at. Version 2.x of Freevo seems promising -- give it a shot if you feel adventurous.

Click Here!