Build a MythTV Box without Breaking the Bank
At my wedding, I received an important piece of advice from a couple whose wedding we had attended a couple years earlier: get a second TV. The idea is that while she's watching America's Next Top Model, I can watch hockey or mud wrestling or something. However, a much better solution to that age-old problem (and many others) is to set up a DVR system using Isaac Richards' open-source MythTV software. That way, we can watch whatever shows we want at any time.
This article shows how to build a MythTV box on a budget and how to avoid some common pitfalls. The following is the hardware you'll need:
A computer: the first step is to get your hands on an old computer. You already may have one gathering dust in the basement. I bought one for $70 on Craigslist. I was cautious and chose one with a 1.6GHz AMD Athlon processor. You should be able to get by on much less by minimizing the load on your processor. Price: $0–$70.
Tuner card: you need a tuner card to take the digital or analog television signal and turn it into something your computer understands. The best ones for use with Linux are the Hauppauge WinTV-PVR series; the PVR-150 is a single tuner with a built-in MPEG encoder, the PVR-350 is a single tuner with built-in MPEG encoder and decoder, and the PVR-500 has two tuners with an MPEG encoder only. I bought my first PVR-150 for $85 (in Canada), including a remote and IR blaster (I'll explain what that is later). Regular prices in the US range to as low as $60. I bought my second one on sale for $25. I recommend starting with one PVR-150, and then buying another later if you feel the need. Price: $25–$85.
Hard drive: your computer likely already has a hard drive, but it's probably not larger than 8GB, and you'll need a bigger one. The size depends on how much of a library you plan to build. I bought a 250GB hard drive at first, then picked up a 500GB external drive later on. Price: $60–$80 for 250GB; $90–$150 for 500GB.
Video card: the choice of video card is very important, particularly if it's an older model. You may need to buy a new video card if your existing one doesn't have a TV-out connection. NVIDIA has the best Linux support, and you can run into a lot of problems with an older ATI card, as they haven't released proprietary drivers for them. Price: $0–$60.
DVD drive: if you want to watch DVDs or burn recorded programs to DVD, you need a DVD-ROM or DVD-RW drive. I definitely recommend this, as they are not too expensive these days. Price: $35.
I like Ubuntu and use it on my other computers as well, so I decided to install Mythbuntu—a MythTV-centered distribution based on Ubuntu. Unfortunately, I had trouble installing both Mythbuntu and Ubuntu itself—probably because of my RAM limitations—so I installed Xubuntu (a lightweight Ubuntu running the Xfce desktop manager) instead. The install was quite easy; however, one unexpected (but easily fixed) problem emerged. I couldn't boot after successfully installing the operating system. The GRUB bootloader would spit out “Error 18”. The problem turned out to be that on older computers, the BIOS can't handle partitions larger than 8GB. So, you have to partition the disk and create a boot partition (or root partition) that is smaller than 8GB.
A word on filesystems: I used the ext3 filesystem in the initial install, but used XFS (which is better at deleting large files) on an external drive that I bought later. I wouldn't recommend doing this unless you're familiar with XFS. I've had some issues with it—for example, it tends to become unmounted pretty frequently, requiring me to remount it, which is pretty annoying when you're trying to watch TV. The ext3 filesystem works just fine, but you should enable slow delete in the back-end settings (under General).
The next issue is connecting your MythTV box to the TV. If you have a new TV (particularly an LCD TV), you may have a VGA port in the back. If so, great—simply connect it as you would a monitor. If not, you'll need to connect the TV-out port on your video card (or PVR-350 tuner card) to the TV using an S-cable. You also need to add an entry to the /etc/X11/xorg.conf file. You may become very familiar with this file, particularly if you get a new TV or video card. Following the install, I added the following Monitor entry:
Section "Monitor" Identifier "Samsung" DisplaySize 400 300 HorizSync 35 - 50 VertRefresh 60 - 60 Option "DPMS" EndSection
Your entry will depend on the make of TV you have. When I got an LCD TV, I changed it to the following:
Section "Monitor" Identifier "LG 32LC7D" UseModes "Modes" DisplaySize 1360 768 HorizSync 31.0 - 60.0 VertRefresh 60.0 Option "DPMS" EndSection
I also had to add a new section:
Section "Modes" Identifier "Modes" ModeLine "1360x768" 85.5 1360 1424 1536 1792 768 771 777 795 ↪+hsync +vsync ModeLine "1216x684" 74.2 1216 1356 1396 1650 684 704 709 750 ↪+hsync +vsync EndSection
If you installed Mythbuntu, you should be ready to go at this point. If not, use the Synaptic package manager to install MythTV and any plugins you want. Configuring MythTV the first time can be a daunting task, due to the large number of available options. You gradually will become familiar with many of them, but I'll walk you through the basic initial setup next.
|September 2015 Issue of Linux Journal: HOW-TOs||Sep 01, 2015|
|September 2015 Video Preview||Sep 01, 2015|
|Using tshark to Watch and Inspect Network Traffic||Aug 31, 2015|
|Where's That Pesky Hidden Word?||Aug 28, 2015|
|A Project to Guarantee Better Security for Open-Source Projects||Aug 27, 2015|
|Concerning Containers' Connections: on Docker Networking||Aug 26, 2015|
- Optimization in GCC
- Using tshark to Watch and Inspect Network Traffic
- September 2015 Issue of Linux Journal: HOW-TOs
- Problems with Ubuntu's Software Center and How Canonical Plans to Fix Them
- Concerning Containers' Connections: on Docker Networking
- A Project to Guarantee Better Security for Open-Source Projects
- Where's That Pesky Hidden Word?
- Firefox Security Exploit Targets Linux Users and Web Developers
- My Network Go-Bag
- Doing Astronomy with Python