October 7, 2003

pcHDTV: for the Linux geek on your shopping list

- by Joe Barr -
Does the coming holiday season have you wondering what to get the geek on your shopping list -- the one who already has everything? One item you might consider is the HD-2000 High definition TV card for Linux. Just make sure that the recipient is geek-to-the-bone. The HD-2000 is not for the faux-geek or the gweak of heart. Not yet, at least. Updated

This story actually began a couple of months ago. That's when I made a wrong turn in Best Buy and found myself in the middle of the large-screen HDTV section. It was the first time I had seen HDTV up-close-and-personal, and I really couldn't believe how sharp the pictures were. So when I saw a NewsVac announcement a couple of weeks later about an HDTV card for Linux -- a card which can be had for a fraction of the cost of a regular HDTV set -- I decided it was my obligation to our readers to review a pcHDTV card for NewsForge.

More mega-pixels equals better pictures

HDTV, in case you haven't kept up, is to regular TV what the monster mega-pixel digital cameras available today are to the first digital cameras made a few years ago. More mega-pixels means a picture that is bigger, sharper, and clearer. Oh, and HDTV includes 5.1 channel Dolby digital sound as well. There is a wonderful article about how HDTV differs from regular TV on howstuffworks.com if you're interested in learning more.

I contacted the HD-2000 card manufacturer and requested a unit for review. I've been tinkering with it ever since. Well, that's not strictly true. I've been tinkering more with my PC than I have with the card itself, but for the same purpose.

The system requirements listed for the card on the pcHDTV Web site are as follows:

  • Intelî Pentiumî 1200Mhz or higher
  • Linux Red Hat Linux 7.2, 7.3, 8.0 and 9.0 (with glibc-2.3.2-11.9)
  • Sound card with S/PDIF support and external sound system
  • 256 MB RAM or higher
  • CD ROM Drive
  • One available PCI 2.2 5-volt slot

I can't speak for every item on that list, but I can vouch for one: Don't skimp on the CPU requirements. My 1GHz Athlon simply didn't have the horsepower required to drive the card. I tried everything, and pcHDTV founder Jack S. Kelliher assisted me in at least a dozen different tuning efforts to make it work. However, it crashed within a second every time I tried to use the custom version of xine (included with the card) to watch HDTV off-the-air (OTA).

Some other considerations

Two other items you need to consider. The first is non-negotiable. You need to have good reception of an HDTV broadcast station or stations. You can't use it with HDTV from cable, and weak reception of HDTV stations will lead to the sort of crashes I got with a too-weak CPU. Another, less critical, item is that older video cards may not give you the full performance of which the pcHDTV card is capable. I decided on both a newer video card and a more powerful CPU when I finally realized that without a serious system upgrade, I wasn't going to be seeing those gorgeous HDTV pictures.

Cost-conscious as always, I opted for a mainboard/CPU (Abit KD7A with Athlon XP 2000+ 1.67Mhz/266 CPU) combo-deal and added 256 meg of DDR memory to bring the total to 512 meg. I also grabbed a GeForce 4 MX 440-SE video card to complete the makeover.

Once I had upgraded the mainboard, CPU, and video card, I turned my attention once more to the pcHDTV installation process. I decided on a fresh start, with the latest kernel possible. I downloaded the kernel and kernel-source packages for 2.4.20-20.9 from Redhat and installed them. After booting with the new kernel, I installed the latest Nvidia driver to match the kernel and my new card.

Now I had new hardware, the latest kernel, and a freshly compiled Nvidia driver as my starting point. I was finally ready for a good pcHDTV installation. I copied the XF86Config that was tailored to the proprietary driver back in place and restarted X. The Nvidia splashscreen appeared as it loaded, and I was ready to roll.

Doing the installation

Following the detailed step-by-step instructions provided for an RH 9 install, I began by installing the drivers for the pcHDTV card. First, I created a work directory called "pcHDTV" in my home directory. Next I copied V4L2-HD-RH90-1_0.tar.gz from the CD to the newly created pcHDTV directory and decompressed/untarred it. Then I went into the V4L-hd directory and ran "make" and (as root) "make install."

The CD includes tools that can be used at this point to see if the card and drivers are working. I copied the contents of the tools directory on the CD to a similarly named directory in my pcHDTV working directory. Although executables were also present, there was a makefile and source code present as well. (By the way, all of the tools that come with the pcHDTV, the patch to the V4L driver, and the customer HDTV code added to xine are licensed under the GPL.) I ran "make"/"make install" on them, just to make sure I had the best match for my system.

Then I ran dtvsignal /dev/dtv 33 per the instructions, to measure the signal strength of a station I knew to be broadcasting HDTV. The results looked good. The station was being received with a signal strength of 89 or 90, well above the minimum of 60 that pcHDTV recommends.

For a first-time installation, this is the point where you can adjust your antenna for the best signal by turning it slightly one direction or the other and then using dtvsignal to measure the results. My antenna was already pointed in the optimum direction for reception of the Austin stations, so I was ready to continue the process.

Building the custom xine

The next step was building xine-hd, the custom version of xine which can handle HDTV signals and output. I copied the xine-hd library and GUI tarballs from the CD to a new directory in my pcHDTV working directory. Per the instructions, and since I do have an Nvidia card, I also copied libXvMC.a from the CD to /usr/X11R6/lib/ and XvMC.h to /usr/include/X11/extensions/.

After untarring the xine-lib file, I entered the directory it created and ran ./configure and then kicked off "make." A few minutes later "make" finished and (as root) I ran "make install."

Then I used another of the software tools included with the card to create a playlist of HDTV broadcast stations in the area. I ran dtvscan /dev/dtv > ~/.xine/chanlist and waited as it checked every channel the tuner receives for HDTV. When it was finished, there was a channel list in my .xine directory.

Now came the big test. I tried starting the custom xine and pointing it to a good strong channel by entering the following CLI arguments for the custom version of xine: "xine -V xvmc -c33.1 dtv://".

There it was, the gorgeous TV picture I had spent all those hours trying to achieve, right there in front of me on my monitor. It had excellent sound quality, too. I was tempted to connect two more speakers and get the full surround-sound effect, but I haven't done that yet.

Even with the new CPU power and video card, I still manage to crash the custom xine from time to time while watching HDTV OTA. Sometimes it crashed when I dragged the screen to a new location, and sometimes when I changed channels. I expect the latter problem can be cured by removing weaker stations from the play list.

It's an edgy technology, so beware

This is edgy technology, and you have to expect to get your knuckles scraped from time to time when you're on the edge. So I am not really that surprised or disappointed that it isn't yet as stable as older TV hardware and apps. The bottom line is that you don't want to wait until your Aunt Nadine calls to tell you she's watching the Cowboys game on her Linux-powered HDTV equipped PC to get in the game, do you?

Besides, there are other ways to watch HDTV with your pcHDTV rather than live OTA broadcasts. One of the tools included with pcHDT allows you to record OTA broadcast for later viewing. This approach takes a big load off your system. In fact, I could record and play back broadcasts on my PC before I did the upgrade, and it worked just fine.

To record a show on Channel 33, for example, I entered getatsc /dev/dtv 33 >record-chnl-33.ts and simply did a CTL-C in the same terminal to end the recording. To play it back, I started xine with the command xine -V xvmc 33.1 record-chnl-33.ts. Most HDTV broadcasts in my area are sending on multiple sub-channels -- usually a weather broadcast in addition to the network feed. You can use the channel controls in xine to select different subchannels on the recorded HDTV broadcast.

You can play the recorded files back with a standard version of xine, by the way, you don't need the custom xine-hd that comes with the card. Or you can use something else entirely, such as VLC, a popular multiplatform video viewer.

25GB for one football game

If there is a drawback with recording HDTV from the card, it is nothing more than the fact that it eats hard drive space fairly quickly. Assuming a three-hour broadcast for a football game, for example, it would require about 25 GB of disk space per game.

As I said at the top, this is a "geek only" toy at the moment. Folks like me who don't mind getting their hands dirty in the box and don't mind tinkering with the software and configuration are ideal recipients of such a gift. Better to do it this year, though. If you wait 'til next year, everyone will have one.

Update: Miguel Freitas, one of the xine project leaders, wrote to say:

Just a small update for your article: this week i added XvMC support toxine cvs based on Jack's patch.

It seems to work fine, however, several people have experiencingproblems with nvidia cards and high definition overlays (using XvMC ornot). the card gets into a bad state that only a reboot cycle can fix.nvidia engineers told us that their QA people do not stress test thedrivers with such huge images, so i guess this might get fixed on thenext release.

Joe Barr has been writing about personal computing for 10 years, and about Linux for five. His work has appeared in IBM Personal Systems Journal, LinuxGazette, LinuxWorld, Newsforge, phrack, SecurityFocus, LinuxJournal.com, and VARLinux.org. He is the founder of The Dweebspeak Primer, home of the official newsletter of the Linux Liberation Army, an organization in which he holds the honorary rank of Corporal-for-life. No IBM money-trees were killed in the preparation of this bio.

Click Here!