I'm building my first MythTV solution right now. Apologies in advance for a long-winded writing style, I'll try to edit for efficiency once I get initial thoughts committed.
Before I started
What I wanted and what I considered
I wanted to have a "whole house" multimedia distribution system. For me, that meant having music, stored video, DVD playback and DVR all available to every endpoint (frontend) in the house. I also didn't want to interfere with my general use of the wired or wireless network for internet access.
I strongly considered both MythTV and LinuxMCE. LinuxMCE is an extremely slick solution that provides home automation, media management, home security and integrated telephony. After some research here, two major sticking points came up against my decision for LMCE: 1) It's got a slow development cycle which creates some hardware adoption penalties, and 2) it's so powerful (and complex) that it's like cracking an egg with a hammer. Rightfully, the LMCE community is quick to suggest selecting MythTV or similar solutions where the user really only wants DVR and home media distribution. I appreciate their honesty, though I miss some of the embedded glitz and extra functionality around media distribution that LMCE has inside.
MythTV won the day because: 1) open source, 2) linux-based, 3) relatively rapid adoption of hardware support (via underlying Ubuntu), and 4) fit-for-(my)-purpose media distribution. Windows MCE wasn't even close, irrespective of cost. And, frankly, I didn't go too far in evaluating other FOSS MCE solutions since my time spent understanding LMCE revealed that MythTV is a core player and it's functions were what I wanted.
My prior experience with Linux & Mythtv
I am familiar with a variety of linux distributions. I'm able to maintain my linux servers and desktops via command line. I can compile code, write some decent PHP and Perl, get what I need done in Bash, and I can understand hardware compatibility lists. I figure that puts me slightly better than average (only slightly) in the general linux skills base.
My point here is that I'm really quite comfortable in linux as a user and for general system administration. I don't code in c/c++ and I haven't recompiled a kernel in quite some time since the distributions (like Ubuntu) have started doing a better job of building their kernels with appropriate support for modules/built in file system support, etc.
I will say that I've never worked with the XFS or JFS file systems before and I noted that those are preferred partition format types for media volumes under MythTV - and rightfully so. I'm going to have the most new ground to cover there if the partition types require any meaningful maintenance - which I don't believe they require.
What I know I don't know
So sometimes in life, if you know what you don't know then you're on your way to wisdom. I assume some ancient philosopher spat that out a long time ago - with a lot more style...
Anyhow, my biggest experience/knowledge gaps going into this project are in the following areas
- Remotes for Linux, LIRC, IR, and IR blasting (I plan to keep my backends and tuners in the basement utility area, this should be interesting...)
HDMI television hookups and configuration (shouldn't be a big deal, but I haven't bought anything that uses it yet)
The Hauppauge PVR boards
- Digital cable (I'm a Comcast analog subscriber)
Silicondust_HDHomeRun IP-based HD Receiver (my only HD-ready flat-panel in the Den has QAM tuning so it picks up the basic and broadcast HD signals off of the analog cable; thus I'm not sure if I'll need this thing)
- Satellite TV (never had my own, watched plenty of other peoples')
- Using RS232 to have MythTV frontends control the TV and stereo for a proper home theater experience.
- PXE and net-booting. I understand the concepts clearly, but I've never had occasion to use it.
I suppose in many regards, I'm a technical neanderthal by many standards in the MythTV community. I still have tube televisions, I only have one HD-ready LCD tv. But that's the fun of this project. It's going to give me an excuse/reason to take a BIG leap forward in technology.
My Network and machines (before)
One of my main problems with LinuxMCE from a network architecture point of view was that LMCE is very centric to the home network design. It forces you to put LMCE immediately "behind" your internet gateway and all other network devices must operate from behind the LCME backend. This is nice from the standpoint that it has an integrated firewall, proxy, content proxy, etc. at that tier, but it's a real tough message when you've already built a home network to your liking. The choice against LMCE for me and why I moved my project to MythTV was because I didn't have to rework my home network layout and manage new firewall risks. (In fairness, there are some compromises that LinuxMCE could have accommodated, but I got the impression from their forums that any network design changes from their default model would increase the level of difficulty in dealing with any issues I faced concerning talking to their Frontends or any backend media servers/mounts.)
The PC shown with a Static IP is a Ubuntu 8.04 desktop/server hybrid without any awareness of MythTV. It's got some scheduled tasks for backups and it provides a little place to play on linux. I may decide to give it some Myth Frontend awareness at some point, but this all sits in an unattractive place in the basement, so I'm not going to watch media from here.
The laptop is a DHCP enabled Windows XP machine that's used to browse the Internet. Technically I should indicate that TiVo is also a wireless client, but, hey, TiVo would be replaced by MythTV soon!
An important note is that I've been getting close to implementing Dan's Guardian or another content proxy on the linux desktop/server to protect my kids who use the laptop. Haven't gotten there yet, but that's a design goal that I want to include in the MythTV effort.
What I want at the end of the project
I'm hoping that at the end of this project, I'll have many good things to speak of.
From an overall solution perspective, I want to have a highly serviceable and fully integrated home media solution. It should be able to:
- Perform scheduled DVR recording from any tuner I choose to provide it
- Stream the same content to multiple frontends simultaneously (think Super Bowl!)
- Stream different content to different frontends simultaneously (music, live TV, DVR playback, DVD from NAS playback) without a hitch
- Allow any frontend to tune a live TV broadcast without compromising a DVR schedule
- Provide appropriate parental controls, minimally for any content I store on the filesystems, to ensure that my kids are only able to hear/view age-appropriate content.
- Diskless, netbooted frontends
- Fully integrated RS232 and IR control at each frontend for the stereo and TV it controls in that room. Get to "one remote" per room.
- Enable views for Internet-delivered streaming and on-demand content as seamlessly as possible (Rhapsody, Hulu, etc)
- Enable parental controls for all content - this would include TV. We also don't allow certain shows to be viewed even though they might be age-appropriate, so block those too.
Basement (Backend room)
Since I have both unfinished and finished sides to my basement, I need to describe them differently. This section describes the unfinished side of the basement and is where I plan to put all my backend equipment.
This is where all my equipment in the "before" diagram is currently running, so this is a natural fit. However, I'll need to run some more cabling to get the rest of the house connected with it.
Basement (frontend room)
The finished side of the basement is mostly a kids play area, but the neighbors and friends have been known to hang out down there for a little viewing and drinking time. Currently there's a DVD/VCR combo player hooked up to a 9-year old Panasonic 32" tube television. The Nintendo Wii game system is hooked up here as well, which adds a bit of a wrinkle when planning the MythTV design here.
Because I planned the finishing of this side of the basement, I was able to get ethernet, cable, and surround sound wiring into place how I want it. Didn't do much with the surround sound, obviously, but that's part of the plan here.
So the finished side of the basement will get the most investment in the project. I'm visualizing a 52" flat panel, a decent stereo to support home theater audio, 5.1 surround, and MythTV frontend. And, as I mentioned, I need to get the Wii game connected here. I would really like to make this a "single remote control" solution, which means integrating the stereo and TV via rs232 connections, right?
For us this is the heart of the house. Tivo, a DVD/VCR player, a (older) stereo and a 32" tube television live here now.
(June '09) I went ahead and hooked up the Comcast DTA to Tivo and another directly to the TV here. Buys me some time before I get the room right.
I'd like for this to become a 42" HD LCD, Myth front end, and a sleeker stereo. The old TV, old stereo, and Tivo are gone when we're done. Parental controls are especially important here.
The Den is my escape room and home office. I've got a Sharp 26" LC-26DV24U HD-ready LCD TV (with integrated DVD player) in the room now. It's hooked up to the Comcast analog cable. I've got ethernet already run to this room, but I may need another drop nearer the TV to avoid cabling spaghetti. I'm a little bummed out that I didn't think enough ahead about this project when I bought the tv 6 months ago, it doesn't have RS232 interfaces for a Frontend to control it. It does have HDMI inputs.
The Den should end up with a Myth Front end and I'd like to aim towards getting HD broadcasts over Comcast analog cable at a minimum. I need to read through the QAM matches to see if I can get Comcast Sportsnet to see the Cubs games in HD. I know I'll get WGN in HD already.
The kids sometime need to separate from each other for different viewing interests, so parental controls on content will need to apply in this room at all times.
Master Bed Room
The MBR currently has an old decrepit 13" color TV with rabbit ears that my wife had from college. The fact that it plays at all is a testament to the quality that was Zenith products at one time.
Problem here is that we (wife and I) don't agree yet on the size of TV, suitability of a stereo for playback, or even if a TV should even be in the bedroom. With the kids and all it takes to get them moving (and how little time we have to lounge around any more) it's not likely that we'll make a large investment in this space.
June '09 - the 13" rabbit ears tv went blank at the DTV conversion, still nothing done.
The Sun Room connects to our outdoor patio. This room's Myth design is a real wildcard. We don't have a TV in here now. However, I'm forever hooking up our outdoor, wireless speakers to a laptop or iPod for music for deck party time, grilling, etc. I think a case could be made for a frontend-type device in the Sun Room that would support music playback more so than movies/video content. We don't really want to make the Sun Room a destination for video content. Since this might only be streaming audio, it's possible that a wifi-connected frontend (generally a poor idea for video applications) might be the solution.
I'll describe what I have/will build for the MythTV setup. I'm using MythBuntu
8.x, 9.04, 9.10 as my build distro and Mythtv v0.210.22
Wiring and Networking
Backend Hardware and Configuration
- Asus P5N73-AM motherboard.
- Intel Pentium Dual Core E2180
- Several 500GB SATA drives, not RAID'd, just standalone as XFS partitioned drives for MythTV. (root partition is ext3 or whatever the default installer uses, all video data partitions are XFS)
- Uses my previous Acer 19" LCD monitor.
- Video Chipset: NVidia Geforce 7050
- 2GB RAM
Hauppauge_PVR-500 with one Comcast analog cable run going to the coax TV input.
- HD Homerun tapping Comcast digitized analog for the QAM signals
Mythbuntu 9.10 Install
- Have your subscription already open/active for the Schedules_Direct website BEFORE you start the install
- My install decided (in spite of me specifically profiling that I wanted a static IP for my backend) that it would implement a dynamic/DHCP IP address for my main backend. As a result I had to use steps similar to those found here to set a static IP.
- The default profile for "Watch TV" for the PVR is pretty low resolution, be sure to up the resolution on this mode before you send emails to the support mailing list.
- 9.10 STILL wants to have the backend be a DHCP-based IP address. You have to set your IP manually for the backend, IMHO, when you install as a Hybrid in order for the setup to be manageable.
- If you go to "Watch TV" and it's blank for a short while and then returns to the menu, you probably have not profiled the Tuner Type correctly on the backend. Try another...
During my upgrade to Mythbuntu 9.10, Comcast required me to implement their DTAs to continue receiving the Expanded Basic package.
I decided to stop using my PVR 500 card <sniff> and rely only on my HDHomerun to tune TV. (This meant that I didn't have to put together an IR blaster to change channels on the Comcast DTA that fed the PVR 500).
This process was frustrating and confusing, but I finally got it straight. I'm now able to use each HDHR digital tuner from the Comcast line feed to read from a single channel source/lineup from Schedules Direct.
The process I think I followed to get my channels and Schedules_Direct working was this:
- Go to my Schedules Direct account and select the local fully digital lineup for Comcast. This has way more channels than I see on QAM and digitized expanded basic. I elected to drop channels I knew I would not receive so that the channel lineup downloads would be smaller. From what I can tell, Myth's lineup that is shown to users is based upon the channels you define in Myth and not the channels in this lineup feed. Therefore, there's no harm in receiving more channels in your lineup - other than download speed.
- Use scte65scan through the HDHomerun to identify the channels that are coming over the Comcast line that can be tuned.
- Upload that channel list into Myth
- Use MythWeb or Backend channel editors to make some changes
- Create HD channel entries for the local affiliate HD broadcasts (e.g. Chicago CBS SD is channel 2, HD is 2.1) Be sure to include the relevant XMLTVID from the Schedules Direct display of your selected lineup for the HD channel
- Where the local affiliate channels have SD and HD broadcasts, I opted to remove the SD channel because I found that the mythtv scheduler wasn't differentiating between the SD and HD correctly. I was careful about getting the correct XMLID for each channel but I kept finding that the SD was being recorded when HD was available. By removing the SD channel for the affiliate, I always got the HD. (This does affect both recording and WatchTV, so be sure your backend is ready for this disk-wise)
- Delete channels that you don't want because you won't watch them... (optional)
- Go to the Backend setup and make sure that the Digital Lineup is associated with your HDHR tuners. The HDHR tuners should now be able to tune the digitized SD content like a DTA would (without a DTA!!) and tune the broadcast HD
The mistake I was making before this was in thinking that the Schedules Direct lineups were absolute. Therefore, when I looked at the lineup content, all I thought I could do was to select the Antenna/Broadcast for my area which provided the local HD affiliates and then the local analog to get the rest of the expanded basic. This created a paradox where I could not combine the two lineups at myth when it imposed the configuration constraint of one-lineup-per-tuner.
scte65scan and libhdhomerun
The wiki section about Scte65scan is incomplete for compilation of libhdhomerun and scte65scan with HDHomeRun support as it applies to mythbuntu 9.10. You must reference this link to make compile adjustments to get it right. Read the whole thread because there are a few Mythbuntu packages to add that aren't there by default. Also, be sure your HDHR's firmware is updated.
Basement frontend only system is running Mythbuntu
9.04 (myth .21) 9.10 (myth0.22).
- Zotac ION ITX A-U mobo (probably overkill on CPU, liked the brick power supply)
- RiData 32GB Solid State Drive
- 4GB RAM 2X 
- Pioneer internal 5.25" Blu-Ray reader, dvd writer
- IN WIN BM639.AD120BL Black Steel Mini-ITX Tower Computer Case (included a power supply I chose to ignore)
- Sharp 46" LCD LC46D85U (connected via HDMI)
- Pioneer 5.1 Receiver (connected via optical S/PDIF)
- Generic Windows Vista MCE remote with its own IR Receiver (turns out to be an Ortek VRC 1100 based HID remote, poor research on my part)
- Myth's default playback quality was awful, had to change the settings
- The NVidia proprietary driver had to be installed manually (is that right? I thought Mythbuntu handled that)
- The RiData SSD worked great after I fed it power from the brick's power chain rather than the unpowered in-case power supply (oops!)
- S/PDIF worked just fine, followed the wiki's advice on configuration - HAD to use alsamixer to un-mute various things
- The remote worked pretty well out of the box, I need to spend more time with it's configuration, but it's doing the basics now.
- Mythbuntu 9.10 and alsa will not provide more than 2channel audio unless you modify the config file as noted in this post
Stuff Left to tune:
- Because the primary drive is an SSD (we want to avoid writing to it) I will be moving a lot of logging and non-essential stuff to a RAM drive (hence the 4GB built)
HD playback of recorded material (where HDHomerun fed the backend) is only fair, some pixelation or blurring of motion scenes - I don't think it's the front-end's problem since I can playback some fairly intense recorded movie media from a backend share. I suspect I don't have my quality settings right on the backend for HD recording. Also will check my DMA and drive settings on the backend.I enabled the newest NVidia proprietary driver and enabled VDPau at its highest level. The IONITX handles playback flawlessly (IMHO) at about 3-5% CPU utilization.
SD WatchTV audio is muted, don't know why. HD WatchTV audio is fine.
Stuff I learned about Myth from this build (first dedicated front-end):
- Mythtv and Mythbuntu are fantastic at detection and support of the hardware, there was very little fiddling with drivers and compatibility issues. I had done my homework to avoid anything stupid, but I'm REALLY THANKFUL for the state of the software.
- The process to add media via Media Manager is a challenge I'm still trying to get control of. Be sure that your front-ends mount your shared media from different drives/machines in the same folders so that the database can help you. The sourcing of metadata from IMDB or TMDB is a little borked for me now, so my media library display kind of stinks with just files/folders shown. Read about Mediashares. Ripped DVDs should be stored in a folder with VIDEO_TS (all CAPS) underneath. Standalone video files (.avi, .mpg) should be stored next to each other unless you specifically want to categorize your content. If you keep everything at the same folder level (DVD folders and .AVIs) then your media list is really easy to work with.
When I build the next front end, the IONITX+Atom combo with the high-end NVidia 9400 video and SPDIF is a pretty solid combination. I'm going to challenge myself to experiment with net-booting that client, if possible.