Freevo Project

In June of 2003 I purchased a Mini-ITX motherboard and case to host JonandJolene.com. The machine has a Via Epia M10000 motherboard with a 1Ghz C3 Nehemiah CPU, 256MB, and 20GB HD in a Chyang Fun E-Note case. For more information regarding Mini-ITX, visit www.mini-itx.com.



Television, Stereo, Computer, Keyboard, Trackball, Logitec Wireless Joystick,
Remote, Microsoft Sidewinder Gamepad

As I mentioned, the machine was purchased to be a low-powered, small webserver to host mine and my wife’s personal website. The Mini-ITX form factor was perfectly suited to the task. After getting the webserver fully set up running Slackware 9.1, I turned my attention to getting the server to double as a home media PC, as so many others have done using the Epia boards. The board is again well-suited for this task as it has a built-in TV encoder chip for composite or S-Video output.

The Goal:

To create a box to play movies, music and games.

My goal was to set up the machine to play my existing collection of movies in DivX, MPEG, VCD, etc., as well as my 10+ GB collection of music in MP3 and Ogg Vorbis, and to act as a video game machine using emulators for my collection of MAME, SNES, Genesis, and GameBoy roms.

After doing some research, I found Freevo, a project designed to partly to emulate the functionality of the popular TiVo PVR. Freevo runs on Linux, written in Python as a front-end for many applications including MPlayer, the very excellent movie player for Linux. MPlayer has support for a lot of video and audio codecs, and has so far been able to play almost everything I’ve thrown at it. Freevo has a number of other plugins including image viewing, weather info, etc.

Initially, I had quite some difficulty getting this project running properly. The first great challenge was the video drivers. Via does not have very strong Linux support for their hardware. And although they have released a number of binary drivers for Redhat, Mandrake and SuSE, the source is not available for me to compile them for my Slackware box. (The “Lite” source package that is available from viaarena.com comes with little documentation and I had to really hack at it to get it to compile) Freevo can use XFree86 directly, or use SDL for video output. SDL is a cross-platform media abstraction library and can be configured to use the Linux kernel framebuffer device (fbdev), or use X11 itself. The Linux Vesa framebuffer device worked well, but seemed slower altogether. Via actually released a kernel framebuffer driver which worked rather well, but ultimately I determined I needed to use X11 for everything because too few Linux emulators supported SDL. Eventually, I was able to compile the Via Lite source package for Slackware and could use X11. (Though I was never able to get the DRI module to work properly)

After settling the video issues, (and replacing a bad CD-ROM drive) I went to work setting up my Freevo installation. I set up lircd with Freevo so that I could control it using my old Packard Bell remote control. (Thanks Ryan!) I set up my MAME and snes9x to run from Freevo. Freevo 1.3 was what I started with and it was a little rough around the edges, particularly with the video game functionality. For example, it did not always respawn when the emulator exited. After upgrading to Freevo 1.4.1, I now have MAME, SNES, NES, GameBoy, GameBoy Advance and Genesis emulation working.

Current Status

After putting all of this together, I now have a low-power, quiet Slackware Linux box in the entertainment center under my TV running Apache / PHP / MySQL for JonandJolene.com while running Freevo for my entertainment needs. Freevo allows me to play my collection of movies and TV shows recorded to CD-R, view images from the galleries of JonandJolene.com and listen to my large music collection conveniently using a typical remote control. Freevo has also turned my box into a very fine video game console with countless games from multiple consoles with the ability to control the whole thing via the remote! When using my Logitech cordless gamepad, I can play all of these games without leaving the couch. When playing multiplayer games, the two front-mounted usb ports work great, reminiscent of my old NES.



Freevo Main Screen



Webserver Up Close and Personal