Curiouser and Curiouser

Sound and Fury

As I've written elsewhere, I was recently forced to rebuild my desktop computer, and the one problem with which I've since been struggling involves the system's audio. To recap briefly, my computer has a Creative Labs SoundBlaster Live! X-Gamer sound card, which was "stuttering" whenever I used the latest version of the Creative Labs drivers (dated 07/17/02 as of this writing). That is, while playing back media with an audio track (e.g., MP3 files, QuickTime movies, etc.), a snippet of the audio roughly 0.1 seconds in duration would repeat over and over, back to back, for roughly 0.25 - 0.75 seconds before normal playback would continue. That makes for a very obnoxious stuttering sound for those with a paucity of imagination.

If I went to the Windows Update site, I could obtain the "Creative Labs Media Driver Version 5.1.2602.0" update from Microsoft, which would fix the stuttering problem. Unfortunately, since that media driver is actually written by Microsoft, not Creative Labs, none of the handy utilities from Creative Labs (e.g., AudioHQ) would work with it installed. In short, I was forced to choose between really obnoxious stuttering and going without the tools I use quite often to change speaker settings, tweak the equalization parameters, adjust EAX effects, and so forth.

I took the issue up with Creative Labs via their web-based support posting service, and they (sadly but not surprisingly) started by blaming everything but their drivers. Honestly, I see both sides to this. I'd be willing to bet that most of their support calls could be solved if users simply read their manuals or applied even half a wit to the problem at hand. But when an obviously knowledgeable person (or at least, I seem that way to me compared to most computer users) calls up with a very specific problem and detailed information that indicates pretty clearly that a driver from another vendor solves it nicely, one might expect better. I know, I know: it's probably all pro forma on their part. But that doesn't make it any easier to sit through.

At any rate, the first thing the technician had me doing was fussing around with my BIOS settings. Experimentation showed that if I loaded the fail-safe defaults and adjusted all the various timing parameters to their slowest values, then the stuttering was reduced somewhat but not eliminated. Interestingly enough, with the Microsoft media driver installed, I can load the performance-optimized settings and adjust all the various timing parameters to their fastest settings without a single stutter. In short, the Microsoft media driver is solid as a rock; too bad it happens to be as mute as one when it comes to communicating with the Creative Labs utilities.

A few days passed without response from Creative Labs after I posted what I had found from the BIOS tweaking. I was beginning to think that the technician had given up on me when another response came my way. In it, he suggested that I remove all other PCI cards from my system, try the sound card in another system, and try moving it around to the other PCI slots in my desktop system as well. Gee, he doesn't ask for much, does he? Fortunately, in my case, two out of these three were pretty simple insofar as there were no other PCI cards in my system, and I had already experienced the very same issue in the previous incarnation of my system—it just wasn't nearly as frequent, which is why I hadn't previously investigated it.

The third thing he wanted me to try was a touch more onerous. Nevertheless, I really wanted to nail the problem, so I obliged. When I began, the sound card was in the third of five PCI slots. I couldn't fit the card into slot one because my video card's cooling fan protrudes too far. Thus, I needed to test it in slots two, four, and five. Naturally, in keeping with my typical luck (i.e., lots of it, all bad), I had managed to choose the very worst slot in my system. The stuttering occurred less often in slots two and five, and it was greatly diminished in slot four. This seems like real progress, though I have to say I still think Microsoft has fixed something in their driver that Creative Labs has yet to admit exists.

Enter Weirdness

This is where things take a turn for the weird. After getting my system reassembled with the sound card in PCI slot four, I decided to try running a few applications known to be sensitive to compatibility concerns. In other words, I wanted to test a few games with which I've had compatibility problems in the past to see if my system was more or less stable as a result of the changes. In this case, in light of my recent history with them, I decided to run Clive Barker's Undying and Dungeon Keeper II (DK2). Both of them are utterly fabulous games, by the way, the former being a sort of horror-drenched first-person-shooter mystery, the latter being an incredibly cheeky RTS game jam-packed with dark, British humor. If either sounds intriguing, then then check out my review of Undying or my review of DK2 for further details.

Anyway, Undying failed to run while DK2 ran without a hitch. This was quite a surprise to me because the exact opposite was the case after I had first installed Windows XP many months ago; i.e., Undying ran fine while DK2 absolutely refused to run no matter what I did. To provide a little history, about a month prior to my most recent rebuilding of the system Undying stopped working for no discernible reason. I simply went to play it again one night, and the game's splash screen showed up, the hard drive and CD-ROM drive spun for a while, and then the game terminated without so much as a peep.

That problem remained unfixed until the most recent rebuilding. To have it crop up again now with exactly the same symptoms after the game had been working fine was odd. At least, it sure seems odd to me that the game, which worked fine with my sound card in slot three, would now refuse to run with my sound card in slot four.

Since I was sick and tired of being unable to run that game, I decided to take a gamble. I know that the copy protection mechanisms used by software developers can frequently be the source of such problems. In the case of Undying, the copy protection mechanism is SafeDisc2, which is made by Macrovision. For all my years programming, I really haven't spent much time "cracking" things, largely because I haven't often had the need. In this case, though, I went to work on the problem with a vengeance. Within a few minutes, I had located a couple of utilities that helped me out greatly. For those interested in removing SafeDisc2 protection from an application, the process is as simple as one, two, three:

  1. Determine precisely which revision of SafeDisc2 is used.
  2. Use the proper dumper utility to extract all of the gibberish from the executable file(s).
  3. Use the proper rebuilding utility to put the executable file(s) back together again sans protection.

In my case, I used the handy "SafeDisc Analyzer" utility for step (1), and the "UnSafeDisc2" utility for steps (2) and (3). The result was that I had a cracked version of the Undying executable sitting on my hard drive within a few minutes. Oh yes, one more thing is worth mentioning along this line: I had to run the UnSafeDisc2 tools under Windows 98 because they always crashed under Windows XP. If you're having trouble getting cracking utilities to run under Windows XP, don't fret. Try them under Windows 98 instead. It has been my experience that many such things work under Windows 98 that don't work under Windows XP (for whatever reason).

At any rate, I was pleased to see that my work paid off. When I double-clicked my icon for Undying, it started up within a split second. It didn't merely run; the startup time was easily halved, and I could now run it without the CD in the drive! Those are some really nice benefits, don't you think? As a result of this little adventure, I have to say that I will be cracking any of my other games that irritate me.

The more I think about it, the more I find it despicable that software developers seek to protect themselves from pirates by hassling and/or treating their legitimate customers like criminals. As a software developer myself, I do understand the need to secure one's work, but I will never use such a scheme for any of my products. In my view, the customer reigns supreme; if something is getting in his way, then it shouldn't be there in the first place. 'Nuff said.

Unfortunately, the weirdness quotient chose that moment to go through the roof. Yes, I could run Undying, but it was like watching a herky-jerky slide show. Seriously, the system playback was atrocious with perfectly synchronized aural and visual stuttering of a magnitude heretofore unseen. When I quit the game and got back to the Windows desktop, I discovered why it was happening: my CPU usage was bouncing all over the place.

When Windows XP idles, the CPU usage will normally vary between 0 - 2% with occasional spikes to a handful of percentage points higher. With my system, however, the CPU usage was fluctuating wildly between 40 - 80% with frequent spikes up to 100%. Mind you, that's without me doing anything to it, without a screen saver running, etc. In short, something was keeping my system very busy, though I could not determine what process it was by looking at the task list. The task list showed that the idle process was at fault, but that doesn't make a whole lot of sense to me in light of what the idle process does—or in light of what the word 'idle' means for that matter.

Since I had been fussing around with the sound card, I figured maybe I had screwed something up with its drivers. I tried several different things without any success. Because I had spent the last couple of weeks rebuilding my system, and because I really didn't want to lose all that hard work, I was having a mild panic attack. Thus, I decided I wasn't going to try to fight this problem.

My system clearly hadn't been behaving that way earlier tonight, so I took the bull by the horns and decided to solve the problem the old fashioned way; i.e., by brute force. I fired up GoBack and told it to revert my drives to a time several hours earlier before I ever tried to play Undying. Sure, GoBack took its customary sweet time in reverting my hard drives, but I didn't care how long it took because I was counting on it to solve my problems. After all, whatever I did to my machine, undoing the last few hours of changes to the hard drives would surely have to fix it. Right?

Wrong. After the reversion process completed (over an hour later), I tested the system again only to discover that the problem was still there. I couldn't play any media without serious stuttering, I couldn't play any games without serious stuttering, and the CPU meter was going nuts the whole time. I tried several more things without any success when finally I noticed that the hard drive light was on almost constantly. Since the task manager wouldn't tell me who was doing the writing, and since I did have GoBack active, I decided to act on a hunch, telling GoBack to disable itself. To be clear: I wanted to get GoBack out of the way for further testing. I didn't seriously believe that it was the cause of the problem.

Wrong again. Once GoBack was finally disabled (which took several hours after I went to bed), the problem was no longer occurring. My CPU usage was then varying between 0 - 2% as it should during idle time. Further, I could play Undying without it being a slide show. I was still having some significant audio popping and clicking sounds, but the kind of stuttering I was seeing before was happening very occasionally. Aha! I had found the problem! Something must have been wrong with GoBack! Since I was still having audio issues, though, I wondered if perhaps there were two problems involved? Maybe my sound drivers had gotten fouled up, as I suspected previously, and this was somehow being compounded by GoBack? Hey, I had to assume something. I had to start somewhere.

Exit Mere Weirdness, and Abandon Reason Entirely

So, with that thought in mind, I decided to verify which drivers I presently had installed. The method is quite simple. All I need to do is try to run any of the Creative Labs utilities. If they work, then my system must be using the drivers from Creative Labs. If they fail to run, then I know I've got the Microsoft media driver installed. Simple, eh? I quickly launched the AudioHQ utility, and it ran without complaint. Thus, I figured I must have the Creative Labs drivers in place. I decided I would try the Microsoft media driver instead, since that had previously been rock solid.

I fired up the Windows Update site, told it to detect which updates were available, and my jaw about hit the floor when the media driver update wasn't listed! Please try to understand, dear reader, that this has never happened before. In the past, I have witnessed perfectly predictable consequences. More to the point, once I install the Microsoft media driver update, the Creative Labs utilities stop working. If I then re-install the latest Creative Labs drivers, the Microsoft media driver update will subsequently be listed on the Windows Update site. That's how it's been working for, oh, the last nine months or so. In other words, what had been happening predictably for nearly a year simply stopped being the case. And it's not like I could have been mistaken; i.e., I had used that very same trick less than an hour earlier.

Wait, maybe that was my problem! Maybe somehow the two sets of drivers had become intermingled!? Maybe that's why I was having so much trouble? I decided to install the Creative Labs drivers again to ensure that I had those drivers and only those drivers installed. To my continuing surprise, after a complete reinstallation the Microsoft media driver was still not listed on the Windows Update site, and my problems were still with me. I tried several times, even going so far as to uninstall the sound card completely, power down the system, and reinstall it from scratch. Nothing I did made any difference. The Microsoft media driver was no longer available on the Windows Update site.

At this point, I was starting to wonder about my own sanity. Could I be dreaming? Could I simply have imagined the last nine months or so? My memory isn't the greatest, you see, so I have to ask myself these kinds of questions. Frankly, that's why I take such copious notes. If I didn't, I wouldn't be able to live on a day to day basis. It's a habit I've had to pick up in order to keep on top of things. Anyone who has seen the movie Memento will understand.

Setting self-doubt aside, I decided to see if I could get GoBack working again before I went any further. I mean, I wasn't about to go without its protection anyway, so if I couldn't figure out what was screwing it up, then I was going to have to start over from scratch... again (sigh). Thus, I bit the bullet and told GoBack to enable itself, expecting the worst all the while. When it finished, I was surprised yet again to find that the problem with GoBack had disappeared as mysteriously as it had arisen. I cannot explain why the problem went away any more than I can explain why fussing around with some cracking tools on Undying caused my CPU usage to go haywire.

I began to wonder if maybe my system had magically fixed itself. Heck, why not? It magically screwed itself up, right? So, I checked the Windows Update site, which still didn't show the Microsoft media driver update, played around with the sound card drivers a bit more, and I was (sadly) still getting the clicking, popping, and occasional stuttering and worse than it was before I enabled GoBack. Thus, I decided to take a look at my hard drive configuration. Maybe something wasn't right with them?

Sure enough, I found a couple of interesting things when I checked device manager. First, there was an unidentified device listed as a SCSI/RAID device. And second, the first drive, and only the first drive on my primary IDE channel, was using PIO mode data transfer, not UDMA. I have two Maxtor hard drives in my system, both on the primary IDE channel, and the first was using PIO data transfer while the second was using UDMA5. The obvious question is this: why wasn't my first hard drive using UDMA5 as well? It's UDMA5 capable, and it has always used UDMA5 in the past. Even my DVD and CD drives were using UDMA2, so why was the first hard drive using PIO data transfer?

I couldn't figure out why the setting had changed, and I couldn't find any way to change it manually. Thus, I called a friend who has experience with such things to get his thoughts on the matter. He offered what turned out to be exactly the right suggestion, and I should have thought of it myself in light of my long history of suffering with Microsoft Windows. What's the first thing you do when something doesn't work under Windows? That's exactly right, dear reader: you uninstall it and reinstall it.

I didn't think of this, you see, because I foolishly expect computers to behave in strictly deterministic fashion, an assumption I've begun to question of late. That is, I expect that whatever behavior is exemplified by a computer in some state will be repeated again whenever the computer is next in that state. As I understand it, Windows XP should use the fastest data-transfer mode available for each device on a given IDE channel, but it was clearly "stuck" when it came to my primary hard drive. If a simple reboot didn't fix it, then neither should uninstalling and reinstalling, right?

Wrong yet again. Uninstalling the primary IDE channel and rebooting the computer allowed Windows XP to redetect my hardware—one wonders exactly how it is, by the way, that Windows XP can run from a hard drive on an IDE channel that is not yet installed, but that is probably a question for God, not man—and after another reboot, all my hard drives were using UDMA5. Happily, this made the occurrence of the stuttering much less frequent, though it too failed to solve the problem entirely.

Conclusion

Since that time, I have made one worthwhile discovery: I can install the Microsoft version of the sound drivers manually. For a while, I was afraid that I was simply going to have to live with the stuttering. The Microsoft version of the driver still doesn't appear on the Windows Update site, mind you, but I can manually choose to update my driver, and if I choose to search the system for available drivers, it will list two: one from Creative Labs and one from Microsoft. If I then choose the Microsoft driver, I will have a stutter-free system.

I still haven't achieved any closure with Creative Labs, though I'm starting to think that I'm essentially out of luck. I reported my findings to them several days ago after taking far too much time fussing about with the sound card in different slots. Just today Creative Labs has responded to my posting with what seems to be a conversation-ending denial of responsibility. Their message to me is as follows:

Windows XP does have built in driver support for a lot of Creative Products. Since our web site doesn't have updated drivers specifically tested for your product in Windows XP, my recommendation is to use Windows XP default drivers if the product is recognized. Also, we have a web page to keep customers up to date about our Windows XP driver release schedule: http://www.americas.creative.com/support/files/xpdrivers.asp? [sic] This information will be updated, as driver development for Windows XP continues.

For the record, that web site shows that Windows XP drivers are available for my product. In fact, they're the very same drivers I've been using all along. I'm starting to think that Creative Labs' web-based support is utter rubbish. In the past, when I've called them on the telephone they've usually been able to address my problem. In contrast, their web-based reply strikes me as utterly nonsensical. I can't imagine that the technician doesn't know by now (after trading messages for over two weeks) exactly which kind of card I have in my system and which drivers I'm using. I suppose he might not be able to read, and thus think that the driver-release-schedule web site doesn't show drivers for my card, but I'm going to grant him the benefit of the doubt in that regard.

The worst part about this whole mess is that I have absolutely no explanation whatsoever for the nonsensical things I've observed. Why, for example, did Undying stop working when I moved my sound card from one slot to another? And why did GoBack start gobbling up my CPU after I mucked around with cracking Undying? Why did Windows XP start using PIO rather than UDMA5 as the data-transfer mode for the first hard drive (and only the first hard drive) on the primary IDE channel? If GoBack was really causing the problem with the CPU usage, then why didn't the problem come back after I re-enabled GoBack? It's not like I uninstalled it or anything. I merely disabled it and reenabled it the next day. And, puzzle of puzzles, why doesn't the Microsoft media driver appear on the Windows Update site like it did predictably for almost a year?

I don't have answers for any of these questions. For the time being, I'm living without the benefit of the Creative Labs utilities. With the Microsoft media driver in place, my system's audio never stutters, and though I miss being able to twiddle with EAX and other settings, that functionality simply isn't worth the awful tradeoff. The stuttering is just too annoying to be tolerated.

Thus, the issue remains essentially unresolved, and it will likely remain that way until Creative Labs does something about it, or until I find the time and motivation to contact them via telephone and press for a more satisfactory resolution. Since I have not the time at present, that's the best I can do. If you find yourself in the same unhappy boat, dear reader, then please make a fuss at Creative Labs, and please let me know if you find a better solution. Microsoft obviously has a driver that works. It's too bad that Creative Labs won't draw the obvious conclusion and fix their drivers as well.

10/31/2002

1