Identifiying cause of "Found New Hardware" wizard

B

Ben Lucas

Hi All,

Can somebody explain how win2k detects hardware devices at startup?
Something is causing the "Found New Hardware" wizard to kick off and I
can't track it down - needless to say there is no new device attached.
Predictably this is now happening as a result of installing a coule
of new USB devices. Both of these have now been completely
uninstalled but the problem persists. I have removed all registry
entries pertaining to these:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\...
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\...

Alot of people seem to have this problem but any response I've seen so
far has been to try re-installing the drivers and if that does not
work then to live with it (if it ain't broke...) I really don't want
to see that Wizard again!

TIA
Ben
 
R

Rick

Ben Lucas said:
Hi All,

Can somebody explain how win2k detects hardware devices at startup?
Something is causing the "Found New Hardware" wizard to kick off and I
can't track it down - needless to say there is no new device attached.
Predictably this is now happening as a result of installing a coule
of new USB devices. Both of these have now been completely
uninstalled but the problem persists. I have removed all registry
entries pertaining to these:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\...
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\...

Alot of people seem to have this problem but any response I've seen so
far has been to try re-installing the drivers and if that does not
work then to live with it (if it ain't broke...) I really don't want
to see that Wizard again!

It's not all that complicated. During boot, Windows looks at the
vendor/subvendor/device IDs of your system devices, and tries
to load a proper driver for each one. If it can't find a given driver,
it pops up the New Hardware wizard.

One or more of your USB devices, or the USB controller itself
does not have a proper driver installed.

You might go through your \winnt\inf folder (it's hidden so you
might have to unhide it first) and look for/delete or rename/ any
third-party INF files related to your USB controller or devices.
Then reload the driver(s) when Windows reboots.
 
B

Ben Lucas

Rick said:
It's not all that complicated. During boot, Windows looks at the
vendor/subvendor/device IDs of your system devices, and tries
to load a proper driver for each one. If it can't find a given driver,
it pops up the New Hardware wizard.

One or more of your USB devices, or the USB controller itself
does not have a proper driver installed.

You might go through your \winnt\inf folder (it's hidden so you
might have to unhide it first) and look for/delete or rename/ any
third-party INF files related to your USB controller or devices.
Then reload the driver(s) when Windows reboots.

Thanks for the info Rick. I should have said that I already checked
the inf & pnf file pairs in the winnt\inf folder - the files for the
new USB devices that I installed, and subsequently removed, are no
longer there. This was easy to do as I had deliberately selected a
vendor id for my test board that was not already being used. So what
I need to know is:

Is the detection of usb devices done solely by means of the files in
winnt\inf and not via registry entries?

I don't have much experience with USB (and hopefully won't be getting
alot more anytime soon ;-)) - is it possible that the USB controller
itself could have been confused by such a straightforward use case?
(If not what might cause the controller itself to require it's driver
to be reloaded?)

Thanks for the help,
Ben
 
R

Rick

Ben Lucas said:
Thanks for the info Rick. I should have said that I already checked
the inf & pnf file pairs in the winnt\inf folder - the files for the
new USB devices that I installed, and subsequently removed, are no
longer there. This was easy to do as I had deliberately selected a
vendor id for my test board that was not already being used. So what
I need to know is:

You're losing me, Ben. Can you explain what you mean by "selected
a vendor ID for my test board"?

Vendor IDs are not selectable by end users. They are hard coded
into a device's ROM or firmware. When Windows boots, the Plug
'N Play service enumerates each bus on the system, including USB.
It can't search for a static set of devices, since it has no way of
knowing beforehand whether any new hardware has been installed
on a system. Instead it simply asks, "What's here?", and listens for
responses on each bus. Each device responds with its vendor,
subvendor and device ID, which Windows uses to find a matching
INF, and from there, to install a driver for the new device. New
entries are then created under Enum and Class for the new hardware.
Is the detection of usb devices done solely by means of the files in
winnt\inf and not via registry entries?

The PNP service is what detects devices, and the registry is modified
according to what PNP finds. If you've manually edited Class, what
might have happened is that you mistakenly deleted one of Windows'
built-in classes (as opposed to new classes which are added by
installation of device drivers). In this case Windows has nothing to
match your hardware to. A reinstall of Windows is the easiest fix for
this problem.
I don't have much experience with USB (and hopefully won't be getting
alot more anytime soon ;-)) - is it possible that the USB controller
itself could have been confused by such a straightforward use case?
(If not what might cause the controller itself to require it's driver
to be reloaded?)

Does Device Manager show any yellow exclamation points or other
problems (such as multiple devices showing where there should be
only one)? Be sure to View/Show hidden devices while checking.
 
B

Ben Lucas

More good info thanks.
You're losing me, Ben. Can you explain what you mean by "selected
a vendor ID for my test board"?
Sure, I'm working on a Media Player project. I hard coded a
non-clashing dummy vid and pid into the ROM for testing to allow me to
easily identify/remove the drivers for the player.
Vendor IDs are not selectable by end users. They are hard coded
into a device's ROM or firmware. When Windows boots, the Plug
'N Play service enumerates each bus on the system, including USB.
It can't search for a static set of devices, since it has no way of
knowing beforehand whether any new hardware has been installed
on a system. Instead it simply asks, "What's here?", and listens for
responses on each bus. Each device responds with its vendor,
subvendor and device ID, which Windows uses to find a matching
INF, and from there, to install a driver for the new device. New
entries are then created under Enum and Class for the new hardware.


The PNP service is what detects devices, and the registry is modified
according to what PNP finds. If you've manually edited Class, what
might have happened is that you mistakenly deleted one of Windows'
built-in classes (as opposed to new classes which are added by
installation of device drivers). In this case Windows has nothing to
match your hardware to. A reinstall of Windows is the easiest fix for
this problem.
OK, so somehow I've got hardware advertising itself for which no
driver is present. As you said, what I am seeing could result from my
removing the entry for a built in Windows class - but, I'm nearly
certain I did'nt as I was careful to search for my test vid/pid and
double-checked before deletion. Can you think of any other
explanation for this?
Does Device Manager show any yellow exclamation points or other
problems (such as multiple devices showing where there should be
only one)? Be sure to View/Show hidden devices while checking.
Yep, got the yellow "Unknown device" (Location: "on Intel(R) 82801DBM
LPC Interface Controller - 24CC "). I tried re-installing driver and
Uninstalling - no luck.

Regards,
Ben
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top