Tag Archives: windows

bluraydisc

The case of the stuttering laptop Blu-ray player

When I bought my new HP laptop in summer of 2013, I noticed casually that the CD/DVD/Blu-ray combo drive would occasionally spin up as if to read a disc even if there was nothing in there. Because I rarely used the drive, I found this curious but didn’t pay it any further attention. Fast forward to Christmas time when I decided to relax and watch some Blu-ray movies.

Everything was fine at first. The laptop hardware and CyberLink PowerDVD software handled playback with ease. But about 10 minutes into the Blu-ray movie (any movie), the playback would stutter horribly. Meanwhile, the Blu-ray drive was making noises as if it was trying to read a dirty or damaged disc, spinning up and down wildly while the optical sled was jerking back and forth. What a bummer. All I wanted to do was watch Star Trek Into Darkness but now I had a technical problem to solve.

By checking Device Manager I found the model number of the Blu-ray drive, UJ160, which turns out to be manufactured by Panasonic (Matsushita).

bluray_uj160

A cursory search online reported a few scattered forum posts from others having laptop Blu-ray playback problems, and my first reaction was that it might just be a sub-par drive or have a known problem with a firmware fix available. Unfortunately the firmware installed, version 1.0, was the latest. And I was not yet willing to settle that my brand new laptop had a lousy Blu-ray player. After all, what good is a Blu-ray player that can’t consistently play a Blu-ray movie? That’s like having to settle for buying a car that doesn’t always stop when you press the brake pedal. On a whim I decided to avail myself of a discount upgrade to the newest version of CyberLink PowerDVD player, to see if this made any difference. My gut feeling was that the software wouldn’t matter, and I was correct. The issue persisted.

It was time to break out some SysInternals tools to try and compare what was happening during normal playback to when the drive started stuttering. Process Monitor was the first tool of choice. I setup a filter to check what processes were accessing the drive, which was G: in my case, and let it go while I played the movie. I knew within about 10 minutes I should experience the problem.

bluray_pmfilter

What I found is that when the playback started stuttering, the wmiprvse.exe process appeared in the capture accessing the disc, apparently reading through the files and folders. You can see this in the Process Monitor capture below, starting after the red line I drew in the output (click the image for full view). PowerDVD was trying to read the Blu-ray movie stream files but also had to compete with wmiprvse which decided to read the files on the disc for unknown reasons.

Wmiprvse.exe is not a stranger in my line of work as a Windows server system administrator. It is the Windows Management Instrumentation (WMI) provider host. WMI is an object-oriented standard for accessing system hardware and software information programmatically for management purposes, based on the Common Information Model (CIM). It is a standard Windows service that runs automatically on all Windows computers (Windows Management Instrumentation service).

bluray_pmoutput

Though WMI Provider Host was what showed up in the Process Monitor trace, it was not the root cause. Something was responsible for generating WMI calls that reached out to the Blu-ray drive and WMI Provider Host was just doing its job carrying out the requests. But as a preliminary test, I shut down the Windows Management Instrumentation service and set it to disabled. A handful of services dependent on WMI also had to be stopped. I knew this was not to be a permanent solution, nor would I recommend it. WMI should be up and available as many applications rely on it. Plus, I would not shut down the Security Center service permanently because this helps keep your PC secure by monitoring the state of security-related applications like firewall and antivirus.

bluray_wmisvc1

bluray_wmisvc2

With WMI Provider Host turned off, I played the movie again and waited. And this time the stuttering didn’t happen! I was getting warmer but now it was time to figure out what process was responsible for making the WMI calls in the first place. What had any business arbitrarily reading the Blu-ray drive in the middle of watching a movie?

I knew that WMI had logging built into Windows Event Viewer on Vista and higher. There was also a Debug and a Trace log available, and it turned out that the Trace log would be very valuable. It shows exactly what processes are making WMI calls and the nature of the calls (in other words, what WMI hardware or software classes are being interrogated). The WMI Trace log is not visible by default. You need to make a change in Event Viewer (eventvwr.msc). On the View menu, click Show Analytic and Debug Logs.

bluray_showdebug

Next, drill down the tree to Windows Logs > Microsoft > Windows > WMI-Activity > Trace and right click on Trace and then hit Enable Log.

bluray_enabletrace

Events will probably start filling it up quickly. Disabling and re-enabling the log will have the effect of clearing it out. I turned the WMI service back on and started playing the Blu-ray again with the WMI tracing enabled and waited for the stutter. 10 minutes later, it happened, and I had some log entries to dig through. This is where I hit gold; a pair of entries at the time of the stutter were very interesting. Ignore that the timestamps don’t match my Process Monitor capture; I pieced this blog post together from logs I saved at different times when I was replicating the issue, but the troubleshooting workflow is the same.

First entry of interest in the trace log was a CreateInstanceEnum operation for the Win32_CDROMDrive class.

bluray_wmilog1

Then, a few entries later, an actual query for the Win32_CDROMDrive class; and more importantly, a client process indicating WHAT was executing the query (ClientProcessId).

bluray_wmilog2

Next I turned to SysInternals Process Explorer to figure out what PID 1940 was:

bluray_procexp

As you can see, it is a service running an application related to the Bluetooth hardware on my laptop. I had no idea what business this service had interrogating the Blu-ray drive, nor was I using Bluetooth for anything, but the next test was obvious: Shutdown the service and then play the movie to see if the issue was resolved.

I found it in the services snap-in (services.msc) and turned it off.

bluray_bluesoleilsvc

I played a movie while running Process Monitor and walked away for over 30 minutes. The stutter never recurred.

Though I had no real problem leaving this unknown and perhaps unneeded service disabled, I decided to check and see if there was a newer version available. I went to HP’s website and looked up drivers and software for my laptop model and Windows 8 operating system. Here is the driver version of my Bluetooth hardware originally:

bluray_devmgmt1

As it turned out, a newer version was available from HP:

bluray_HPdownload

I installed this version which triggered an update from the InstallShield installer. The BlueSoleil logo is displayed during the install and their website states it is “a professional Windows-based Bluetooth application.”

bluray_bluesoleilinstall

When it was finished, the BlueSoleilCS service was tagged for deletion and removed, apparently no longer installed automatically with the new version of the software stack. Interestingly, the executable is still located in c:\program files (x86)\Ralink Corporation\Ralink Bluetooth Stack\BlueSoleilCS.exe.

I played the movie again and found the issue was still resolved. Case closed: The Bluetooth software was the culprit and the offending service removed itself with the version upgrade. Here is the driver version after the update:

bluray_devmgmt2

This was one of the lucky times when a driver or software update solved the problem. Things don’t always end this way, but this is a good of example of one that did.