By Tom Lynema
My LHMC would have to interface with my existing home configuration via a wireless network with WPA security enabled and output to my television's S-Video or composite inputs, and it would have to connect to my media server via NFS.
For my LHMC hardware I choose the MSI MEGA 180. One of its main attractions was that it is based on a Linux-supported Nvidia chipset and video card. The video card in this model has S-Video and composite outputs. The box has frontal USB and a built-in 6-in-1 media card reader. The MEGA 180 comes as a barebones product. I purchased one in an online auction with an AMD Athlon 2400+ processor, 60GB hard drive, and DVD player for about $350.
I choose to install Ubuntu Linux on the LHMC because, thanks to its Debian roots, Ubuntu is easy to update and manage, and has a wide range of software available. The low maintenance overhead it provides makes the LHMC behave as reliably as an embedded system. And the Ubuntu community offers many solutions and guides in its wiki and forums.
The Ubuntu installation detected all of the MEGA's hardware correctly. The only thing that was configured incorrectly after the installation was the default screen resolution. To configure the video, Ubuntu needed to be configured to get sources from the universe and multiverse repositories. This allowed for the installation of the binary Nvidia drivers. X.org needed to be set up to output through S-Video so it could display to my television. This process is well documented on Ubuntu's wiki. The Nvidia driver is also able to output in multiple HD standards.
Configuration of the wireless card was not as simple. The wireless card that comes with the MEGA 180 is an Ralink RT2460. Ralink makes some of the most open source-friendly wireless chipsets in existence, yet the rt2400 driver doesn't support WPA. I worked around this by using the ndiswrapper driver, which can support WPA though wpa_supplicant. I configured ndiswrapper with the Windows version of the Ralink drivers. To prevent the rt2400 driver from loading at startup and conflicting with the ndiswrapper kernel module, I created a file named wlan under /etc/modutils and entered the line alias rt2400 ndiswrapper.
The configuration of WPA is well laid out in an Ubuntu howto. Because I was using ndiswrapper, the interface name of the card was wlan0. wpa_supplicant must be configured to use the ndiswrapper driver, so the /etc/default/wpasupplicant file needed to have OPTIONS set like this:
OPTIONS="-i wlan0 -D ndiswrapper -c /etc/wpa_supplicant.conf"
With hardware setup nearly complete, one thing still bugged me. The MEGA's LED display shows the hardware clock's time, but Ubuntu defaults the hardware clock to UTC, so the MEGA's clock was always off by the difference between my local timezone and UTC. By grepping though the etc directory for the string "UTC," I discovered that the configuration option was in the file /etc/default/rcS. Changing the line UTC=yes to UTC=no resolved the issue.
All of my digital media is stored on an NFS share. To enable NFS mounting in Ubuntu, I installed the portmap package. I added the line mediaserver.example.com:/home/media /home/media noatime,rsize=32768,wsize=32768,bg 0 0 to /etc/fstab so that the media library would be mounted to /home/media at system startup.
To configure Totem to play video, I installed the totem-xine package. The default backend, GStreamer, is automatically removed when you install the totem-xine package.
Audio playback was next. My Ogg music files played out of the box. The key to getting MP3 playback to work was installing libmad. I installed both libmad0 and gstreamer0.8-mad, and was able to play MP3 files. To fill any gaps that might come up, I also installed the gstreamer0.8-plugins-multiverse package, which includes all of the GStreamer plugins.
The LHMC has been rock solid since I set it up. It has handled all of the tasks that I planned to use it for and then some. The wow factor that I get when people visit is nice too.