Sunday, November 29, 2009

Solving the HD PVR 0x8007001f error in SageTV

This saga has extended about a year now, but I have finally solved my HD-PVR problems and since it seems like a lot of folks have been hitting the wall on this one, I thought I'd put together how a year's worth of spare-time research resulted in a reliable HD PVR tuner.

There are only a few hard and fast "if it does this, do this" fixes, so lets start with those.

Also, understand that this information is provided AS IS, and though you're going to be doing things that may very well fix the problem, it could also make the problem significantly worse.

Sypmtom


0x8007001f error attempting to record anything. Device could not start in device manager and a yellow icon on top of the. Powering on/off doesn't fix it. Rebooting and powering on/off doesn't fix it. You have one of the first units from the days of the pre-order.

Resolution


You can take this a bit further and verify that it doesn't record properly in their scheduling app, but you'll probably find, like I did, that you need to RMA. Sorry. Don't worry about the revision that you get back if it's a D2, C3 or E1. They're all fine as long as they've come from RMA.

Observation: Power Adapters may have been faulty in early models


Hauppauge insists you return your power adapter with the unit. This isn't all that unusual, but I noticed a few things. On both the unit I purchased new at Microcenter and the replacement RMA unit, there was a sticker over the power adapter socket insisting that I use ONLY the one that came with the unit.
There were reports from folks of overheating and the like. I also noticed that the power adapter they sent me was rather different than the one I had with my previous version. Any number of perfectly reasonable explanations fit, including the possibility that they had a bad batch in one of the builds.

Observation: Revision numbers "in the wild" vary radically but don't matter entirely too much


A bit of background. I purchased a pre-order before this device was available and then didn't plug it in for a year after I had purchased it (my HTPC specs didn't fit with the device). When I got it working the first time, it was flaky before it outright failed regularly. I happened upon a sale on the HD PVR at Microcenter while perusing other items entirely by accident (I was surprised they even carried this device, being a rather overly geeky product, but ya gotta love Microcenter). So I purchased it after asking the sales associate if he could tell me when it arrived. Being that it arrived well after the release of the E1 revision and figuring mine was out of warranty anyway, I purchased it.
It worked, ultimately, as well as the one that I received after RMA, which is to say, very reliable after I applied the appropriate software fixes. Both were D2 units despite one being Refurbished and the other having been received by Microcenter less than a week prior to my purchase.
Their device FAQ does specifically note that the "D2, C3 or E1" are functionally equivalent. It doesn't say anything about C1 or C2 units (my original was a C2, it had no logo or printing on the front). There's a lot to be said about what isn't said sometimes...

Observation: Replacement units from RMA behave flaky, or your recording has been flaky with the 0x8007001f error


I was frustrated that both my new and RMA replacement unit were still giving me the 0x8007001f error after a few days of recording. While not failing outright, they were not stable.

My Solution: Here are the software steps I took to ultimately fix my rig



Preparation:
1) Backup your system partition (the one with the OS on it, hopefully you've isolated that out from your recording storage). We're about to start screwing things up so you may want to go back to where you were beforehand.
2) Download all of the latest Hauppauge drivers for each Hauppauge adapter you have.

Lets get down to business:
1) Remove all Hauppauge adapters except for one HD-PVR. Lets get one working and worry about the rest afterword.
2) Click Download HCW Clear on the link provided, run it, check all of the boxen.
3) Unplug your HD PVR from your computer and reboot.

If you're configured like me, SageTV will start, we have to kill it
1) Close the SageTV application (Alt+F4 once it's up).
2.a) If you're running SageTV as a service, stop the SageTV Service by hitting Win+R (or Start button, Run), and typing "SC stop sagetv" to stop the SageTV Service.
Alternate for Windows 7 / Vista with UAC enabled:
2.b) If you're running SageTV as a service, type Win+R (or Start Orb, Run), type Services.msc (You will be prompted for elevation), when the services snap-in opens up, find SageTV and click "Stop"

Some optional things, but might be necessary:
3) Update your BIOS to the latest version (you're PC or Motherboard manufacturer's web site will help here).
4) Download the latest chipset drivers.
If you know your exact chipset, get it from the manufacturer if it is offered (nVidia, Intel, VIA and others offer chipset drivers and some come with automatic update tools). This ensures that the "foundation" is in its best possible shape before we go up the chain to the USB controller and the HD PVR drivers.

SageTV appears to have made some changes in the settings for the HD PVR over time, but it doesn't appear that they apply these changes if you have already configured an HD PVR. So we're going to reset your SageTV installation to the time before you ever plugged this device in. You will lose all of your tuning and channel configurations as well, so keep that in mind as a later to do.

7) Find the SageTV folder off of the installation directory for SageTV (usually C:\Program Files\SageTV\SageTV) and open up the Sage.properties (you did make that backup I talked about earlier, right? No? Well, at least copy this file to a .bak or something useful.).
8) Page-down or search for the line beginning mmc/encoders/.
When you get there, look for a line that looks like this:

mmc/encoders/-431556906/video_capture_device_name=Hauppauge HD PVR Capture Device


The number "-431556906" might be any other number. This number is important.

9) Once you have found that line, page up to the first "mmc/encoders/-431556906" and remove every line that begins with that set of characters.

10) Plug in your HD PVR and install the latest drivers from the Hauppauge web site or if you're feeling daring, from here (the shspvr blog seems to be a day or two ahead of Hauppauge's own web site). Reboot, fire up SageTV, head to the Recording Sources config and add in your HD PVR using the settings you used before.

11) If you have other Hauppauge devices/tuners, Repeat steps 1 and 2.a or 2.b to stop SageTV.

This is no magic bullet, as I have done many other things to my system to make it ideal for handling the HD PVR. So what follows is a list of observations and ideas that might be worth a try if you are still experiencing problems.

Observation: HD PVR is touchy with some USB Controllers


Generally speaking, hardware manufacturers will cheat you on the things you would never think to ask. My motherboard, for instance, has a very flaky USB 2.0 controller. Sure, it had the USB logo and everything, but it used a chipset that has known issues and the issues existed prior to the HD PVR (I couldn't, for example, sync my Windows Mobile phone with that motherboard).

I don't think that the HD PVR is significantly more touchy with USB controllers, but if you think your existing USB controller is taxed, or trash, consider getting a dedicated one with an NEC chipset.
A PCI version is here, a PCI-Express 1x version is here. Hat tip to Fuzzy on the SageTV Forums for those links. I purchased the latter and it is excellent (it has an internal USB port which worked great for my external Wireless Keyboard and Mouse dongle).

Observation: Flakiness is less in 1080i than 720p or varieties of resolutions


If you can, configure your cable box or whatever device you're using with your HD PVR to 1080i. Eliminate all screen savers, if possible, and do whatever you can to ensure that the resolution is always 1080i. I have not received the 0x8007001f error as a result of resolution, but I have had recordings simply not start.

Observation: Tuning is always a pain if you have a screen saver on your cable box


I use the USB-UIRT for tuning and a piece of software called LM Remote Keymap. With AT&T U-VERSE service, and the Motorola VIP 1212 cable boxes, tuning can be very difficult to get reliable. Mis-tunes (tuning of wrong channels) often end up with you landing on channel 0, which is the ON DEMAND channel and seems to be entirely tricky to get away from. The Screen Saver/power save features cannot be disabled, so my tuning scheme is:
Press the TV button, wait 2 seconds (breaks out of ON DEMAND or menus), press the OK button, wait 4 seconds, begin tuning channel using four digits.
This means tuning takes quite a while, but it is robust. I have not had a mistune or a failure to break out of the screensaver yet. And it doesn't require the use of the Power button which can be a real problem, since you don't know the power state before hitting power.

Observation: SP/DIF or Analog Output, same result


I have read several posts about people finding that their tuners became suddenly much more reliable after switching to the stereo Analog outputs versus the optical DD 5.1 variety. I reluctantly tried this with my setup just to see if it improved things. It didn't. Your mileage may vary as I have seen my AV receiver fail to lock onto the digital signal due to a poorly made optical cable combined with a kink. I didn't see any improvement analog only on the latest drivers. Personally, I'd check the cable first.
Either way, I wouldn't consider the HD PVR to be working if it only worked reliably on analog audio. Might as toss it, buy a less complicated analog tuner and plug in via S-Video.

Observation: Tuning Delay (delay_to_wait_after_tuning)


I have seen many posts with many solutions surrounding tuning delay. I'm running reliably with no tuning delay configured.

The difficulty of "getting it right" with a device like this


The HD PVR is a wonderful device that has to cope with several assumptions. First is the flaky timing from various manufacturers STBs (with a driver that bricked folks with certain STBs). Then you have the usual problems with poor USB chipsets or over-taxed USB controllers/hubs. Top that with simply having to produce a device that can encode h.264 from a Y Pb Pr signal using a rather unproven chip (or is it officially proven to be not that great?) at a price point that hobbyists will accept for an audience that is getting smaller and smaller as HTPC users get frustrated and move to stand-alone solutions.

Ultimately, I expect most of these issues will get fixed in software and hardware revisions. At this time, I am unaware of any other device that is able to pull a 1080i stream with 5.1 audio from an STB. And this thing does a fantastic job once it's working.

To those who have given up hope, as I once had ... keep fussing. It took me a year (well, could have probably been solved with a few weeks of dedicated time, but hobby time is never dedicated). It can be made to work.

Got any other tips? Post them to the SageTV forums or in the comments.

Edit 3/13/2010: clarification on other devices capable of ripping a 1080i stream.
Updated instructions after performing this fix clean-room and added a few other helpful items