Hardware

Well - if you are going for Linux, you better google VERY much before purchasing the hardware. Lots of nice things out there does not have Linux support yet, or only some features are supported. The Zalman HD160XT is a very good example of this. You may have a look at the MythTV hardware page. My personal experience includes these pitfalls:

Motherboard

Of cause be sure the processor variant is supported by the motherboard, and that you have the right type of memory (it is recommended to go for a kind explicitly accepted by the motherboard manufacturer). There is no problems with fitting any ATX/MicroATX into the Zalman HD160XT, but avoid motherboards with fans on the chipset (noise).
As the Zalman case comes with a lot of USB 2.0 connections inside the case, you will need 5 internal USB plugs (e.g. 3 standard 10-pin-headers). This includes the touchscreen, the remote/buttons/fan control interface, the cardreader slots and the two USB plugs on the front. Only the first two are mandatory. Included in the package is an extension to one USB connection with a normal A-type USB plu in the other end. This permits you to connect one of the USB connections to a normal USB A-type receptor at the back of the motherboard.
You might also want a firewire interface (IEEE1394) on the motherboard, or alternatively on another card, in order to be able to use the plug on the front panel.

BE SURE THAT THE MOTHERBOARD SUPPORTS S3, Suspend-to-RAM! It is NOT enough that is has such a setting in the BIOS setup. You will have to google to see if someone else has that motherboard working. AsRock generally had problems, at least before, whereas Asus generally has not. It is purely a hardware-thing, so if it works in Windows, it will work in Linux too. It might be BIOS version dependent.

If you plan on using network boot from a disk-less thin frontend like me, you will save yourself a lot of trouble by using a motherboard with build-in Ethernet LAN which supports PXE boot. Most motherboards with build-in Ethernet does that.

I ended up using the Asus P5K-V with an Intel G31 chipset with two 512 Mb Kingston DDR2 667 MHz KVR66702N5 in a dual-channel setup.

CPU

If you need HDTV, meaning more than the 576p DVD resolution, you will need a dual-core 2+ GHz CPU. I have 2.33 GHz E6550 Core2Duo and am just able to play 1080p with 80% on each CPU. This even requires tweaking the player. I have no experience with 32 vs. 64 bit CPUs.

Video card

You will need a card with two plugs supporting two simultaneous displays, one of them being a standard 15-pin VGA plug for the build-in 1024x768 touchscreen. The other should be your large HDTV, probably using DVI or HDMI. You may also use two videocards, bringing new life to you old PCI videocard, as the one to the touchscreen does not need acceleration or large resolution (as the matter a fact, I reccomend using the screen in 800x600 mode, as it otherwise becomes diffcult to read and use). But be warned that older videocards may have trouble re-enabling after a suspend-to-RAM.
It is not recommended to rely on a video interface on the motherboard as it is likely to be automatically disabled if another videocard is inserted..
I have best experience with nVidia cards regarding the Linux drivers. But this may soon change. If you have a slower CPU, you might need XvMC Mpeg2 hardware acceleration for DVD playback, and this is only available in the 5xxx-7xxx series and only using the propriatary drivers. H264/AVC acceleration is NOT available for Linux yet :-(.
Anyway, be sure to get a card with passive cooling - Video card fans are very noisy, even the good ones..

I use an nVidia GeForce 8400GS 16x PCI-Express based video card.

Sound card

It is very important to determine your actual need. Do you need surround sound (highly recommended) in how many channels (2.1/5.1/7.1)? Is it using analog or digital connections? Do you also need true stereo (2.0)?
Unless you either have an reasonable expensive surround sound amplifier and similar loudspeakers, or have some old high-end stereo setup, on which you want your old favorite CDs to be heard, you could probably do with the motherboard sound interface. If not, you need a separate high-end sound card.
Either way - this is another jungle considering Linux drivers. So you need to check for the Linux support of the card BEFORE buying it. Try googling it for people seeking solutions to problems with the card, and check the ALSA pages, especially the sound card matrix. Pay special attension to:
  • Does it have surrond sound support including Dolby Digital and DTS? does it have 5.1 analog output if you need it?
  • Digital out. Does it support AC3 pass-thru, letting your surround apmlifier get the true Dolby Digital/DTS stream for 5.1/7.1 sound? This is NOT the case for Creative cards, including the recommended Audigy2 (I have one for sale ;-)! You will most likely need a 96 kHz capable card, maybe even 192 kHz.
  • Does it have optical or coax S/Pdif and does it suit your needs?

  • If you have problems with your card, start trying to play around with alsa-mixer or the sound control utility under X - it may just be a question about enabling/un-muting the desired channels.

    I am now playing around with the Chaintech AV-710 (see also here), using the Via Envy24HT-S VT1721 chipset supporting 192kHz 24bit sampling - and optical IEC958 S/Pdif digital out. I have it working with 5.1 AC3 passthru. Under a recent Ubuntu, an ALSA bug broke it, but a fix is to recompile ALSA. This is easily done by:
    sudo aptitude install build-essential linux-headers alsa-source
    sudo module-assistant

    Then choose update, select Alsa from the module list, and built it. After a reboot you should have sound again.

    TV tuners

    Well - Again, go for cards which other people says works! You will most probably need a recent kernel, but then lots of cards should be available, see e.g. MythTVs list. Hardware Mpeg2-support is nice and available on many cards except the worst budget ones. Be sure to get a card that support your local analog and/or digital TV standard - especially if getting a card from overseas! Pay attention to the difference between DVB T, S and C, and between SD (Mpeg2) tuners and HD (Mpeg2/4). You will most probably need more than one tuner in order to be able to record two overlapping programmes or to watch live TV while recording something else.

    Optical drives

    Modern optical drives can read extremely fast - which is good if it wasn't for the noise they make doing so. To slow down the drive read speed to eg. a x4 DVD read speed (5400 kB/s - the slowest many drives will do but enough to handle BlueRay/HD-DVD), execute:
    For PATA drives: hdparm -E 4 /dev/hdb
    For SATA drives: sdparm -C sp=5400 /dev/scd0
    using the appropriate device. Note, the sdparm will only support the speed command from version 1.03, which is currently in beta. Get it here

    Note, that under Linux, the drive opener button does generally NOT funtion when the drive is in use (a directory or fileThis is subject to change in the newer kernels/automount systems. You CAN disable the lock, but in many cases this will disable automounting and maybe even the access to later inserted disks.
    A better way is to make a button on the remote control or an icon on the touch LCD panel executewill force an unlock and open the drive door without problems. Use eject -T to also close the door if open.

    Distrubuted systems

    You may either have a single HTPC with harddisk and tunercards, or you can (at least with MythTv) have a dedicated frontend (the HTPC) and a backend server somewhere else (my setup). The advantage of the former is less hardware and not having it on 24/7. The disadvantage is that it will need to power on occasionally to record programs and update the broadcast schedule, as well as it will need harddisks, and the material will generally not be available on other PCs in the house using LAN when the HTPC is off. MythWeb will generally also be unavailable. If the HTPC is to be used for more than just MythTV (alterative jukebox or photo viewers, internet browsing etc), you will run into problems whether or not to suspend the HTPC after use (if a recording is in progress or coming up).
    If you have a server anyway for web/mail/fileserver etc., you might use this as a backend too, as the load recording and serving streams is limited (10% of one 1.8 GHz core in my worst case).