Tuesday, February 24, 2009

Project Deanvo

Introduction

Several years ago I decided to discard my Tivo, and replace it with a Linux-based digital video recorder (DVR) built from off-the-shelf computer parts. My friends at work dubbed this Project Deanvo.

Digital Video Recorder Overview

A Digital Video Recorder (DVR) is a computer with the ability to record, and play video. Typically these devices have a controlling piece of software which schedules recordings, and automatically changes the channel on your cable TV box, or satellite dish.

Other than the basics, many DVRs have the ability to play DVDs, create DVDs, capture streaming Internet radio, download podcasts, listen to MP3s, view photos, and just about anything else possible on a general purpose computer.

Why Build a DVR?

The short answer is no sane person would build their own DVR. It's expensive, requires significant time and effort, and the most commonly used software (MythTV) is far from perfect.

But Tivo has begun to engage in some questionable business practices:
  • Tivo monitors the programs you watch. Of course, they claim this information is not used for nefarious purposes.

  • Tivo automatically downloads advertisements. This is particularly galling since you're paying for it. The whole point of a Tivo is to avoid ads.

  • Tivo makes it difficult to cancel your subscription. You can sign up online, but canceling requires a lengthly phone call. They put you on hold forever, and then you have to listen to their retention sales pitch.
A Tivo also require an expensive monthly service ($13/month). And Tivo controls your recordings; there's no easy way to extract them. In short, a homemade DVR allows you to regain control of your TV.

Quiet and Green Components

The hardware requirements of a DVR are slightly different from a general purpose computer. DVRs are usually never turned off, so a green (low power) machine is desirable. Also, a quiet DVR is essential, as any noise might disturb playback. But the machine must have enough processing power to play high bit rate video. And a powerful CPU typically requires a noisy fan. Fortunately there are a number of green, and quiet options available. Here's the part I used:
Antec NSK2400 Case


The NSK2400 is specifically designed to be a media center PC. It has two 120mm fans which provides good ventilation with minimal noise.


AMD64 3800+ CPU


The AMD64 3800+ draws only 45W, and can programmatically have its clock rate lowered to save even more power. Still, it has enough processing power to easily play DVD quality video.


Rosewill RCX-Z2-EX Heatsink


The XP-90 has four heatpipes bonded to aluminum fins. It is designed to dissipate 125W of heat -- about 3 times what the AMD64 3800 generates. This allows CPU to run with the fan off most of the time.


Corsair VX450W Power Supply


The VX450 is very quiet, and its efficiency rating is 80 Plus.


Western Digital WD10EACS 1TB Hard Drive


The WD10EACS is a high capacity (1TB), low noise, energy efficient hard drive. Perfect for a DVR.


Hauppauge PVR-250 Video Capture Card


The PVR-250 is a common component for a home made PVR. It has a hardware MPEG2 encoding engine which produces DVD quality video.

LCD Display

Some DVRs have a front panel display. While not absolutely necessary, it adds a nice finishing touch. I bought an LCD display from All Electronics, and built some control circuitry, and a carrier:

LCD Carrier

LCD Circuit Board

Cover


Here's what it looks like assembled:

LCD Display Assembled

LCD Display Installed

Satellite Dish Control

A DVR must be able to change channels on a cable, or satellite dish box. This is accomplish this by mimicking the infrared codes sent by the remote control. Commercial infrared transmitters typically do not support Linux.

After some research I decided to built my own. The circuit is remarkably simple:

Infrared Transmitter

Circuit Diagram


The Max232 provides a serial connection to the computer. The PIC microcontroller is a one-chip computer. It is loaded with the following microcode:
ir.asm

Software (MythTV)

The de facto standard for a Linux-based DVR is MythTV. It is far from perfect, but it does have many attractive features:
  • Commercial flagging. Tivo lets you fast forward past advertisements, but MythTV allows you to skip the entire commercial break with the press of one button.

  • Distributed playback. MythTV is divided into a recording module (backend), and playback module (frontend). This provides an built-in Slingbox-like feature enabling playback on any Internet-connected computer (PC, Mac, Linux). And since MythTV supports Universal Plug and Play (UPnP), it also plays back on Sony's Playstation 3 and the Samsung 8-series LCD TVs.

  • Inexpensive monthly service. MythTV needs a database of TV listings. While it is possible to extract (scrap) this information from web sites like TVGuide.com, almost all MythTV users buy a subscription from schedulesdirect.org. It's cheap ($20.00/year), and very reliable.

  • Open source development. The main advantages are that it's free, new feature are added rapidly, and bugs get fixed quickly.

  • Numerous Plug-in Features. MythTV is designed to be extended by a third party. For example, MythVideo can import, transcode, and play DVDs. MythWeb provides a web interface, which allows you to schedule a recording from any computer with a web browser.

Here's a few screen shots:

MythTV Main Screen

MythTV Recorded Programs



MythTV Program Guide

MythTV Program Playback

NPR Recorder

I listen to a lot of National Public Radio (NPR). It's the PBS of radio. Since most NPR stations have streaming MP3 broadcasts, it's pretty easy to automatically capture recordings. I cobbled together some perl scripts which are activated by a cron task, and voilà: NPR Tivo. Here's the relevant files:

npr_tivo.tar.Z

Conclusion

It was a lot of work, but I love my MythTV box. Of course, a year after I got everything working, I bought an HD TV. My MythTV box only supports 480i (DVD resolution),while the TV supports 1080p (full HD resolution). I suppose it's time to upgrade. That's the problem with computer technology: if it's working, it's out of date :)

No comments:

Post a Comment