Device drivers will not install with proper INF with correct VID/P

G

Guest

We are trying install an x-ray sensor. The drivers install fine on several
different Windows XP Pro machines, but on the one where we need to install
it, Windows doesn't even recognize the inf as containing information on the
device. The XP Pro machine in question is primarily used for software
development and has had a ton of drivers installed on it previously.

I've tried placing the exact INF into C:\Windows\INF and confirmed that no
other INF contains that hardware's VID/PID.

I've tried deleting the INFCACHE.1 files in every directory on the computer,
so that Windows has to recreate the inf cache, including our INF from
C:\Windows\INF. I've confirmed that the new INFCACHE.1 contains our INF's
filename. Windows even created the PNF for that INF.

I've also checked in the setupapi.log in C:\Windows\, which shows (in
verbose mode) that it is searching for the VID/PID through all the INFs in
C:\Windows\INF:

#-019 Searching for hardware ID(s):
usb\vid_0a40&pid_0101&rev_0264,usb\vid_0a40&pid_0101
#-018 Searching for compatible ID(s):
usb\class_ff&subclass_ff&prot_ff,usb\class_ff&subclass_ff,usb\class_ff
#-019 Searching for hardware ID(s):
usb\vid_0a40&pid_0101&rev_0264,usb\vid_0a40&pid_0101
#-018 Searching for compatible ID(s):
usb\class_ff&subclass_ff&prot_ff,usb\class_ff&subclass_ff,usb\class_ff


It mentions our INF in the list of INFs, but it just skips over it.

It can't find any supported driver, so it just installs a null driver:

#-166 Device install function: DIF_SELECTBESTCOMPATDRV.
#W059 Selecting best compatible driver failed. Error 0xe0000228: There are
no compatible drivers for this device.
#W157 Default installer failed. Error 0xe0000228: There are no compatible
drivers for this device.
#I060 Set selected driver.
#-166 Device install function: DIF_INSTALLDEVICE.
#I125 Installing NULL driver for "USB\VID_0A40&PID_0101\6&27FE8D50&0&3".
#I121 Device install of "USB\VID_0A40&PID_0101\6&27FE8D50&0&3" finished
successfully.

Throughout all of this, I've repeatedly deleted any references to the
VID/PID from the registry, in between each test.

We even got on the phone with a developer for the company who makes the
sensor/drivers, and went through all their troubleshooting. In the end they
had no clue what was wrong.

Any ideas?
 
G

Ghostrider

anon0918 said:
We are trying install an x-ray sensor. The drivers install fine on several
different Windows XP Pro machines, but on the one where we need to install
it, Windows doesn't even recognize the inf as containing information on the
device. The XP Pro machine in question is primarily used for software
development and has had a ton of drivers installed on it previously.

I've tried placing the exact INF into C:\Windows\INF and confirmed that no
other INF contains that hardware's VID/PID.

I've tried deleting the INFCACHE.1 files in every directory on the computer,
so that Windows has to recreate the inf cache, including our INF from
C:\Windows\INF. I've confirmed that the new INFCACHE.1 contains our INF's
filename. Windows even created the PNF for that INF.

I've also checked in the setupapi.log in C:\Windows\, which shows (in
verbose mode) that it is searching for the VID/PID through all the INFs in
C:\Windows\INF:

#-019 Searching for hardware ID(s):
usb\vid_0a40&pid_0101&rev_0264,usb\vid_0a40&pid_0101
#-018 Searching for compatible ID(s):
usb\class_ff&subclass_ff&prot_ff,usb\class_ff&subclass_ff,usb\class_ff
#-019 Searching for hardware ID(s):
usb\vid_0a40&pid_0101&rev_0264,usb\vid_0a40&pid_0101
#-018 Searching for compatible ID(s):
usb\class_ff&subclass_ff&prot_ff,usb\class_ff&subclass_ff,usb\class_ff


It mentions our INF in the list of INFs, but it just skips over it.

It can't find any supported driver, so it just installs a null driver:

#-166 Device install function: DIF_SELECTBESTCOMPATDRV.
#W059 Selecting best compatible driver failed. Error 0xe0000228: There are
no compatible drivers for this device.
#W157 Default installer failed. Error 0xe0000228: There are no compatible
drivers for this device.
#I060 Set selected driver.
#-166 Device install function: DIF_INSTALLDEVICE.
#I125 Installing NULL driver for "USB\VID_0A40&PID_0101\6&27FE8D50&0&3".
#I121 Device install of "USB\VID_0A40&PID_0101\6&27FE8D50&0&3" finished
successfully.

Throughout all of this, I've repeatedly deleted any references to the
VID/PID from the registry, in between each test.

We even got on the phone with a developer for the company who makes the
sensor/drivers, and went through all their troubleshooting. In the end they
had no clue what was wrong.

Any ideas?

Tried the direct route of right-clicking on the *.inf file and selecting
Install?
 
E

Eliyas Yakub [MSFT]

Find your device in the device manager and do an update driver with your INF
and see what happens.
 
E

Eliyas Yakub [MSFT]

What is the setup class in the INF? Do you have any class or coinstaller
DLL? Can you make sure the Enum tree under the registry doesn't have any
trace of this device.

Delete the setupapi.log, retry the install, and post the entire log file
with INF on this forum. We will try to x-ray the files and see if we can
find the problem.
 
G

Guest

Eliyas Yakub said:
What is the setup class in the INF? Do you have any class or coinstaller
DLL? Can you make sure the Enum tree under the registry doesn't have any
trace of this device.

Delete the setupapi.log, retry the install, and post the entire log file
with INF on this forum. We will try to x-ray the files and see if we can
find the problem.

The INF class is USB. I've been making sure to wipe out any reference to the
product or VID/PID under the Enum tree and throughout the registry in between
each test install.

I will paste the verbose setupapi.log once I have access to it. Remember,
this installation worked fine on several other Windows XP Pro machines. In
the meantime, here is the entire INF:
----

[Version]
Signature=$CHICAGO$
Class=USB
Provider=%String0%
LayoutFile=layout.inf

[ClassInstall]

[DestinationDirs]
DefaultDestDir=11
FrameGrab.CopyFiles=11

[Manufacturer]
%String0%=InstruImaging

[InstruImaging]
%String1%=FrameGrab,USB\VID_0a40&PID_0101
%String2%=FrameGrab,USB\VID_04ce&PID_07d1

[FrameGrab]
CopyFiles=FrameGrab.CopyList
AddReg=FrameGrab.AddReg

[FrameGrab.NT]
CopyFiles=FrameGrab.CopyList.NT
AddReg=FrameGrab.AddReg.NT

[FrameGrab.CopyList]
slusbgen.sys

[FrameGrab.AddReg]
HKR,,DevLoader,0,*ntkern
HKR,,NTMPDriver,0,slusbgen.sys

[FrameGrab.CopyList.NT]
slusbgen.sys

[FrameGrab.AddReg.NT]
HKR,,DevLoader,0,*ntkern
HKR,,NTMPDriver,0,slusbgen.sys

[FrameGrab.NT.Services]
AddService=FrameGrabber,0x00000002,FrameGrab_Service_Inst

[FrameGrab_Service_Inst]
DisplayName=%II_grabber.DeviceDesc%
ServiceType=1
StartType=1
ErrorControl=1
ServiceBinary=%11%\SLUSBGEN.SYS

[ControlFlags]

[PreCopySection]
HKR,,NoSetupUI,,1

[Strings]
String0="Instrumentarium Imaging"
String1="Instrumentarium Imaging Sigma USB"
String2="Unconfigured Scanlogic, VID: 0x04ce, PID: 0x07d1"
II_grabber.DeviceDesc = "Instrumentarium Imaging Sigma USB Frame Grabber"
 
G

Guest

Eliyas,

Here is the basic (non-verbose) setupapi.log. There is no reference to the
hardware or VID/PID in the registry, or in the Enum tree. The INF is not
present in Windows\INF, nor is there any other INF containing the VID/PID in
that directory either. The .sys is also not present anywhere under C:\Windows.

I plugged the hardware into the computer's USB port, clicked to Search for
drivers and pointed to the directory on my Desktop where the drivers could be
found.

In this log, the point where it should find the matching VID/PID is where it
instead reports the following:

#-166 Device install function: DIF_SELECTBESTCOMPATDRV.
#W059 Selecting best compatible driver failed. Error 0xe0000228: There are
no compatible drivers for this device.

....and then installs a null driver.


Here's the basic (LogLevel = 0x3000) setupapi.log:

------------------------------------------------------

[SetupAPI Log]
OS Version = 5.1.2600 Service Pack 2
Platform ID = 2 (NT)
Service Pack = 2.0
Suite = 0x0100
Product Type = 1
Architecture = x86

[2007/08/23 10:57:05 832.3 Driver Install]
#-019 Searching for hardware ID(s):
usb\vid_0a40&pid_0101&rev_0264,usb\vid_0a40&pid_0101
#-018 Searching for compatible ID(s):
usb\class_ff&subclass_ff&prot_ff,usb\class_ff&subclass_ff,usb\class_ff
#-198 Command line processed: C:\WINDOWS\system32\services.exe
#-166 Device install function: DIF_SELECTBESTCOMPATDRV.
#W059 Selecting best compatible driver failed. Error 0xe0000228: There are
no compatible drivers for this device.
#W157 Default installer failed. Error 0xe0000228: There are no compatible
drivers for this device.

[2007/08/23 10:57:07 2068.2]
#-199 Executing "C:\WINDOWS\system32\rundll32.exe" with command line:
rundll32.exe newdev.dll,ClientSideInstall
\\.\pipe\PNP_Device_Install_Pipe_0.{960F9E6C-736A-4145-A2BF-A4DB977B0C97}
#I060 Set selected driver.
#-019 Searching for hardware ID(s):
usb\vid_0a40&pid_0101&rev_0264,usb\vid_0a40&pid_0101
#-018 Searching for compatible ID(s):
usb\class_ff&subclass_ff&prot_ff,usb\class_ff&subclass_ff,usb\class_ff
#-166 Device install function: DIF_SELECTBESTCOMPATDRV.
#W059 Selecting best compatible driver failed. Error 0xe0000228: There are
no compatible drivers for this device.
#W157 Default installer failed. Error 0xe0000228: There are no compatible
drivers for this device.
#I060 Set selected driver.
#-019 Searching for hardware ID(s):
usb\vid_0a40&pid_0101&rev_0264,usb\vid_0a40&pid_0101
#-018 Searching for compatible ID(s):
usb\class_ff&subclass_ff&prot_ff,usb\class_ff&subclass_ff,usb\class_ff
#-019 Searching for hardware ID(s):
usb\vid_0a40&pid_0101&rev_0264,usb\vid_0a40&pid_0101
#-018 Searching for compatible ID(s):
usb\class_ff&subclass_ff&prot_ff,usb\class_ff&subclass_ff,usb\class_ff
#-166 Device install function: DIF_SELECTBESTCOMPATDRV.
#W059 Selecting best compatible driver failed. Error 0xe0000228: There are
no compatible drivers for this device.
#W157 Default installer failed. Error 0xe0000228: There are no compatible
drivers for this device.
#-166 Device install function: DIF_SELECTBESTCOMPATDRV.
#W059 Selecting best compatible driver failed. Error 0xe0000228: There are
no compatible drivers for this device.
#W157 Default installer failed. Error 0xe0000228: There are no compatible
drivers for this device.
#I060 Set selected driver.
#-166 Device install function: DIF_INSTALLDEVICE.
#I125 Installing NULL driver for "USB\VID_0A40&PID_0101\5&359A04AD&0&1".
#I121 Device install of "USB\VID_0A40&PID_0101\5&359A04AD&0&1" finished
successfully.
 
G

Guest

Eliyas,

Here is the verbose setupapi.log, after placing the Sigma.inf file into
C:\Windows\INF. There is no reference to the hardware or VID/PID in the
registry, or in the Enum tree. No other INF in Windows\INF contains the
VID/PID.

I plugged the hardware into the computer's USB port, clicked to Search for
drivers and pointed to C:\Windows\INF where the drivers could be found.

In this log, it seems to find the INF, open the PNF, then fail at finding
the best compatible driver. This exact same result occurs if I instead have
it point to the folder on my Desktop which contains the INF and SYS. This is
the exact same result in the setupapi.log that I've gotten no matter what I
try. It finds the INF, processes it (or just opens the PNF), and then fails
to find the best compatible driver.


Here's the verbose setupapi.log (too long to paste here):
ftp://files.apteryx.com/setupapi/setupapi_verbose.log
 
E

Eliyas Yakub [MSFT]

1) The following section is not required for NT. You should remove it.

[FrameGrab.AddReg.NT]
HKR,,DevLoader,0,*ntkern
HKR,,NTMPDriver,0,slusbgen.sys

2) This section is not required either. If I remember it correctly, this was
used in Media class inf files on Win9x. I don't see any documentation on
this anywhere. So I would remove it.

[PreCopySection]
HKR,,NoSetupUI,,1

3) You should change the StartType of your service from 1 to 3.

4) Remove LayoutFile=layout.inf directive from your INF. This is not
required for your INF.

I don't think making these changes going to fix your problem but I would do
it anyways to keep the INF clean. Run chkinf utility from WDK on your INF to
make sure there are no spelling mistakes.

Also did you under Services key to make sure there isn't another service by
the same name (FrameGrabber) already installed in your system?

I looked at your verbose and I couldn't identify any issue. One last
suggestion is that you try your device on Vista. Vista's setupdi tracing is
extremely better than the Vista one. If this doesn't work on Vista, you have
better chance of nailing the issue on Vista than on XP.

If after doing all this, you come to the conclusion that it fails only on
this machine, then my response is going to be that either registry or your
hard disk is corrupt (run chkdisk if you can).
 
G

Guest

Eliyas,

I tested these changes on my computer: I made all the changes to the INF,
and deleted the FrameGrabber key under the Services key. I also removed other
hardware keys referencing FrameGrabber. Now I get this problem during
installation:


#-166 Device install function: DIF_REGISTER_COINSTALLERS.
#I056 Coinstallers registered.
#-166 Device install function: DIF_INSTALLINTERFACES.
#-011 Installing section [FrameGrab.NT.Interfaces] from
"\\aptserver\company\client
directories\instrumentarium\drivers\sigma\sigma.inf".
#I054 Interfaces installed.
#-166 Device install function: DIF_INSTALLDEVICE.
#I123 Doing full install of "USB\VID_0A40&PID_0101\5&151D929&0&1".
#E362 An unsigned or incorrectly signed file "\\aptserver\company\client
directories\instrumentarium\drivers\sigma\sigma.inf" for driver
"Instrumentarium Imaging Sigma USB" will be installed (Policy=Warn). Error
0xe000022f: The third-party INF does not contain digital signature
information.
#-035 Processing service Add/Delete section [FrameGrab.NT.Services].
#E280 Add Service: Failed to get configuration of service "FrameGrabber".
Error 2: The system cannot find the file specified.
#E033 Error 2: The system cannot find the file specified.
#E275 Error while installing services. Error 2: The system cannot find the
file specified.
#E122 Device install failed. Error 2: The system cannot find the file
specified.
#E157 Default installer failed. Error 2: The system cannot find the file
specified.
#I060 Set selected driver.
#I125 Installing NULL driver for "USB\VID_0A40&PID_0101\5&151D929&0&1".
#I121 Device install of "USB\VID_0A40&PID_0101\5&151D929&0&1" finished
successfully.
 
E

Eliyas Yakub [MSFT]

Aha! now we are getting some where. I see one more error in your INF file.

[DestinationDirs]
DefaultDestDir=11
FrameGrab.CopyFiles=11

Set the DefaultDestDir value to 12. Instead of Drivers folder your sys file
is getting copied to system32 folder. Make sure that's the case.

You don't need FrameGrab.CopyFiles directive.

Remove [ControlFlags] line from your INF.

If you are not targetting this INF for 9x system, then remove the following
lines also.

[FrameGrab.AddReg]
HKR,,DevLoader,0,*ntkern
HKR,,NTMPDriver,0,slusbgen.sys

If you had followed a working INF file from the WDK or from your system's
%windir%\inf folder, you would have saved yourself an immense amount of time
and effort. Also you should have run chkinf.

Hope this fixes all the problem. If it does then explain to us why this INF
worked on all other XP systems.

-Eliyas
 
G

Guest

Nevermind, it looks like I just had to restart the computer after deleting
the FrameGrabber service key and the related key in \Control\Class\. I'll let
you know how it goes...
 
G

Guest

Eliyas,

We did not write the inf, nor do we make/sell the hardware that it
represents. We simply bought the hardware and are trying to install it.

I'll let you know how it goes.
 
G

Guest

Eliyas,

I tested it on Vista, both the original INF and the one with all your
suggestions, and I get the same setupapi logs either way:


setupapi.dev.log:
-----------------------------------------------

[Device Install Log]
OS Version = 6.0.6000
Service Pack = 0.0
Suite = 0x0100
ProductType = 1
Architecture = amd64

[BeginLog]
[Device Install (DiShowUpdateDevice) - USB\VID_0A40&PID_0101\5&2EED174E&0&1]
Section start 2007/08/27 11:15:13.937
cmd: "C:\Windows\system32\mmc.exe" "C:\Windows\system32\devmgmt.msc"
dvi: {DIF_UPDATEDRIVER_UI} 11:15:13.937
dvi: No class installer for 'Unknown driver software package'
dvi: Default installer: Enter 11:15:13.937
dvi: Default installer: Exit
dvi: {DIF_UPDATEDRIVER_UI - exit(0xe000020e)} 11:15:13.937
ndv: {Update Driver Software Wizard for
USB\VID_0A40&PID_0101\5&2EED174E&0&1}
ndv: {Update Driver Software Wizard exit(00000000)}
<<< Section end 2007/08/27 11:15:22.111
<<< [Exit status: SUCCESS]

-----------------------------------------------

setupapi.app.log
-----------------------------------------------

[Device Install Log]
OS Version = 6.0.6000
Service Pack = 0.0
Suite = 0x0100
ProductType = 1
Architecture = amd64

[BeginLog]
dvi: Set selected driver complete.
[Build Driver List - USB\VID_0A40&PID_0101\5&2EED174E&0&1]
Section start 2007/08/27 11:15:21.097
cmd: "C:\Windows\system32\mmc.exe" "C:\Windows\system32\devmgmt.msc"
dvi: Searching for hardware ID(s):
dvi: usb\vid_0a40&pid_0101&rev_0264
dvi: usb\vid_0a40&pid_0101
dvi: Searching for compatible ID(s):
dvi: usb\class_ff&subclass_ff&prot_ff
dvi: usb\class_ff&subclass_ff
dvi: usb\class_ff
dvi: Unable to retrieve InfPath - likely no driver installed
<<< Section end 2007/08/27 11:15:21.112
<<< [Exit status: SUCCESS]

[Build Driver List - USB\VID_0A40&PID_0101\5&2EED174E&0&1]
Section start 2007/08/27 11:15:21.112
cmd: "C:\Windows\system32\mmc.exe" "C:\Windows\system32\devmgmt.msc"
dvi: Searching for hardware ID(s):
dvi: usb\vid_0a40&pid_0101&rev_0264
dvi: usb\vid_0a40&pid_0101
dvi: Searching for compatible ID(s):
dvi: usb\class_ff&subclass_ff&prot_ff
dvi: usb\class_ff&subclass_ff
dvi: usb\class_ff
dvi: Enumerating INFs from path list '\\server\sensor drivers\sigma'
inf: Searched 1 INFs in directory: '\\server\sensor drivers\sigma'
<<< Section end 2007/08/27 11:15:21.144
<<< [Exit status: SUCCESS]

[DIF_SELECTBESTCOMPATDRV - USB\VID_0A40&PID_0101\5&2EED174E&0&1]
Section start 2007/08/27 11:15:21.144
cmd: "C:\Windows\system32\mmc.exe" "C:\Windows\system32\devmgmt.msc"
dvi: No class installer for 'Unknown driver software package'
dvi: Default installer: Enter 11:15:21.144
dvi: {Select Best Driver}
! dvi: Selecting driver failed(0xe0000228)
dvi: {Select Best Driver - exit(0xe0000228)}
! dvi: Default installer: failed!
! dvi: Error 0xe0000228: There are no compatible drivers for this device.
<<< Section end 2007/08/27 11:15:21.144
<<< [Exit status: FAILURE(0xe0000228)]
 
G

Guest

Oops. That was Vista 64 bit, and apparently I need to specify NTamd64. When I
do that, it completely processes the INF perfectly, but then fails during
handling the SYS (as expected), saying the driver wasn't made for that
platform (as expected).

When I tried your suggested changes on Vista 32 bit, it installed fine. I'll
try it out again on the problem machine.
 

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