For a couple years now I've been wanting to assemble a sufficiently powerful, quiet box to run MythTV. But, long ago I realized that researching/assembling PC-quality components was not my cup of tea. Luckily, tvease sells a variety of systems that are pre-installed with MythTV on an Ubuntu system. Ubuntu worked perfectly well - that is, until the hard drive began to fail. Though I have been trying to force myself to treat this machine as an appliance - ignoring the perfectly hackable system underneath - I decided that on re-install it would run Debian.
I purchased a baseline Hannibal system, mainly because each higher config meant I'd have to pay for things I don't need. I bridge the ethernet via my wireless Squeezebox 2) so I don't need wireless. I also thought I'd be able to get away with my old Hauppauge WinTV card, but later decided to replace it with a Hauppauge 500 Dual tuner.
I added a PATA disk since the SATA one had failed, but plan to go back to a SATA one once I receive the replacement. I was able to mount and access my failed (well, technically, *failing*) SATA drive under the Debian kernel to pull off configs, so I don't expect any problems with the SATA controller.
I installed Debian 4.0 i386 - even though the cpus support the amd64 flavour, I see no benefit in using it. I selected only the "Standard system" task.
MythTV is available from debian-multimedia.org, so I added that to sources.list (see the website for a pointer to your nearest mirror). I started by installing debian-multimedia-keyring to avoid apt warnings when installing later packages.
I also added contrib and non-free sections to my debian mirror entries in my sources.list, because the external video requires a non-free nvidia driver :(
I also chose to use etch-proposed-updates, for no other reason than to test them. Nothing there really adds to this install, so can be safely left out.
My final sources.list file looks like this:
deb http://mirrors.kernel.org/debian/ etch main contrib non-free deb-src http://mirrors.kernel.org/debian/ etch main contrib non-free deb http://mirrors.kernel.org/debian/ etch-proposed-updates main contrib non-free deb-src http://mirrors.kernel.org/debian/ etch-proposed-updates main contrib non-free deb http://security.debian.org/ etch/updates main contrib non-free deb-src http://security.debian.org/ etch/updates main contrib non-free deb http://www.debian-multimedia.org/ etch main deb-src http://www.debian-multimedia.org/ etch main
Next I installed a number of packages. First, stuff to make my life easier:
# aptitude install openssh-server sudo emacs21
Stuff I need for a X, including the lightweight ice window manager:
# aptitude install nvidia-xconfig nvidia-kernel-2.6-686 x-window-system icewm
To make use of my capture card:
# aptitude install ivtv-modules-2.6-686 ivtv-utils
To use the remote, we need to build the lirc modules:
# aptitude install lirc lirc-modules-source module-assistant
I don't really know if I need this stuff, but I'm used to installing it on systems on which I listen to audio:
# aptitude install linux-sound-ase alsa-base alsa-utils
mythtv + extras:
# aptitude install mythtv mythcontrols mythdvd mythflix mythvideo mythweather mythweb
And gdm so that we can setup auto-login (there's no-doubt lighter-weight options):
# aptitude install gdm
etch doesn't provide pre-built lirc modules, so we need to build them. By default it doesn't build the module we need for the usb device that comes with the Hannibal, so we need to tell it to. To do so, edit /etc/lirc/lirc-modules-source.conf and change:
LIRC_MODULES="i2c, gpio, mceusb2"Then you can build and install the modules using module-assistant:
# m-a prepare # m-a a-i lirc
Another benefit of buying this system pre-configured is that the Ubuntu install included a number of the config files I needed. For lirc, I copied the /etc/lirc/lircd.conf, /home/mythtv/.lircrc, and /home/mythtv/.mythtv/lircrc over directly.
For X, I ran the nvidia-xconfig tool to generate a new /etc/X11/xorg.conf file. To get the external display, I needed to add some options to the Device section (copied from tvease-provided config):
Section "Device" Identifier "nVidia Corporation NV44A [GeForce 6200]" Driver "nvidia" # BEGIN manually added by dannf Option "ConnectedMonitor" "TV" Option "TVStandard" "NTSC-M" # END manually added by dannf EndSection
The ivtv driver needs some firmware blob files. I simply copied them over from the Ubuntu system. But, since I don't know the details of their licensing, I'll only post the file names here:
mythtv@mythtv:~$ ls -l /lib/firmware/ total 692 -rw-r--r-- 1 root root 262144 2007-07-17 18:46 v4l-cx2341x-dec.fw -rw-r--r-- 1 root root 262144 2007-07-17 18:46 v4l-cx2341x-enc.fw lrwxrwxrwx 1 root root 20 2007-07-17 18:43 v4l-cx2341x-init-mpeg.bin -> v4l-cx2341x-init.mpg -rw-r--r-- 1 root root 155648 2007-01-07 08:04 v4l-cx2341x-init.mpg -rw-r--r-- 1 root root 16382 2007-07-17 19:18 v4l-cx25840.fwThe ivtv-utils package provides a tool called ivtv-make-fwpkg that you can use to produce a deb from a zip file containing the firmware blobs. I found a link to such a zip file here. Unfortunately, this process does not get you the v4l-cx25840.fw file, which is necessary for audio initialization. (It looks like a newer version of this zip file from Hauppauge might, but the link to it on this ivtvdriver page requires a login).
At this point I tested mythtv and made sure it worked fine, and it did. There's no need to do anything with mysql manually (setting passwords, etc) - that all just worked for me. The normal process of running mythtv-setup, starting the backend, running the frontend, and configuring it all went pretty well - that stuff is pretty well documented elsewhere on the Internet, so I won't go into detail.
Finally, I wanted the box to boot right into mythtv. That takes a few tweaks. First, you need to tell gdm to automatically login as user mythtv. To do that, add the following lines to the [daemon] section in /etc/gdm/gdm.conf:
[daemon] AutomaticLoginEnable=true AutomaticLogin=mythtv
To hide the menubar in icewm, run the following as user mythtv:
$ mkdir ~/.icewm $ echo "TaskBarAutoHide = 1" > ~/.icewm/preferences
And to have mythtv automatically start, create a ~mythtv/.xsession file with the following contents (and make sure its executable):
#!/bin/bash icewm & mythwelcome
Um... I think so. I didn't keep step by step notes and I'm certain I didn't do everything in the exact order I mention above. The lirc stuff in particular took me a while to figure out, because its wasn't obvious that I needed to tweak a config file to build all modules.