Two weeks ago I knew nothing about ATSC, but that has very quickly changed as I've worked through some issues for OTA high-definition reception here in the Toronto/Buffalo area. Along the way I had the opportunity to work with some great people, and was pleasantly surprised by willing everyone was to work with me as a guy who blindly called in looking for help. To complete the "pay it forward" loop that I've been so lucky to receive over the last couple of weeks, here is my detailed rundown of some of the ATSC reception issues that you might run into with Media Center. For now the article will focus on MCE 2005, but pretty much everything here holds true as well for Vista.
Let's start with what is by far the most common issue.
Incorrect Channel Information in MCE
Whereas most receivers get the information about the channels you can receive by scanning the spectrum to see what's out there, Media Center does things a little differently. As part of the guide information download, MCE also gets a list of the OTA channels in your area from the guide provider. Unfortunately since OTA HDTV is relatively new, this information isn't always correct which will cause you some major heartburn. The key information that MCE needs here is the Major channel number, the Minor channel number, and the Physical channel number. To use more generic terms, MCE needs to know what frequency the channel broadcasts on (physical channel), as well as the virtual channel number (major channel) and the subchannel (minor channel). The scenario goes something like this - Channel 4 has a huge brand in your area that they don't want to give up because everyone knows them as "Channel 4? and the "News 4 Action Team". However when moving to digital TV their new channel assignment from the FCC is actually 39. In order to keep their branding they assign a "virtual channel" of 4 so that it continues to show up on your television set as channel 4, but behind the scenes your TV is actually tuned to channel 39. Make sense so far? To complicate matters somewhat, digital TV allows broadcasters to put more than one program on any given channel so they've now introduced the concept of subchannels. Let's look back at Channel 4 again for a moment, it is quite possible that they are broadcasting their normal high-definition content as well as a new "Channel 4 Weather" program on the same channel. In this case we're still looking at Channel 4, but subchannel 1 has your soap operas and subchannel 2 has your weather. This will in most cases show up on your television as "Channel 4-1? for the regular content and "Channel 4-2? for the weather content. And remember, even though it's called 4-1 or 4-2 it's really coming through on channel 39. Confusing? Hopefully this confusion will help you to understand why incorrect guide information can really mess up your media center.
Let's get back to how MCE works again for a minute (and I highly recommend reading Peter Rosser's article on MCE ATSC to tell you why they did it this way). Media Center downloads the guide and gets the information for the stations in your area. You complete your setup and hooray, it set up Channel 4 and you can't wait to see the News 4 Action Team break down the day's events for you in high-definition glory. But alas, channel 4 doesn't work. It seems that when Media Center got its information from the guide provider it was told that it needs to tune in to virtual channel 4-1 on channel 4. But that's not right, as we know from the discussion above Channel 4 actually broadcasts on channel 39. Here is where you need to start to get your hands a little dirty to force MCE into submission. We'll need to modify a couple of files to make this all work.
C:\Documents and Settings\All Users\Application Data\Microsoft\eHome\EPG\prefs\atscchannels.xml
This file contains all of the channel information that was downloaded by the guide. Editing this file won't have much effect though, because it will get updated every time the guide downloads.
C:\Documents and Settings\All Users\Application Data\Microsoft\eHome\EPG\prefs\atscprefs.xml
This file contains all of the channel information that you've manually added to the system, and luckily when there is conflict in information this file wins. It is not updated by the guide, so this is where we want to make our tweaks. This file may not actually exist yet on your PC, it is only created by MCE when you manually add a missing channel. Don't worry, we'll take care of that shortly.
So if you're having issues receiving a particular ATSC channel, the first place to look is in the atscchannels.xml file to see if it has the correct information. Getting reliable information on what it should be can be difficult. If you have another receiver (like a HDTV with a built-in tuner), you can do a scan and see what the TV brings up. In my case however that will only show me the virtual channel information and isn't too useful for verifying the physical channel that it's broadcasting on. Probably one of the best bets is to use the information from http://www.titantv.com, as HDTV really is their specialty. Type in your ZIP code to get the lineup and you'll notice that it brings up the guide information in your area with channel numbers noted in the left-hand column. In the example shown here, WIVB has the virtual channel number of 4.1, and the physical channel number 39 is shown in parenthesis. Translating this into MCE terminology, the callsign is "WIVB", the major channel is "4?, the minor channel is "1?, and the physical channel is "39?.
Now let's compare that to what's shown in the atscchannels.xml file.
<?xml version="1.0" ?>
- <channels>
<channel callsign="WNED" version="0" physical="43" major="17" />
<channel callsign="WHEC" version="0" physical="58" major="10" />
<channel callsign="WNYB" version="0" physical="27" major="26" />
<channel callsign="WUTV" version="0" physical="14" major="29" />
<channel callsign="WPXJ" version="0" physical="53" major="51" />
<channel callsign="WNGS" version="0" physical="46" major="67" />
<channel callsign="WKBW" version="0" physical="38" major="7" />
<channel callsign="WNLO" version="0" physical="32" major="23" />
<channel callsign="WGRZ" version="0" physical="33" major="2" />
<channel callsign="WIVB" version="0" physical="4" major="4" />
<channel callsign="WHAM" version="0" physical="59" major="13" />
<channel callsign="WROC" version="0" physical="45" major="8" />
<channel callsign="WNYO" version="0" physical="34" major="49" />
</channels>
Whoops! MCE thinks that WIVB is located on physical channel 4, we need to fix that. (Note that I've edited the file above to appear to be wrong, it actual fact all of the data in my area is actually correct). Here is how we'll make MCE recognize the correct channel number.
- Locate the file C:\Documents and Settings\All Users\Application Data\Microsoft\eHome\EPG\prefs\atscchannels.xml. Note that this is a hidden file, so you'll need to tell Windows XP to let you see hidden files by clicking Start, My Computer, Tools, Folder Options, View Tab, Show Hidden Files and Folders.
- Open the file C:\Documents and Settings\All Users\Application Data\Microsoft\eHome\EPG\prefs\atscchannels.xml in notepad by right-clicking the file and selecting "Edit".
- Delete the entire line that contains the information for the offending channel, in this example I want to delete the entire "WIVB" line. My new file should look like this:
- Save the updated file by clicking File, Save.
- Open up Media Center and manually add the channel using the information that you know to be correct (in this example: major 4, minor 1, physical 39, callsign WIVB). Rather than reinvent the wheel, let me point you to a very well-done article by John Elsbree that walks you through how to do this.
- Verify that the new channel is working for you. Still not working? Read on.
Incorrect Data in the Data Stream
So, if you've verified that everything is set up properly in Media Center but it's still not working, there could be an issue with the information in the data stream itself and this is something that unfortunately you can't correct yourself. You'll need to get in touch with the engineering department for the channel that's not working and see if they can help you work through the issue. It might be best to just point them here and I'll give you the rundown of what turned out to be a nasty little problem here in my neck of the woods.
Media Center as an ATSC receiver seems to be much more finicky than other receivers. In most cases that I've read about, the channel will tune just fine on every other receiver that you or your engineers have tested but will not work in Media Center. That is no doubt a source of frustration for everyone, and makes it appear that there must be a bug with Media Center. In my case however, it's wasn't so much a bug as it was MCE requiring a few of the broadcaster's settings to be absolutely correct. Let's dig into some background information about ATSC so that this makes a little more sense before I start throwing out acronyms (and man do I wish someone would have posted this background for me two weeks ago, it was a bear to figure out for a layman).
With ATSC, the broadcaster is basically firing out into the air a whole lot of data which is received by your Media Center PC and decoded. That data is made up of several types of information including the video streams, the audio streams, guide data, and a very important set of information called the PSIP (as I learned after a few calls into my local engineers it is pronounced PEE-SIP). PSIP stands for program and system information protocol, and it describes for your receiver what information can be found in the data stream and where to find it. Within the PSIP data there are several tables that contain varying information, and the following data is very important for proper reception with MCE:
- TSID, or transport stream identifier. This information is found in the PAT table, as well as in the VCT for each program.
- Channel number, which contains the major and minor channel information. This element is found within the VCT for each program.
And just to assist with future troubleshooting, we were able to verify that the following data elements do not have any impact on MCE reception even though they intuitively sound like they might be a concern:
- Carrier frequency. The ATSC now recommends that this be set to 0 because there have been so many problems with this element in the past, but the specific setting of this data element doesn't affect MCE in any way.
- Use of illegal PIDs. The ATSC requires that program identifiers be numbered no lower than 0×03, but testing shows that if older/lower PIDs are used it doesn't affect Media Center reception.
- Service name spacing. The ATSC doesn't specify legal characters for the service name, but testing would seem to indicate that service name doesn't affect Media Center reception. This was a red herring in my local investigation, as one of the channels in the area had a space in its name and could not be received whereas others with no spaces worked fine.
- EPG data. Media Center gets its EPG data from the internet and does not (at this time) use EPG information coming in over the air.
So how would one go about troubleshooting these issues? You could just leave it up to your local engineers, but chances of them having an MCE machine to test with are slim and they're busy people. If you can help point them in the right direction it would certainly help things out quite a bit. Based on working with the local engineers as well as the tech support departments of some of the broadcast equipment makers, I now know that there are literally hundreds of settings in this equipment that could be in need of tweaking. Here's how I narrowed it down in my area.
- Use the software that came with your ATSC tuner card to record a short stream. In my case I used the DVICO FusionHDTV software, tuned to a channel, and hit the record button. Save the file as a transport stream, which will probably have the extension ".tp" or ".ts". I would record 10 seconds from a channel that does work in MCE, and 10 seconds from a channel that doesn't work.
- Download the free version of TSReader, which will allow us to dissect the transport stream and dive into the PSIP data to look for any issues.
- Launch TSReader, and when the popup asks you to select the input source, use file.dll.
- Open up one of the .tp files you selected earlier and you'll see it open up a bunch of data in TSReader.
- With the first file still open, launch another instance of TSReader and open up the other file. Arrange the two files beside each other and step through each of the data elements on the left, being sure to expand any branches with a + beside them. Below you'll see two streams from my area, one which works in MCE and the other that does not.
- Note any inconsistencies that you find. In my case there were several clues and theories, but here are the big ones to look for:
- Navigate into the VCT section for each program. Does every one of them have a channel number, and is it in the format of major.minor (also acceptable is major-minor). Does that channel information match what it is supposed to be? If that channel number doesn't match what MCE is expecting to see, then it won't be able to receive the channel.
- Navigate into the PAT section for the stream and take note of the TSID. Then navigate into the VCT for each program and ensure that the TSID is the same as the number you saw in the PAT. If they don't match, then MCE won't receive the channel.
In my case, there are two stations in the area (CFTO and WIVB) where the TSID was mismatched - it had one value in the PAT section and a completely different value in all of the VCT sections. Once the engineers changed those TSIDs to match, MCE reception was restored. Based on the troubleshooting that is ongoing, it seems like this might be a common issue. There are various pieces of equipment involved in the broadcast of a DTV stream including an Encoder, a PSIP generator, and a MUX. Each of these pieces has its own configuration and is probably from a different vendor. Each piece may be trying to insert its own information into the PSIP. For example, when the engineer is looking at the configuration of the PSIP generator it might be outputting the proper TSID in every section of the PSIP. However when that information gets fed into the MUX, it might be writing out a TSID into the PAT that doesn't match what came from the PSIP generator. I'm getting an acronym headache, let's move on.
Summary
If you're having reception issues, by far the most common cause is that the channel information coming down to Media Center from the guide data provider is wrong. There is a relatively simple fix to this issue and you should be able to work around it. This behaviour will not change for the upcoming Vista release of Media Center.
In the case where you're absolutely certain that the settings on your end are correct, you'll need to involve your friendly engineering staff. In my experience they are friendly people who are just as enthusiastic about HDTV as you are and if you talk them as a peer you'll all be happy. Talk down to them or make accusations (as I've seen many people do on discussion boards) and you probably won't get very far. Own the issue and work together, using some of the tips above, and you should be able to get through it.
Lastly, while I'm certainly no expert I have been though a pretty rigorous trial by fire. If you want me to take a look at your TP streams for you I'd be happy to do so. They'll be huge, so you'll need to upload them somewhere like uploading.com and then send me an email (peter at thenears.com) with the link. I'll be happy to take a look.
Credits
Big thanks to the following groups for your help, you really went above and beyond (names witheld to protect their inboxes):
WIVB engineering staff (for putting up with me)
CFTO engineering staff (for putting up with me)
Triveni Digital (for helping out a non-customer)
WFTS engineering staff (for sharing your experience)
KGPE engineering staff (for sharing your experience)
Microsoft PMs (for helping with the escalation)