Why does my hard drive LED light blink every second?
It may be the operating system polling the optical drive to see if you have inserted anything - the hard disk and optical disk share common circuitry and so the LED may apply to both. You could try turning off autoinsert notification (Device Manager - look at the properties of the optical drive) and autorun.
A bit more info here: .../cdtTipAutoRun.htm (broken, replacement: http://web.archive.org/web/20100527203945/http://www.base40.com/cdtTipAutoRun.htm)
If you want to see what is going on, on your system, there is a cool tool from sysinternals(they make all the cool tools) called processmon It will tell you literally everything that is going on. You may be shocked to see how much stuff is active when your not.
I'm not saying you will be able to stop your light from blinking every once in a while, but at least you can see what is going on.
The real culprit of HDD LED blinking on my Acer notebook was the service internally named BrcmCardReader with the long name Broadcom Card Reader Service. As soon as I've stopped the service the blinking stopped too. And of course I didn't have to disable the CD-ROM or cover the LED with the tape to achieve this. Contrary to what's written in the other posts here, the operating system itself isn't so badly written to poll anything. But this service written by Broadcom is another story.
I've first tried to figure out what causes the blinks only to find that it was something like wbem wmiprvse.exe that did things like IRP_MJ_QUERY_INFORMATION
and IRP_MJ_QUERY_VOLUME_INFORMATION
for every drive. As I knew that wmiprvse is actually a WMI execution component written by Microsoft I even tried using Event Log to trace the WMI activity, as documented on MSDN. It wasn't useful, I was able to observe only
ProviderInfo for GroupOperationId = 101; Operation = Provider::CreateInstanceEnum - CIMWin32 : Win32_LogicalDisk; HostID = 2368; ProviderName = CIMWin32; ProviderGuid = {d63a5850-8f16-11cf-9f47-00aa00bf345c}; Path = %systemroot%\system32\wbem\cimwin32.dll
Microsoft obviously does poor job in this trace: the CIMWin32, the host id, the provider guid and the path all point to the binary executing the WMI, not to the program making WMI queries. So at that moment I wasn't able to discover that Broadcom Card Reader Service does it as nothing logged pointed to it, that's why I'm quoting all this in order to ease the pain for anybody who puts these items in the search machine. This inability to see who actually commands the activity is also the explanation why some people here claim that "it's an operating system:" whoever stops at this point doesn't see anything else. But I knew that wmiprvse isn't doing it on itself, I knew there must be some other process commanding.
So finally one day after I've made an image backup of my whole system, I started with the brute force approach, turning off the things one by one, until the blinking stopped. So now I'm sure. It is the Broadcom Card Reader Service. And as I'm actually a programmer, I've even inspected the strings inside of c:\Program Files\Broadcom\MemoryCard\BrcmCardReader.exe
and I've found what it exactly does, as soon as it's turned on:
SELECT * FROM __InstanceDeletionEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_LogicalDisk'
SELECT * FROM __InstanceCreationEvent WITHIN 0.1 WHERE TargetInstance ISA 'Win32_LogicalDisk'
Since the blinking happens so regularly, it's obvious that it is polling continuously. That is unbelievably bad programming of the service. Observe the WITHIN clause in the queries. Specifically, Microsoft documents how such constructs behave in the WMI:
http://technet.microsoft.com/en-us/magazine/2006.09.wmievents.aspx
Note that the WITHIN clause specifies the polling interval for intrinsic event classes. Because the class being monitored does not have a corresponding event provider, the WMI polling mechanism is used to periodically check if an intrinsic event has occurred for the particular class. This polling interval is specified by the WITHIN keyword and measured in seconds.
So I now know that Broadcom service programmers decided to poll for the __InstanceDeletionEvent
of every logical disk every second and for __InstanceCreationEvent
even 10 times per second! And they manage to involve COM, separate processes and do this over WMI/wmiprvse in a way that it's not observable (at least I haven't found out) that their service is doing this!
Bad, amazingly bad programming.
And there's proper solution for services and applications: RegisterDeviceNotification
. A real notification (that is, quiet when there's nothing new happening) can be received by services via the SERVICE_CONTROL_DEVICEEVENT
event. See for example:
https://stackoverflow.com/questions/706352/use-registerdevicenotification-for-all-usb-devices
After knowing all this, the search for Broadcom Card Reader Service actually returns a few posts of people who discovered it earlier: on community.acer.com (I'm quoting the posts for which I haven't found permalinks):
"Vladan Re: Aspire 5750Z card reader driver,Win 8 11-29-2012 06:29 AM
Just discovered that Broadcom Card Reader Service is causing hdd led to blink multiple times per second, all the time. Stopping and setting this service to manual or even disabled fix the blinking problem with no impact to card reader functionality."
on the bleepingcomputer.com:
"Cheesenbranston Posted 28 May 2013 - 04:47 AM
I've had a similar issue since installing Win8 pro x64 as a fresh install i.e. not an upgrade. In Task Manager although disk throughput didn't seem particularly high usage was constantly at 100%. I believe I've identified the issue as being the Broadcom Card Reader service."
and on Amazon.co.uk, a review by S. J. Harvey on 1 Feb 2013:
http://www.amazon.co.uk/review/R3GZB5OXP4SNP7/ref=cm_cr_rdp_perm?ie=UTF8&ASIN=B009QZCYU4&linkCode=&nodeID=&tag=
The one thing that REALLY bugged me (note the past tense) is that the drive light flickered constantly. It wasn't HDD activity and after a couple of hours I traced the culprit. It was the Broadcom Card-Reader service.
He further suggests switching the service to manual, on my computer I had to disable it completely though.
So people even reported higher resource usage, apart from just HDD LED blinking.
The final solution: disable the "Broadcom Card Reader Service": in Services go to its properties, stop it and change its startup type to "disabled". The blinking will finally stop. I'd really like to know what's the purpose of it anyway -- what I'm missing by turning it off? Seing how poorly it is programmed, I wouldn't be surprised that the whole purpose of the service is to change some icon when the memory card is inserted! What I'm sure is that misusing the WMI is really bad programming.