Can not load rndis driver

Hi All,

I am new to this list so please forgive me if I am asking some dump
questions. I have developed a small firmware on an embedded hardware to
implement the USB RNDIS ethernet device. While the device works perfectly
fine with a Linux-based host, when it comes to Windows(I have tried with
WinXP SP1 and SP2), I get the following error while loading the driver -
‘The device can not start (Code 10)’ .

The link http://support.microsoft.com/kb/943104/ mentions that ‘Code 10’ is
given when the Device Manager does not really know what is going wrong.
Since the driver that I am trying to load(which is usb8023x.sys that
internally uses the dll rndismpx.sys as well) is part of standard windows
installation I am pretty sure its not an issue with the driver.

In such a situation, how can I possibly find out why the driver is failing
to start ? Is there any debug messages that I am supposed to capture ?

Thanks in advance,
Jinesh.

Jinesh:

This is probably the most common variation on the most common problem faced by developer’s new to Windows drivers - device manager
code 10 device installation failure. I don’t think that I’ve read the kd you site, but at least it’s honest - code 10 is totally
meaningless, but then again so are most of the others as well, and there also isn’t much documentation that’s of any help either.
The good news is that there is a definite place to start - look in ‘\Windows\setupapi.log.’ The bad news is that it’s an MSFT
diagnostic tool that’s quite a bit worse than some of their other offerings and makes Event Viewer look like Cliff Notes - you have
to data mine to find out what happened. So, what I would check for first before subjecting yourself to that are the following:

  1. Does anything you’re installing need the KMDF coinstallers? Unfortunately, I have no idea if either of the two drivers you
    mentioned use it or not. This is probably the most common device installation issue.

  2. I very much doubt that this is the case, but are you running on XP x64, also known as server 20003 SP1? If so, then a code 10
    also commonly means that the driver image is not signed. I don’t see how this could be it given the drivers that you’re using, but
    these are the two easy ones to eliminate.

  3. No you have to dig in setupapi.log. I would find the portion relevant to one install that failed, and post it along with your
    inf and someone will be able to help you, but this is where I have to bail out, because I avoid this stuff like the plague, and I
    don’t what to do beyond these ideas. If you do start to read setupapi.log, my advice would be to ignore for the moment everything
    it says about driver ranking, and really trying to figure out whether a driver loaded or not by following the steps, because it’s
    confusing at as hell and it won’t tell why it’s not working really, and just look for big ticket items like ‘coinstaller,’ at least
    until someone who knows more than I looks at your INF, because this is very likely to just be a case of the system not finding a
    file, and failing with strange error messages.

As it’s only around 09:30 PST, I would say that there is a very good chance that Doron is out there somewhere, but if not, tomorrow
someone will be along.

Good luck,

mm

Jinesh K J wrote:

Hi All,

I am new to this list so please forgive me if I am asking some dump
questions. I have developed a small firmware on an embedded hardware to
implement the USB RNDIS ethernet device. While the device works
perfectly fine with a Linux-based host, when it comes to Windows(I have
tried with WinXP SP1 and SP2), I get the following error while loading
the driver - ‘The device can not start (Code 10)’ .

The link http://support.microsoft.com/kb/943104/ mentions that ‘Code 10’
is given when the Device Manager does not really know what is going
wrong. Since the driver that I am trying to load(which is usb8023x.sys
that internally uses the dll rndismpx.sys as well) is part of standard
windows installation I am pretty sure its not an issue with the driver.

In such a situation, how can I possibly find out why the driver is
failing to start ? Is there any debug messages that I am supposed to
capture ?

Thanks in advance,
Jinesh.

Thank you Brien,

As you had sugguested I am posting the relevant portions of setapi.log below
:

==================================================================

[2008/06/16 17:39:48 716.6 Driver Install]
#-019 Searching for hardware ID(s):
usb\vid_046b&pid_ff10&rev_0100&mi_01,usb\vid_046b&pid_ff10&mi_01
#-018 Searching for compatible ID(s):
usb\class_0a&subclass_00&prot_00,usb\class_0a&subclass_00,usb\class_0a
#-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.
[2008/06/16 17:39:50 1284.5]
#-199 Executing “C:\WINDOWS\system32\rundll32.exe” with command line:
rundll32.exe newdev.dll,ClientSideInstall
\.\pipe\PNP_Device_Install_Pipe_0.{33327C64-A80C-4FC2-AFDC-82AA6B24E22D}
#I060 Set selected driver.
#-019 Searching for hardware ID(s):
usb\vid_046b&pid_ff10&rev_0100&mi_01,usb\vid_046b&pid_ff10&mi_01
#-018 Searching for compatible ID(s):
usb\class_0a&subclass_00&prot_00,usb\class_0a&subclass_00,usb\class_0a
#-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.
[2008/06/16 17:46:19 1144.1092]
#-198 Command line processed: “C:\WINDOWS\system32\mmc.exe” /s
C:\WINDOWS\system32\compmgmt.msc
#I060 Set selected driver.
#-019 Searching for hardware ID(s):
usb\vid_046b&pid_ff10&rev_0100&mi_00,usb\vid_046b&pid_ff10&mi_00
#-018 Searching for compatible ID(s):
usb\class_02&subclass_02&prot_ff,usb\class_02&subclass_02,usb\class_02
#-019 Searching for hardware ID(s):
usb\vid_046b&pid_ff10&rev_0100&mi_00,usb\vid_046b&pid_ff10&mi_00
#-018 Searching for compatible ID(s):
usb\class_02&subclass_02&prot_ff,usb\class_02&subclass_02,usb\class_02
#-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_046b&pid_ff10&rev_0100&mi_00,usb\vid_046b&pid_ff10&mi_00
#-018 Searching for compatible ID(s):
usb\class_02&subclass_02&prot_ff,usb\class_02&subclass_02,usb\class_02
#-019 Searching for hardware ID(s):
usb\vid_046b&pid_ff10&rev_0100&mi_00,usb\vid_046b&pid_ff10&mi_00
#-018 Searching for compatible ID(s):
usb\class_02&subclass_02&prot_ff,usb\class_02&subclass_02,usb\class_02
#-019 Searching for hardware ID(s):
usb\vid_046b&pid_ff10&rev_0100&mi_00,usb\vid_046b&pid_ff10&mi_00
#-018 Searching for compatible ID(s):
usb\class_02&subclass_02&prot_ff,usb\class_02&subclass_02,usb\class_02
#-019 Searching for hardware ID(s):
usb\vid_046b&pid_ff10&rev_0100&mi_00,usb\vid_046b&pid_ff10&mi_00
#-018 Searching for compatible ID(s):
usb\class_02&subclass_02&prot_ff,usb\class_02&subclass_02,usb\class_02
#-124 Doing copy-only install of
“USB\VID_046B&PID_FF10&MI_00\7&1192E9&1&0000”.
#E366 An unsigned or incorrectly signed file “c:\documents and
settings\jinesh\desktop\share\new.inf” for driver “Remote NDIS based
Device” will be installed (Policy=Warn, user said ok). Error 0xe000022f:
The third-party INF does not contain digital signature information.
#W187 Install failed, attempting to restore original files.
#E362 An unsigned or incorrectly signed file “c:\documents and
settings\jinesh\desktop\share\new.inf” for driver “Remote NDIS based
Device” will be installed (Policy=Warn). Error 0xe000022f: The third-party
INF does not contain digital signature information.
#-166 Device install function: DIF_REGISTER_COINSTALLERS.
#I056 Coinstallers registered.
#-166 Device install function: DIF_INSTALLINTERFACES.
#-011 Installing section [RNDIS.NT.5.1.Interfaces] from “c:\documents and
settings\jinesh\desktop\share\new.inf”.
#I054 Interfaces installed.
#-166 Device install function: DIF_INSTALLDEVICE.
#I123 Doing full install of “USB\VID_046B&PID_FF10&MI_00\7&1192E9&1&0000”.
#E362 An unsigned or incorrectly signed file “c:\documents and
settings\jinesh\desktop\share\new.inf” for driver “Remote NDIS based
Device” will be installed (Policy=Warn). Error 0xe000022f: The third-party
INF does not contain digital signature information.
#I121 Device install of “USB\VID_046B&PID_FF10&MI_00\7&1192E9&1&0000”
finished successfully.
[2008/06/16 17:47:11 1144.1130]
#-198 Command line processed: “C:\WINDOWS\system32\mmc.exe” /s
C:\WINDOWS\system32\compmgmt.msc
#-166 Device install function: DIF_PROPERTYCHANGE.
#I292 Changing device properties of “ROOT\MS_PSCHEDMP\0000”.
#I306 DICS_START: Device has been started.
[2008/06/16 17:47:11 1144.1131]
#-198 Command line processed: “C:\WINDOWS\system32\mmc.exe” /s
C:\WINDOWS\system32\compmgmt.msc
#-166 Device install function: DIF_PROPERTYCHANGE.
#I292 Changing device properties of “ROOT\MS_PSCHEDMP\0001”.
#I306 DICS_START: Device has been started.
[2008/06/16 17:47:11 1144.1132]
#-198 Command line processed: “C:\WINDOWS\system32\mmc.exe” /s
C:\WINDOWS\system32\compmgmt.msc
#-166 Device install function: DIF_PROPERTYCHANGE.
#I292 Changing device properties of “ROOT\MS_PSCHEDMP\0002”.
#I306 DICS_START: Device has been started.
[2008/06/16 17:47:11 1144.1133]
#-198 Command line processed: “C:\WINDOWS\system32\mmc.exe” /s
C:\WINDOWS\system32\compmgmt.msc
#-166 Device install function: DIF_PROPERTYCHANGE.
#I292 Changing device properties of “ROOT\MS_PSCHEDMP\0003”.
#I306 DICS_START: Device has been started.
[2008/06/16 17:47:11 1144.1134]
#-198 Command line processed: “C:\WINDOWS\system32\mmc.exe” /s
C:\WINDOWS\system32\compmgmt.msc
#-166 Device install function: DIF_PROPERTYCHANGE.
#I292 Changing device properties of “ROOT\MS_PSCHEDMP\0004”.
#I306 DICS_START: Device has been started.
[2008/06/16 17:47:11 1144.1141 Driver Install]
#-019 Searching for hardware ID(s): ms_pschedmp
#-198 Command line processed: “C:\WINDOWS\system32\mmc.exe” /s
C:\WINDOWS\system32\compmgmt.msc
#I022 Found “ms_pschedmp” in C:\WINDOWS\INF\netpsa.inf; Device: “Packet
Scheduler Miniport”; Driver: “Packet Scheduler Miniport”; Provider:
“Microsoft”; Mfg: “Microsoft”; Section name: “PSchedMP.ndi”.
#I023 Actual install section: [PSchedMP.ndi]. Rank: 0x00000000. Effective
driver date: 07/01/2001.
#I063 Selected driver installs from section [PSchedMP.ndi] in
“c:\windows\inf\netpsa.inf”.
#I320 Class GUID of device remains: {4D36E972-E325-11CE-BFC1-08002BE10318}.
#I060 Set selected driver.
#I058 Selected best compatible driver.
#-166 Device install function: DIF_REGISTER_COINSTALLERS.
#I056 Coinstallers registered.
#-166 Device install function: DIF_INSTALLINTERFACES.
#-011 Installing section [PSchedMP.ndi.Interfaces] from
“c:\windows\inf\netpsa.inf”.
#I054 Interfaces installed.
#-166 Device install function: DIF_INSTALLDEVICE.
#I123 Doing full install of “ROOT\MS_PSCHEDMP\0005”.
#I121 Device install of “ROOT\MS_PSCHEDMP\0005” finished successfully.
#-166 Device install function: DIF_PROPERTYCHANGE.
#I292 Changing device properties of “ROOT\MS_PSCHEDMP\0005”.
#I306 DICS_START: Device has been started.
[2008/06/16 17:47:12 1144.1155]
#-198 Command line processed: “C:\WINDOWS\system32\mmc.exe” /s
C:\WINDOWS\system32\compmgmt.msc
#-166 Device install function: DIF_PROPERTYCHANGE.
#I292 Changing device properties of
“USB\VID_046B&PID_FF10&MI_00\7&1192E9&1&0000”.
#I163 Device not started: Device has problem: 0x0a: CM_PROB_FAILED_START.
#I307 DICS_START: Device could not be started.
[2008/06/16 17:47:27 1144.1436 Driver Install]
#-019 Searching for hardware ID(s):
usb\vid_046b&pid_ff10&rev_0100&mi_00,usb\vid_046b&pid_ff10&mi_00
#-018 Searching for compatible ID(s):
usb\class_02&subclass_02&prot_ff,usb\class_02&subclass_02,usb\class_02
#-198 Command line processed: “C:\WINDOWS\system32\mmc.exe” /s
C:\WINDOWS\system32\compmgmt.msc
#I063 Selected driver installs from section [RNDIS.NT.5.1] in
“c:\windows\inf\oem8.inf”.
#I320 Class GUID of device remains: {4D36E972-E325-11CE-BFC1-08002BE10318}.
#I060 Set selected driver.
[2008/06/16 17:47:45 1144.1439]
#-198 Command line processed: “C:\WINDOWS\system32\mmc.exe” /s
C:\WINDOWS\system32\compmgmt.msc
#I060 Set selected driver.
#-019 Searching for hardware ID(s):
usb\vid_046b&pid_ff10&rev_0100&mi_01,usb\vid_046b&pid_ff10&mi_01
#-018 Searching for compatible ID(s):
usb\class_0a&subclass_00&prot_00,usb\class_0a&subclass_00,usb\class_0a
#I393 Modified INF cache “C:\WINDOWS\inf\INFCACHE.1”.
#-019 Searching for hardware ID(s):
usb\vid_046b&pid_ff10&rev_0100&mi_01,usb\vid_046b&pid_ff10&mi_01
#-018 Searching for compatible ID(s):
usb\class_0a&subclass_00&prot_00,usb\class_0a&subclass_00,usb\class_0a
#-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_046b&pid_ff10&rev_0100&mi_01,usb\vid_046b&pid_ff10&mi_01
#-018 Searching for compatible ID(s):
usb\class_0a&subclass_00&prot_00,usb\class_0a&subclass_00,usb\class_0a
#-019 Searching for hardware ID(s):
usb\vid_046b&pid_ff10&rev_0100&mi_01,usb\vid_046b&pid_ff10&mi_01
#-018 Searching for compatible ID(s):
usb\class_0a&subclass_00&prot_00,usb\class_0a&subclass_00,usb\class_0a
#-124 Doing copy-only install of
“USB\VID_046B&PID_FF10&MI_01\7&1192E9&1&0001”.
#W334 Failed to verify catalog when scanning file queue. Error 1168:
Element not found.
#E366 An unsigned or incorrectly signed file “c:\windows\inf\oem8.inf” for
driver “Remote NDIS based Device” will be installed (Policy=Warn, user
said ok). Error 1168: Element not found.
#W187 Install failed, attempting to restore original files.
#E362 An unsigned or incorrectly signed file “c:\windows\inf\oem8.inf” for
driver “Remote NDIS based Device” will be installed (Policy=Warn). Error
1168: Element not found.
#-166 Device install function: DIF_REGISTER_COINSTALLERS.
#I056 Coinstallers registered.
#-166 Device install function: DIF_INSTALLINTERFACES.
#-011 Installing section [RNDIS.NT.5.1.Interfaces] from
“c:\windows\inf\oem8.inf”.
#I054 Interfaces installed.
#-166 Device install function: DIF_INSTALLDEVICE.
#I123 Doing full install of “USB\VID_046B&PID_FF10&MI_01\7&1192E9&1&0001”.
#I121 Device install of “USB\VID_046B&PID_FF10&MI_01\7&1192E9&1&0001”
finished successfully.
[2008/06/16 17:48:04 1144.1491 Driver Install]
#-019 Searching for hardware ID(s): ms_pschedmp
#-198 Command line processed: “C:\WINDOWS\system32\mmc.exe” /s
C:\WINDOWS\system32\compmgmt.msc
#I022 Found “ms_pschedmp” in C:\WINDOWS\INF\netpsa.inf; Device: “Packet
Scheduler Miniport”; Driver: “Packet Scheduler Miniport”; Provider:
“Microsoft”; Mfg: “Microsoft”; Section name: “PSchedMP.ndi”.
#I023 Actual install section: [PSchedMP.ndi]. Rank: 0x00000000. Effective
driver date: 07/01/2001.
#I063 Selected driver installs from section [PSchedMP.ndi] in
“c:\windows\inf\netpsa.inf”.
#I320 Class GUID of device remains: {4D36E972-E325-11CE-BFC1-08002BE10318}.
#I060 Set selected driver.
#I058 Selected best compatible driver.
#-166 Device install function: DIF_REGISTER_COINSTALLERS.
#I056 Coinstallers registered.
#-166 Device install function: DIF_INSTALLINTERFACES.
#-011 Installing section [PSchedMP.ndi.Interfaces] from
“c:\windows\inf\netpsa.inf”.
#I054 Interfaces installed.
#-166 Device install function: DIF_INSTALLDEVICE.
#I123 Doing full install of “ROOT\MS_PSCHEDMP\0006”.
#I121 Device install of “ROOT\MS_PSCHEDMP\0006” finished successfully.
#-166 Device install function: DIF_PROPERTYCHANGE.
#I292 Changing device properties of “ROOT\MS_PSCHEDMP\0006”.
#I306 DICS_START: Device has been started.
[2008/06/16 17:48:04 1144.1478]
#-198 Command line processed: “C:\WINDOWS\system32\mmc.exe” /s
C:\WINDOWS\system32\compmgmt.msc
#-166 Device install function: DIF_PROPERTYCHANGE.
#I292 Changing device properties of “ROOT\MS_PSCHEDMP\0000”.
#I306 DICS_START: Device has been started.
[2008/06/16 17:48:04 1144.1479]
#-198 Command line processed: “C:\WINDOWS\system32\mmc.exe” /s
C:\WINDOWS\system32\compmgmt.msc
#-166 Device install function: DIF_PROPERTYCHANGE.
#I292 Changing device properties of “ROOT\MS_PSCHEDMP\0001”.
#I306 DICS_START: Device has been started.
[2008/06/16 17:48:04 1144.1480]
#-198 Command line processed: “C:\WINDOWS\system32\mmc.exe” /s
C:\WINDOWS\system32\compmgmt.msc
#-166 Device install function: DIF_PROPERTYCHANGE.
#I292 Changing device properties of “ROOT\MS_PSCHEDMP\0002”.
#I306 DICS_START: Device has been started.
[2008/06/16 17:48:04 1144.1481]
#-198 Command line processed: “C:\WINDOWS\system32\mmc.exe” /s
C:\WINDOWS\system32\compmgmt.msc
#-166 Device install function: DIF_PROPERTYCHANGE.
#I292 Changing device properties of “ROOT\MS_PSCHEDMP\0003”.
#I306 DICS_START: Device has been started.
[2008/06/16 17:48:04 1144.1482]
#-198 Command line processed: “C:\WINDOWS\system32\mmc.exe” /s
C:\WINDOWS\system32\compmgmt.msc
#-166 Device install function: DIF_PROPERTYCHANGE.
#I292 Changing device properties of “ROOT\MS_PSCHEDMP\0004”.
#I306 DICS_START: Device has been started.
[2008/06/16 17:48:04 1144.1483]
#-198 Command line processed: “C:\WINDOWS\system32\mmc.exe” /s
C:\WINDOWS\system32\compmgmt.msc
#-166 Device install function: DIF_PROPERTYCHANGE.
#I292 Changing device properties of “ROOT\MS_PSCHEDMP\0005”.
#I306 DICS_START: Device has been started.
[2008/06/16 17:48:05 1144.1507]
#-198 Command line processed: “C:\WINDOWS\system32\mmc.exe” /s
C:\WINDOWS\system32\compmgmt.msc
#-166 Device install function: DIF_PROPERTYCHANGE.
#I292 Changing device properties of
“USB\VID_046B&PID_FF10&MI_01\7&1192E9&1&0001”.
#I163 Device not started: Device has problem: 0x0a: CM_PROB_FAILED_START.
#I307 DICS_START: Device could not be started.
[2008/06/16 17:48:06 1144.1736]
#-198 Command line processed: “C:\WINDOWS\system32\mmc.exe” /s
C:\WINDOWS\system32\compmgmt.msc
#I292 Changing device properties of
“USB\VID_046B&PID_FF10&MI_00\7&1192E9&1&0000”.
[2008/06/16 17:48:13 1144.2011]
#-198 Command line processed: “C:\WINDOWS\system32\mmc.exe” /s
C:\WINDOWS\system32\compmgmt.msc
#I292 Changing device properties of
“USB\VID_046B&PID_FF10&MI_00\7&1192E9&1&0000”.
#I292 Changing device properties of
“USB\VID_046B&PID_FF10&MI_00\7&1192E9&1&0000”.
#I163 Device not started: Device has problem: 0x0a: CM_PROB_FAILED_START.
#I294 DICS_ENABLE DICS_FLAG_GLOBAL: Enabling device globally.

==================================================================

BTW, I do not know much about ‘KMDF coinstallers’ . I need to investigate
further on that matter- but I think no extra work than a proper INF file is
needed to load these microsoft windows drivers. Given below is the INF file
that I am using :

=================================================

;
; Remote NDIS template device setup file
; Copyright (c) Microsoft Corporation
;
; This is the template for the INF installation script
; for the RNDIS-over-USB host driver.
; This INF works for Windows XP SP2, Windows XP x64,
; Windows Server 2003 SP1 x86, x64, and ia64, and
; Windows Vista x86 and x64.
; This INF will work with Windows XP, Windows XP SP1,
; and Windows 2003 after applying specific hotfixes.

[Version]
Signature = “$Windows NT$”
Class = Net
ClassGUID = {4d36e972-e325-11ce-bfc1-08002be10318}
Provider = %Microsoft%
DriverVer =06/21/2006,6.0.6000.16384
;CatalogFile = device.cat

[Manufacturer]
%Microsoft% = RndisDevices,NTx86,NTamd64,NTia64

; Decoration for x86 architecture
[RndisDevices.NTx86]
%RndisDevice% = RNDIS.NT.5.1, USB\VID_046b&PID_ff10

; Decoration for x64 architecture
[RndisDevices.NTamd64]
%RndisDevice% = RNDIS.NT.5.1, USB\VID_046b&PID_ff10

; Decoration for ia64 architecture
[RndisDevices.NTia64]
%RndisDevice% = RNDIS.NT.5.1, USB\VID_046b&PID_ff10

;@@@ This is the common setting for setup
[ControlFlags]
ExcludeFromSelect=*

; DDInstall section
; References the in-build Netrndis.inf
[RNDIS.NT.5.1]
Characteristics = 0x84 ; NCF_PHYSICAL + NCF_HAS_UI
BusType = 15
; NEVER REMOVE THE FOLLOWING REFERENCE FOR NETRNDIS.INF
include = netrndis.inf
needs = Usb_Rndis.ndi
AddReg = Rndis_AddReg_Vista

; DDInstal.Services section
[RNDIS.NT.5.1.Services]
include = netrndis.inf
needs = Usb_Rndis.ndi.Services

; Optional registry settings. You can modify as needed.
[RNDIS_AddReg_Vista]
HKR, NDI\params\VistaProperty, ParamDesc, 0, %Vista_Property%
HKR, NDI\params\VistaProperty, type, 0, “edit”
HKR, NDI\params\VistaProperty, LimitText, 0, “12”
HKR, NDI\params\VistaProperty, UpperCase, 0, “1”
HKR, NDI\params\VistaProperty, default, 0, " "
HKR, NDI\params\VistaProperty, optional, 0, “1”

; No sys copyfiles - the sys files are already in-build
; (part of the operating system).

; Modify these strings for your device as needed.
[Strings]
Microsoft = “Microsoft Corporation”
RndisDevice = “Remote NDIS based Device”
Vista_Property = “Optional Vista Property”

=====================================================

I have used the INF template that comes with MSDN with product id and vendor
id changed to match the device in use. I hope someone would be able to
explain to me what is going wrong or atleast give suggestions on how to
debug this problem.

Thanks,
Jinesh.

On Thu, Jun 19, 2008 at 10:01 AM, Martin O’Brien
wrote:

> Jinesh:
>
> This is probably the most common variation on the most common problem faced
> by developer’s new to Windows drivers - device manager code 10 device
> installation failure. I don’t think that I’ve read the kd you site, but at
> least it’s honest - code 10 is totally meaningless, but then again so are
> most of the others as well, and there also isn’t much documentation that’s
> of any help either. The good news is that there is a definite place to start
> - look in ‘\Windows\setupapi.log.’ The bad news is that it’s an MSFT
> diagnostic tool that’s quite a bit worse than some of their other offerings
> and makes Event Viewer look like Cliff Notes - you have to data mine to find
> out what happened. So, what I would check for first before subjecting
> yourself to that are the following:
>
> 1. Does anything you’re installing need the KMDF coinstallers?
> Unfortunately, I have no idea if either of the two drivers you mentioned
> use it or not. This is probably the most common device installation issue.
>
> 2. I very much doubt that this is the case, but are you running on XP x64,
> also known as server 20003 SP1? If so, then a code 10 also commonly means
> that the driver image is not signed. I don’t see how this could be it given
> the drivers that you’re using, but these are the two easy ones to eliminate.
>
> 3. No you have to dig in setupapi.log. I would find the portion relevant
> to one install that failed, and post it along with your inf and someone will
> be able to help you, but this is where I have to bail out, because I avoid
> this stuff like the plague, and I don’t what to do beyond these ideas. If
> you do start to read setupapi.log, my advice would be to ignore for the
> moment everything it says about driver ranking, and really trying to figure
> out whether a driver loaded or not by following the steps, because it’s
> confusing at as hell and it won’t tell why it’s not working really, and just
> look for big ticket items like ‘coinstaller,’ at least until someone who
> knows more than I looks at your INF, because this is very likely to just be
> a case of the system not finding a file, and failing with strange error
> messages.
>
>
> As it’s only around 09:30 PST, I would say that there is a very good chance
> that Doron is out there somewhere, but if not, tomorrow someone will be
> along.
>
> Good luck,
>
> mm
>
>
> Jinesh K J wrote:
>
>>
>> Hi All,
>>
>> I am new to this list so please forgive me if I am asking some dump
>> questions. I have developed a small firmware on an embedded hardware to
>> implement the USB RNDIS ethernet device. While the device works perfectly
>> fine with a Linux-based host, when it comes to Windows(I have tried with
>> WinXP SP1 and SP2), I get the following error while loading the driver -
>> ‘The device can not start (Code 10)’ .
>>
>> The link http://support.microsoft.com/kb/943104/ mentions that ‘Code 10’
>> is given when the Device Manager does not really know what is going wrong.
>> Since the driver that I am trying to load(which is usb8023x.sys that
>> internally uses the dll rndismpx.sys as well) is part of standard windows
>> installation I am pretty sure its not an issue with the driver.
>>
>> In such a situation, how can I possibly find out why the driver is failing
>> to start ? Is there any debug messages that I am supposed to capture ?
>>
>> Thanks in advance,
>> Jinesh.
>>
>>
> —
> NTDEV is sponsored by OSR
>
> For our schedule of WDF, WDM, debugging and other seminars visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR Online at
> http://www.osronline.com/page.cfm?name=ListServer
>

Jinesh:

I’m sorry, but I just don’t know enough the misery that is driver installation to help you any further here.

Good luck,

mm

Jinesh K J wrote:

Thank you Brien,

As you had sugguested I am posting the relevant portions of setapi.log
below :

==================================================================

[2008/06/16 17:39:48 716.6 Driver Install]

#-019 Searching for hardware ID(s):
usb\vid_046b&pid_ff10&rev_0100&mi_01,usb\vid_046b&pid_ff10&mi_01
#-018 Searching for compatible ID(s):
usb\class_0a&subclass_00&prot_00,usb\class_0a&subclass_00,usb\class_0a

#-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.
[2008/06/16 17:39:50 1284.5]
#-199 Executing “C:\WINDOWS\system32\rundll32.exe” with command line:
rundll32.exe newdev.dll,ClientSideInstall

\.\pipe\PNP_Device_Install_Pipe_0.{33327C64-A80C-4FC2-AFDC-82AA6B24E22D}
#I060 Set selected driver.
#-019 Searching for hardware ID(s):
usb\vid_046b&pid_ff10&rev_0100&mi_01,usb\vid_046b&pid_ff10&mi_01

#-018 Searching for compatible ID(s):
usb\class_0a&subclass_00&prot_00,usb\class_0a&subclass_00,usb\class_0a
#-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.
[2008/06/16 17:46:19 1144.1092]
#-198 Command line processed: “C:\WINDOWS\system32\mmc.exe” /s

C:\WINDOWS\system32\compmgmt.msc
#I060 Set selected driver.
#-019 Searching for hardware ID(s):
usb\vid_046b&pid_ff10&rev_0100&mi_00,usb\vid_046b&pid_ff10&mi_00
#-018 Searching for compatible ID(s):

usb\class_02&subclass_02&prot_ff,usb\class_02&subclass_02,usb\class_02
#-019 Searching for hardware ID(s):
usb\vid_046b&pid_ff10&rev_0100&mi_00,usb\vid_046b&pid_ff10&mi_00
#-018 Searching for compatible ID(s):

usb\class_02&subclass_02&prot_ff,usb\class_02&subclass_02,usb\class_02
#-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_046b&pid_ff10&rev_0100&mi_00,usb\vid_046b&pid_ff10&mi_00

#-018 Searching for compatible ID(s):
usb\class_02&subclass_02&prot_ff,usb\class_02&subclass_02,usb\class_02
#-019 Searching for hardware ID(s):
usb\vid_046b&pid_ff10&rev_0100&mi_00,usb\vid_046b&pid_ff10&mi_00

#-018 Searching for compatible ID(s):
usb\class_02&subclass_02&prot_ff,usb\class_02&subclass_02,usb\class_02
#-019 Searching for hardware ID(s):
usb\vid_046b&pid_ff10&rev_0100&mi_00,usb\vid_046b&pid_ff10&mi_00

#-018 Searching for compatible ID(s):
usb\class_02&subclass_02&prot_ff,usb\class_02&subclass_02,usb\class_02
#-019 Searching for hardware ID(s):
usb\vid_046b&pid_ff10&rev_0100&mi_00,usb\vid_046b&pid_ff10&mi_00

#-018 Searching for compatible ID(s):
usb\class_02&subclass_02&prot_ff,usb\class_02&subclass_02,usb\class_02
#-124 Doing copy-only install of
“USB\VID_046B&PID_FF10&MI_00\7&1192E9&1&0000”.

#E366 An unsigned or incorrectly signed file “c:\documents and
settings\jinesh\desktop\share\new.inf” for driver “Remote NDIS based
Device” will be installed (Policy=Warn, user said ok). Error 0xe000022f:

The third-party INF does not contain digital signature information.
#W187 Install failed, attempting to restore original files.
#E362 An unsigned or incorrectly signed file “c:\documents and
settings\jinesh\desktop\share\new.inf” for driver "Remote NDIS based

Device" will be installed (Policy=Warn). Error 0xe000022f: The third-party
INF does not contain digital signature information.
#-166 Device install function: DIF_REGISTER_COINSTALLERS.
#I056 Coinstallers registered.

#-166 Device install function: DIF_INSTALLINTERFACES.
#-011 Installing section [RNDIS.NT.5.1.Interfaces] from “c:\documents and
settings\jinesh\desktop\share\new.inf”.
#I054 Interfaces installed.
#-166 Device install function: DIF_INSTALLDEVICE.

#I123 Doing full install of “USB\VID_046B&PID_FF10&MI_00\7&1192E9&1&0000”.
#E362 An unsigned or incorrectly signed file “c:\documents and
settings\jinesh\desktop\share\new.inf” for driver "Remote NDIS based

Device" will be installed (Policy=Warn). Error 0xe000022f: The third-party
INF does not contain digital signature information.
#I121 Device install of “USB\VID_046B&PID_FF10&MI_00\7&1192E9&1&0000”

finished successfully.
[2008/06/16 17:47:11 1144.1130]
#-198 Command line processed: “C:\WINDOWS\system32\mmc.exe” /s
C:\WINDOWS\system32\compmgmt.msc
#-166 Device install function: DIF_PROPERTYCHANGE.

#I292 Changing device properties of “ROOT\MS_PSCHEDMP\0000”.
#I306 DICS_START: Device has been started.
[2008/06/16 17:47:11 1144.1131]
#-198 Command line processed: “C:\WINDOWS\system32\mmc.exe” /s

C:\WINDOWS\system32\compmgmt.msc
#-166 Device install function: DIF_PROPERTYCHANGE.
#I292 Changing device properties of “ROOT\MS_PSCHEDMP\0001”.
#I306 DICS_START: Device has been started.
[2008/06/16 17:47:11 1144.1132]

#-198 Command line processed: “C:\WINDOWS\system32\mmc.exe” /s
C:\WINDOWS\system32\compmgmt.msc
#-166 Device install function: DIF_PROPERTYCHANGE.
#I292 Changing device properties of “ROOT\MS_PSCHEDMP\0002”.

#I306 DICS_START: Device has been started.
[2008/06/16 17:47:11 1144.1133]
#-198 Command line processed: “C:\WINDOWS\system32\mmc.exe” /s
C:\WINDOWS\system32\compmgmt.msc
#-166 Device install function: DIF_PROPERTYCHANGE.

#I292 Changing device properties of “ROOT\MS_PSCHEDMP\0003”.
#I306 DICS_START: Device has been started.
[2008/06/16 17:47:11 1144.1134]
#-198 Command line processed: “C:\WINDOWS\system32\mmc.exe” /s

C:\WINDOWS\system32\compmgmt.msc
#-166 Device install function: DIF_PROPERTYCHANGE.
#I292 Changing device properties of “ROOT\MS_PSCHEDMP\0004”.
#I306 DICS_START: Device has been started.
[2008/06/16 17:47:11 1144.1141 Driver Install]

#-019 Searching for hardware ID(s): ms_pschedmp
#-198 Command line processed: “C:\WINDOWS\system32\mmc.exe” /s
C:\WINDOWS\system32\compmgmt.msc
#I022 Found “ms_pschedmp” in C:\WINDOWS\INF\netpsa.inf; Device: "Packet

Scheduler Miniport"; Driver: “Packet Scheduler Miniport”; Provider:
“Microsoft”; Mfg: “Microsoft”; Section name: “PSchedMP.ndi”.
#I023 Actual install section: [PSchedMP.ndi]. Rank: 0x00000000. Effective

driver date: 07/01/2001.
#I063 Selected driver installs from section [PSchedMP.ndi] in
“c:\windows\inf\netpsa.inf”.
#I320 Class GUID of device remains: {4D36E972-E325-11CE-BFC1-08002BE10318}.
#I060 Set selected driver.

#I058 Selected best compatible driver.
#-166 Device install function: DIF_REGISTER_COINSTALLERS.
#I056 Coinstallers registered.
#-166 Device install function: DIF_INSTALLINTERFACES.
#-011 Installing section [PSchedMP.ndi.Interfaces] from

“c:\windows\inf\netpsa.inf”.
#I054 Interfaces installed.
#-166 Device install function: DIF_INSTALLDEVICE.
#I123 Doing full install of “ROOT\MS_PSCHEDMP\0005”.
#I121 Device install of “ROOT\MS_PSCHEDMP\0005” finished successfully.

#-166 Device install function: DIF_PROPERTYCHANGE.
#I292 Changing device properties of “ROOT\MS_PSCHEDMP\0005”.
#I306 DICS_START: Device has been started.
[2008/06/16 17:47:12 1144.1155]
#-198 Command line processed: “C:\WINDOWS\system32\mmc.exe” /s

C:\WINDOWS\system32\compmgmt.msc
#-166 Device install function: DIF_PROPERTYCHANGE.
#I292 Changing device properties of
“USB\VID_046B&PID_FF10&MI_00\7&1192E9&1&0000”.
#I163 Device not started: Device has problem: 0x0a: CM_PROB_FAILED_START.

#I307 DICS_START: Device could not be started.
[2008/06/16 17:47:27 1144.1436 Driver Install]
#-019 Searching for hardware ID(s):
usb\vid_046b&pid_ff10&rev_0100&mi_00,usb\vid_046b&pid_ff10&mi_00

#-018 Searching for compatible ID(s):
usb\class_02&subclass_02&prot_ff,usb\class_02&subclass_02,usb\class_02
#-198 Command line processed: “C:\WINDOWS\system32\mmc.exe” /s
C:\WINDOWS\system32\compmgmt.msc

#I063 Selected driver installs from section [RNDIS.NT.5.1] in
“c:\windows\inf\oem8.inf”.
#I320 Class GUID of device remains: {4D36E972-E325-11CE-BFC1-08002BE10318}.
#I060 Set selected driver.
[2008/06/16 17:47:45 1144.1439]

#-198 Command line processed: “C:\WINDOWS\system32\mmc.exe” /s
C:\WINDOWS\system32\compmgmt.msc
#I060 Set selected driver.
#-019 Searching for hardware ID(s):
usb\vid_046b&pid_ff10&rev_0100&mi_01,usb\vid_046b&pid_ff10&mi_01

#-018 Searching for compatible ID(s):
usb\class_0a&subclass_00&prot_00,usb\class_0a&subclass_00,usb\class_0a
#I393 Modified INF cache “C:\WINDOWS\inf\INFCACHE.1”.
#-019 Searching for hardware ID(s):

usb\vid_046b&pid_ff10&rev_0100&mi_01,usb\vid_046b&pid_ff10&mi_01
#-018 Searching for compatible ID(s):
usb\class_0a&subclass_00&prot_00,usb\class_0a&subclass_00,usb\class_0a
#-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_046b&pid_ff10&rev_0100&mi_01,usb\vid_046b&pid_ff10&mi_01
#-018 Searching for compatible ID(s):
usb\class_0a&subclass_00&prot_00,usb\class_0a&subclass_00,usb\class_0a

#-019 Searching for hardware ID(s):
usb\vid_046b&pid_ff10&rev_0100&mi_01,usb\vid_046b&pid_ff10&mi_01
#-018 Searching for compatible ID(s):
usb\class_0a&subclass_00&prot_00,usb\class_0a&subclass_00,usb\class_0a

#-124 Doing copy-only install of
“USB\VID_046B&PID_FF10&MI_01\7&1192E9&1&0001”.
#W334 Failed to verify catalog when scanning file queue. Error 1168:
Element not found.
#E366 An unsigned or incorrectly signed file “c:\windows\inf\oem8.inf” for

driver “Remote NDIS based Device” will be installed (Policy=Warn, user
said ok). Error 1168: Element not found.
#W187 Install failed, attempting to restore original files.
#E362 An unsigned or incorrectly signed file “c:\windows\inf\oem8.inf” for

driver “Remote NDIS based Device” will be installed (Policy=Warn). Error
1168: Element not found.
#-166 Device install function: DIF_REGISTER_COINSTALLERS.
#I056 Coinstallers registered.
#-166 Device install function: DIF_INSTALLINTERFACES.

#-011 Installing section [RNDIS.NT.5.1.Interfaces] from
“c:\windows\inf\oem8.inf”.
#I054 Interfaces installed.
#-166 Device install function: DIF_INSTALLDEVICE.
#I123 Doing full install of “USB\VID_046B&PID_FF10&MI_01\7&1192E9&1&0001”.

#I121 Device install of “USB\VID_046B&PID_FF10&MI_01\7&1192E9&1&0001”
finished successfully.
[2008/06/16 17:48:04 1144.1491 Driver Install]
#-019 Searching for hardware ID(s): ms_pschedmp

#-198 Command line processed: “C:\WINDOWS\system32\mmc.exe” /s
C:\WINDOWS\system32\compmgmt.msc
#I022 Found “ms_pschedmp” in C:\WINDOWS\INF\netpsa.inf; Device: “Packet
Scheduler Miniport”; Driver: “Packet Scheduler Miniport”; Provider:

“Microsoft”; Mfg: “Microsoft”; Section name: “PSchedMP.ndi”.
#I023 Actual install section: [PSchedMP.ndi]. Rank: 0x00000000. Effective
driver date: 07/01/2001.
#I063 Selected driver installs from section [PSchedMP.ndi] in

“c:\windows\inf\netpsa.inf”.
#I320 Class GUID of device remains: {4D36E972-E325-11CE-BFC1-08002BE10318}.
#I060 Set selected driver.
#I058 Selected best compatible driver.
#-166 Device install function: DIF_REGISTER_COINSTALLERS.

#I056 Coinstallers registered.
#-166 Device install function: DIF_INSTALLINTERFACES.
#-011 Installing section [PSchedMP.ndi.Interfaces] from
“c:\windows\inf\netpsa.inf”.
#I054 Interfaces installed.

#-166 Device install function: DIF_INSTALLDEVICE.
#I123 Doing full install of “ROOT\MS_PSCHEDMP\0006”.
#I121 Device install of “ROOT\MS_PSCHEDMP\0006” finished successfully.
#-166 Device install function: DIF_PROPERTYCHANGE.

#I292 Changing device properties of “ROOT\MS_PSCHEDMP\0006”.
#I306 DICS_START: Device has been started.
[2008/06/16 17:48:04 1144.1478]
#-198 Command line processed: “C:\WINDOWS\system32\mmc.exe” /s

C:\WINDOWS\system32\compmgmt.msc
#-166 Device install function: DIF_PROPERTYCHANGE.
#I292 Changing device properties of “ROOT\MS_PSCHEDMP\0000”.
#I306 DICS_START: Device has been started.
[2008/06/16 17:48:04 1144.1479]

#-198 Command line processed: “C:\WINDOWS\system32\mmc.exe” /s
C:\WINDOWS\system32\compmgmt.msc
#-166 Device install function: DIF_PROPERTYCHANGE.
#I292 Changing device properties of “ROOT\MS_PSCHEDMP\0001”.

#I306 DICS_START: Device has been started.
[2008/06/16 17:48:04 1144.1480]
#-198 Command line processed: “C:\WINDOWS\system32\mmc.exe” /s
C:\WINDOWS\system32\compmgmt.msc
#-166 Device install function: DIF_PROPERTYCHANGE.

#I292 Changing device properties of “ROOT\MS_PSCHEDMP\0002”.
#I306 DICS_START: Device has been started.
[2008/06/16 17:48:04 1144.1481]
#-198 Command line processed: “C:\WINDOWS\system32\mmc.exe” /s

C:\WINDOWS\system32\compmgmt.msc
#-166 Device install function: DIF_PROPERTYCHANGE.
#I292 Changing device properties of “ROOT\MS_PSCHEDMP\0003”.
#I306 DICS_START: Device has been started.
[2008/06/16 17:48:04 1144.1482]

#-198 Command line processed: “C:\WINDOWS\system32\mmc.exe” /s
C:\WINDOWS\system32\compmgmt.msc
#-166 Device install function: DIF_PROPERTYCHANGE.
#I292 Changing device properties of “ROOT\MS_PSCHEDMP\0004”.

#I306 DICS_START: Device has been started.
[2008/06/16 17:48:04 1144.1483]
#-198 Command line processed: “C:\WINDOWS\system32\mmc.exe” /s
C:\WINDOWS\system32\compmgmt.msc
#-166 Device install function: DIF_PROPERTYCHANGE.

#I292 Changing device properties of “ROOT\MS_PSCHEDMP\0005”.
#I306 DICS_START: Device has been started.
[2008/06/16 17:48:05 1144.1507]
#-198 Command line processed: “C:\WINDOWS\system32\mmc.exe” /s

C:\WINDOWS\system32\compmgmt.msc
#-166 Device install function: DIF_PROPERTYCHANGE.
#I292 Changing device properties of
“USB\VID_046B&PID_FF10&MI_01\7&1192E9&1&0001”.
#I163 Device not started: Device has problem: 0x0a: CM_PROB_FAILED_START.

#I307 DICS_START: Device could not be started.
[2008/06/16 17:48:06 1144.1736]
#-198 Command line processed: “C:\WINDOWS\system32\mmc.exe” /s
C:\WINDOWS\system32\compmgmt.msc
#I292 Changing device properties of

“USB\VID_046B&PID_FF10&MI_00\7&1192E9&1&0000”.
[2008/06/16 17:48:13 1144.2011]
#-198 Command line processed: “C:\WINDOWS\system32\mmc.exe” /s
C:\WINDOWS\system32\compmgmt.msc

#I292 Changing device properties of
“USB\VID_046B&PID_FF10&MI_00\7&1192E9&1&0000”.
#I292 Changing device properties of
“USB\VID_046B&PID_FF10&MI_00\7&1192E9&1&0000”.

#I163 Device not started: Device has problem: 0x0a: CM_PROB_FAILED_START.
#I294 DICS_ENABLE DICS_FLAG_GLOBAL: Enabling device globally.

==================================================================

BTW, I do not know much about ‘KMDF coinstallers’ . I need to
investigate further on that matter- but I think no extra work than a
proper INF file is needed to load these microsoft windows drivers. Given
below is the INF file that I am using :

=================================================

;
; Remote NDIS template device setup file
; Copyright (c) Microsoft Corporation
;
; This is the template for the INF installation script
; for the RNDIS-over-USB host driver.
; This INF works for Windows XP SP2, Windows XP x64,
; Windows Server 2003 SP1 x86, x64, and ia64, and
; Windows Vista x86 and x64.
; This INF will work with Windows XP, Windows XP SP1,
; and Windows 2003 after applying specific hotfixes.

[Version]
Signature = “$Windows NT$”
Class = Net
ClassGUID = {4d36e972-e325-11ce-bfc1-08002be10318}
Provider = %Microsoft%
DriverVer =06/21/2006,6.0.6000.16384
;CatalogFile = device.cat

[Manufacturer]
%Microsoft% = RndisDevices,NTx86,NTamd64,NTia64

; Decoration for x86 architecture
[RndisDevices.NTx86]
%RndisDevice% = RNDIS.NT.5.1, USB\VID_046b&PID_ff10

; Decoration for x64 architecture
[RndisDevices.NTamd64]
%RndisDevice% = RNDIS.NT.5.1, USB\VID_046b&PID_ff10

; Decoration for ia64 architecture
[RndisDevices.NTia64]
%RndisDevice% = RNDIS.NT.5.1, USB\VID_046b&PID_ff10

;@@@ This is the common setting for setup
[ControlFlags]
ExcludeFromSelect=*

; DDInstall section
; References the in-build Netrndis.inf
[RNDIS.NT.5.1]
Characteristics = 0x84 ; NCF_PHYSICAL + NCF_HAS_UI
BusType = 15
; NEVER REMOVE THE FOLLOWING REFERENCE FOR NETRNDIS.INF
include = netrndis.inf
needs = Usb_Rndis.ndi
AddReg = Rndis_AddReg_Vista

; DDInstal.Services section
[RNDIS.NT.5.1.Services]
include = netrndis.inf
needs = Usb_Rndis.ndi.Services

; Optional registry settings. You can modify as needed.
[RNDIS_AddReg_Vista]
HKR, NDI\params\VistaProperty, ParamDesc, 0, %Vista_Property%
HKR, NDI\params\VistaProperty, type, 0, “edit”
HKR, NDI\params\VistaProperty, LimitText, 0, “12”
HKR, NDI\params\VistaProperty, UpperCase, 0, “1”
HKR, NDI\params\VistaProperty, default, 0, " "
HKR, NDI\params\VistaProperty, optional, 0, “1”

; No sys copyfiles - the sys files are already in-build
; (part of the operating system).

; Modify these strings for your device as needed.
[Strings]
Microsoft = “Microsoft Corporation”
RndisDevice = “Remote NDIS based Device”
Vista_Property = “Optional Vista Property”

=====================================================

I have used the INF template that comes with MSDN with product id and
vendor id changed to match the device in use. I hope someone would be
able to explain to me what is going wrong or atleast give suggestions on
how to debug this problem.

Thanks,
Jinesh.

On Thu, Jun 19, 2008 at 10:01 AM, Martin O’Brien
> wrote:
>
> Jinesh:
>
> This is probably the most common variation on the most common
> problem faced by developer’s new to Windows drivers - device manager
> code 10 device installation failure. I don’t think that I’ve read
> the kd you site, but at least it’s honest - code 10 is totally
> meaningless, but then again so are most of the others as well, and
> there also isn’t much documentation that’s of any help either. The
> good news is that there is a definite place to start - look in
> ‘\Windows\setupapi.log.’ The bad news is that it’s an MSFT
> diagnostic tool that’s quite a bit worse than some of their other
> offerings and makes Event Viewer look like Cliff Notes - you have to
> data mine to find out what happened. So, what I would check for
> first before subjecting yourself to that are the following:
>
> 1. Does anything you’re installing need the KMDF coinstallers?
> Unfortunately, I have no idea if either of the two drivers you
> mentioned use it or not. This is probably the most common device
> installation issue.
>
> 2. I very much doubt that this is the case, but are you running on
> XP x64, also known as server 20003 SP1? If so, then a code 10 also
> commonly means that the driver image is not signed. I don’t see how
> this could be it given the drivers that you’re using, but these are
> the two easy ones to eliminate.
>
> 3. No you have to dig in setupapi.log. I would find the portion
> relevant to one install that failed, and post it along with your inf
> and someone will be able to help you, but this is where I have to
> bail out, because I avoid this stuff like the plague, and I don’t
> what to do beyond these ideas. If you do start to read
> setupapi.log, my advice would be to ignore for the moment everything
> it says about driver ranking, and really trying to figure out
> whether a driver loaded or not by following the steps, because it’s
> confusing at as hell and it won’t tell why it’s not working really,
> and just look for big ticket items like ‘coinstaller,’ at least
> until someone who knows more than I looks at your INF, because this
> is very likely to just be a case of the system not finding a file,
> and failing with strange error messages.
>
>
> As it’s only around 09:30 PST, I would say that there is a very good
> chance that Doron is out there somewhere, but if not, tomorrow
> someone will be along.
>
> Good luck,
>
> mm
>
>
> Jinesh K J wrote:
>
>
> Hi All,
>
> I am new to this list so please forgive me if I am asking some
> dump questions. I have developed a small firmware on an embedded
> hardware to implement the USB RNDIS ethernet device. While the
> device works perfectly fine with a Linux-based host, when it
> comes to Windows(I have tried with WinXP SP1 and SP2), I get the
> following error while loading the driver - ‘The device can not
> start (Code 10)’ .
>
> The link http://support.microsoft.com/kb/943104/ mentions that
> ‘Code 10’ is given when the Device Manager does not really know
> what is going wrong. Since the driver that I am trying to
> load(which is usb8023x.sys that internally uses the dll
> rndismpx.sys as well) is part of standard windows installation I
> am pretty sure its not an issue with the driver.
>
> In such a situation, how can I possibly find out why the driver
> is failing to start ? Is there any debug messages that I am
> supposed to capture ?
>
> Thanks in advance,
> Jinesh.
>
>
> —
> NTDEV is sponsored by OSR
>
> For our schedule of WDF, WDM, debugging and other seminars visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR Online at
> http://www.osronline.com/page.cfm?name=ListServer
>
>

Code 10 means that the driver tried to start, but failed initialization of it’s device.
( see in your log: Device has problem: 0x0a: CM_PROB_FAILED_START. )

In your case, this may be because of some property that RNDIS driver expects, or some OID that you fail.

–PA

“Jinesh K J” wrote in message news:xxxxx@ntdev…

Hi All,

I am new to this list so please forgive me if I am asking some dump questions. I have developed a small firmware on an embedded hardware to implement the USB RNDIS ethernet device. While the device works perfectly fine with a Linux-based host, when it comes to Windows(I have tried with WinXP SP1 and SP2), I get the following error while loading the driver - ‘The device can not start (Code 10)’ .

The link http://support.microsoft.com/kb/943104/ mentions that ‘Code 10’ is given when the Device Manager does not really know what is going wrong. Since the driver that I am trying to load(which is usb8023x.sys that internally uses the dll rndismpx.sys as well) is part of standard windows installation I am pretty sure its not an issue with the driver.

In such a situation, how can I possibly find out why the driver is failing to start ? Is there any debug messages that I am supposed to capture ?

Thanks in advance,
Jinesh.

It seems the problem was with an already used vendor/product id since I had
used this combination for another HID device. Now, with a different
vendor/product id I am able to properly load the driver and the device works
fine.

But, now I am facing another problem. The above solution worked as long as
the device was an Ethernet-only device. Once I made it
composite(devclass/devsubclass id as 0/0) the device manager does no longer
see the two interfaces(CDC master and slave) together. In stead when I plug
in the device I see two devices being handled by the windows usb composite
driver instead of just one.

I have another embedded hardware that runs linux gadget firmware(composite
device with ethernet and storage) and it seem to be working fine.

How do I find out what I am missing in the device descriptors of my device
that cause windows to see my device differently ?

Jinesh.

On Fri, Jun 20, 2008 at 9:28 PM, Pavel A. wrote:

> Code 10 means that the driver tried to start, but failed initialization
> of it’s device.
> ( see in your log: Device has problem: 0x0a: CM_PROB_FAILED_START. )
> In your case, this may be because of some property that RNDIS driver
> expects, or some OID that you fail.
>
> --PA
>
> “Jinesh K J” wrote in message
> news:xxxxx@ntdev…
>
> Hi All,
>
> I am new to this list so please forgive me if I am asking some dump
> questions. I have developed a small firmware on an embedded hardware to
> implement the USB RNDIS ethernet device. While the device works perfectly
> fine with a Linux-based host, when it comes to Windows(I have tried with
> WinXP SP1 and SP2), I get the following error while loading the driver -
> ‘The device can not start (Code 10)’ .
>
> The link http://support.microsoft.com/kb/943104/ mentions that ‘Code 10’
> is given when the Device Manager does not really know what is going wrong.
> Since the driver that I am trying to load(which is usb8023x.sys that
> internally uses the dll rndismpx.sys as well) is part of standard windows
> installation I am pretty sure its not an issue with the driver.
>
> In such a situation, how can I possibly find out why the driver is failing
> to start ? Is there any debug messages that I am supposed to capture ?
>
> Thanks in advance,
> Jinesh.
>
>

Jinesh K J wrote:

It seems the problem was with an already used vendor/product id since
I had used this combination for another HID device. Now, with a
different vendor/product id I am able to properly load the driver and
the device works fine.

But, now I am facing another problem. The above solution worked as
long as the device was an Ethernet-only device. Once I made it
composite(devclass/devsubclass id as 0/0) the device manager does no
longer see the two interfaces(CDC master and slave) together. In stead
when I plug in the device I see two devices being handled by the
windows usb composite driver instead of just one.

Why don’t you show us the descriptors and we’ll see what looks unusual?
A CDC control interface should be 02/02/FF, a CDC data interface should
be 0A/00/00.


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.