The Tuner
Picking the tuner that works with Linux can be the most difficult part, some tuners us closed source drivers, some use open source drivers and some a mix in between. Almost all require some sort of firmware be loaded into the card on initialization, and most times this is proprietary also. My suggestion to those looking for tuners is to go for USB tuners as they are generally better supported and to go for something that has had in kernel support for a while. The best place to look for this is at the Linux TV Hardware Compatibility List or the USB DVB-T Devices List. Look for something that was supported in the stable kernel before the one you plan to use.
Originally I bought a dodgy AF9035 based tuner with only a manufacturer supplied driver that worked on kernels 2.6.18 – 2.6.28 and no support build into any kernel. After that little experience I wanted to make sure the next tuner I bought wouldn’t force me to run Fedora 10. I eventually stumbled upon the Leadtek Winfast DTV Gold on eBay. A quick check showed that it had been supported in the kernel since 2.6.28 so I was relatively sure it would work. Because the driver is now included in the kernel all you have to do is download the firmware and put it into /lib/firmware.
I use the oldest firmware available for the device, as some people mentioned trouble with tuning channels on the newer firmwares. However you need to stop Linux from polling the remote for keypresses, the newer firmware does not have this issue.. To stop the driver from completely filling up your /var partition with logs just create a file called /etc/modprobe.d/dvb.conf and putting into it
options dvb_usb disable_rc_polling=1
The thing I most like about this card is the LED inside. It glows blue while it has a signal lock, and flickers when it receives error in transmission. The reason this feature is so good is that my front end is in another room, but by watching this light I can orient the aerial by simply moving it until the light stops blinking. It doesn’t sound that great until you try to setup an indoor DTV aerial.
The PC
The criteria for choosing the PC to actually run the media center can depend on all sorts of things. To decide exactly what to buy you need to decide what your machine will be doing exactly. There are four parts to a MythTV setup, the storage device, the database server, the backends and the frontends.
The storage device is where the recordings, movies and music will be placed. It can be a USB connected disk, a built in hard drive, an NFS server or even an iSCSI device. In my MythTV system I store the recordings and music to an NFS server, and the movies to a USB disk shared from the same NFS server. So when I was looking for a device I already had the storage covered by other machines on my network.
The database server doesn’t need to be too powerful, as there isn’t much pressure put on the database, and since the files are stored separately on the backend it won’t get too big either. If you already have a database server available that is network accessible you could use that, otherwise you can just start a MySQL server on the backend or storage machine.
The backends really depend on how you will be capturing your picture. If your capturing analogue TV then it will need to be reasonable beefy as it need to encode it to a reasonable format, but if you’re using a DVB tuner the program will already be encoded with MPEG2 and can be saved directly from the tuner to disk. Encoding is mostly CPU intensive so backends that do so will need a beefy CPU or a reasonably powerful dual core. The other reason for a more powerful CPU is if you want to do on the fly commercial flagging. A backend usually only requires 512M of memory but more will speed up streaming, encoding and allow the backend to handle more frontends.
Finally the frontends need to either have a powerful CPU or have a graphics card capable of decoding the video in hardware. Generally it is a good idea to go for a box with a good graphics card anyway as it will allow you to enable all OpenGL rendering for menus and play 3D games. You should also have at least 1G of RAM in the frontend and more if you want better themes and HD video. More RAM allows for bigger buffers that can cover up network packet loss which is especially important when working over wifi.
These requirements fit quite closely with the ASRock range of nettops. To place the storage, frontend, backend and database all on the same machine, I recommend the ASRock ION330HT. It has the nVidia ION chipset for video acceleration, it comes with a remote, and can take two 2.5″ hard drives. A setup using this box will be able to handle a couple of frontends but is limited by the ultimate capacity of the hard drives you can put in it. For a more scalable setup I would suggest a whitebox PC for the backend, database and storage and an ASRock ION330HT for the frontends. I already had a MCE remote and didn’t need the wireless so I went with the ION330.
Remote Control
The generally accepted method for controlling a TV is a remote control and it works pretty well. Most people can figure out exactly how to control a TV/PVR device when handed a remote. This is mainly because every button is labelled with its function, as opposed to a keyboard which is labelled with arbitrary symbols. Generally when I’m watching TV I’m trying to relax, and trying to remember all the keybindings for MythTV can get very frustrating and keyboards can tend to be a little bulky. So for anyone looking to replace their TV a remote control of some sort is a requirement.
A Windows Media Center remote is designed for this exact purpose. They all include buttons such as “My Music”, “My TV”, “TV Guide” and “DVD Menu” which maps directly to MythTV screens and actions. This way you can map buttons to their exact function and anyone picking up the remote will be able to understand exactly how to use the system. I got my MCE remote control from a laptop that came with a reciever box. The driver for this receiver is available in the kernel and its called mce_usb2. All that is required is to copy the remote config file to the lirc directory and start the daemon. ASRock has released a Linux driver for the receiver built into the ION330HT too and I plan to work on building a Fedora package for it. If you plan on buying another remote make sure that it is supported by the LIRC project.
The Android OS includes an app called MythMote that connects to the frontend via the TCP remote control interface (which you can also connect to via telnet). MythMote contains buttons exactly mapped to the MythTV interface. This is the ideal option for anyone who already has an Android phone as no extra purchase is required. The only configuration required is to turn on the remote control interface in the frontend then give Mythmote the address and you’re done.
A slightly more archaic option is to grab a joystick, game controller or other similar device (control MythTV with a steering wheel?) and configure MythTV to use it. The configuration is slightly less than that of LIRC remotes but more than MythMote. You also have the problem that the buttons on the control do not directly map to MythTV function and they aren’t labelled to make it clear. You can however use the game controller with MythGame to play old NES, SNES, N64 and MAME games. I personally use the Logitech Cordless Rumblepad 2 as it has enough buttons to be able to emulate most game controllers.
LCD Screen
A while ago I bought two picoLCD screens for no particular purpose and since they have migrated between my computers as I try to find a way to use them. Currently its connected to my MythTV box and it seems the best fit I’ve found yet. That however doesn’t mean it’s it’s particularily useful. The most useful feature of the display is that it shows what the backend is recording and you don’t need to bring up the OSD to see program data. If you plan on buying an LCD device you should make sure it is one supported by the lcdproc project.
