Hi,
I just download Arduino software, it comes with CDC drivers for their Uno board.
My own CDC is a real pain to install, I have to click update driver, browse, then let be pick from a list, select Ports… and have disk, point to my INF. Only then do I get prompted about installing unsafe software drivers with red icon. If I click browse and point to my INF folder, it fails to find it.
However, Arduino’s INF was picked up by Update driver, Browse to INF folder, click OK, then warning.
Why do I have to do so much more to get essentially the same usbser.sys microsoft driver working? Is it a signing issue. They dont have cat files, nor does mine and I never installed their certificate on my machine, assuming they had one.
Regards,
dc
GalacticDan wrote:
My own CDC is a real pain to install, I have to click
update driver, browse, then let be pick from a list,
select Ports… and have disk, point to my INF. Only
then do I get prompted about installing unsafe software
drivers with red icon. If I click browse and point to my
INF folder, it fails to find it.
What does the setup API log say? Sounds like your INF might not even have the right hardware ID in it.
It’s a little gobbledygook to me but here it is…
WHEN NO DRIVER INSTALLED, DEVICE PLUGGED IN:
>> [Device Install (Hardware initiated) - USB\VID_15A2&PID_0106&MI_00\7&395e3e21&3&0000]
>> Section start 2013/03/05 16:45:07.273
ump: Creating Install Process: DrvInst.exe 16:45:07.274
ndv: Retrieving device info…
ndv: Setting device parameters…
ndv: Searching just Driver Store…
dvi: {Build Driver List} 16:45:07.439
dvi: Searching for hardware ID(s):
dvi: usb\vid_15a2&pid_0106&rev_0100&mi_00
dvi: usb\vid_15a2&pid_0106&mi_00
dvi: Searching for compatible ID(s):
dvi: usb\class_02&subclass_02&prot_01
dvi: usb\class_02&subclass_02
dvi: usb\class_02
cpy: Policy is set to make all digital signatures equal.
dvi: Enumerating INFs from path list ‘C:\Windows\INF’
inf: Searched 0 potential matches in published INF directory
inf: Searched 40 INFs in directory: ‘C:\Windows\INF’
dvi: {Build Driver List - exit(0x00000000)} 16:45:07.530
ndv: Selecting best match from just Driver Store…
dvi: {DIF_SELECTBESTCOMPATDRV} 16:45:07.530
dvi: No class installer for ‘XXX Data Port’
dvi: No CoInstallers found
dvi: Default installer: Enter 16:45:07.531
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.
dvi: {DIF_SELECTBESTCOMPATDRV - exit(0xe0000228)} 16:45:07.532
ndv: Searching Windows Update for drivers… 16:45:07.543
ndv: Acquired WU search serialization mutex. 16:45:07.543
???WU search serialization mutex. 16:45:13.244
ndv: No driver found on Windows Update. 16:45:13.244
ndv: Searching Driver Store and Device Path…
dvi: {Build Driver List} 16:45:13.245
dvi: Searching for hardware ID(s):
dvi: usb\vid_15a2&pid_0106&rev_0100&mi_00
dvi: usb\vid_15a2&pid_0106&mi_00
dvi: Searching for compatible ID(s):
dvi: usb\class_02&subclass_02&prot_01
dvi: usb\class_02&subclass_02
dvi: usb\class_02
cpy: Policy is set to make all digital signatures equal.
dvi: Enumerating INFs from path list ‘C:\Windows\inf’
inf: Searched 0 potential matches in published INF directory
inf: Searched 40 INFs in directory: ‘C:\Windows\inf’
dvi: {Build Driver List - exit(0x00000000)} 16:45:13.351
ndv: Selecting best match from Driver Store (including Device Path)…
dvi: {DIF_SELECTBESTCOMPATDRV} 16:45:13.351
dvi: No class installer for ‘XXX Data Port’
dvi: Default installer: Enter 16:45:13.351
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.
dvi: {DIF_SELECTBESTCOMPATDRV - exit(0xe0000228)} 16:45:13.352
ndv: {Core Device Install} 16:45:13.353
! ndv: Installing NULL driver!
dvi: Set selected driver complete.
dvi: {DIF_ALLOW_INSTALL} 16:45:13.355
dvi: No class installer for ‘XXX Data Port’
dvi: Default installer: Enter 16:45:13.355
dvi: Default installer: Exit
dvi: {DIF_ALLOW_INSTALL - exit(0xe000020e)} 16:45:13.355
dvi: {DIF_INSTALLDEVICE} 16:45:13.356
dvi: No class installer for ‘XXX Data Port’
dvi: Default installer: Enter 16:45:13.356
! dvi: Installing NULL driver!
dvi: Writing common driver property settings.
dvi: {Restarting Devices} 16:45:13.363
dvi: Restart: USB\VID_15A2&PID_0106&MI_00\7&395E3E21&3&0000
dvi: Restart complete.
dvi: {Restarting Devices exit} 16:45:13.447
dvi: Default installer: Exit
dvi: {DIF_INSTALLDEVICE - exit(0x00000000)} 16:45:13.448
ndv: Device install status=0xe0000203
ndv: Performing device install final cleanup…
! ndv: Queueing up error report since device installation failed…
ndv: {Core Device Install - exit(0xe0000203)} 16:45:13.449
ump: Server install process exited with code 0xe0000203 16:45:13.453
<<< Section end 2013/03/05 16:45:13.461
<<< [Exit status: FAILURE(0xe0000203)]
SELECTING UPDATE DRIVER FROM DEVICE MANAGER:
==> /cygdrive/c/Windows/inf/setupapi.app.log <==
>>> [DIF_ADDPROPERTYPAGE_ADVANCED - USB\VID_15A2&PID_0106&MI_00\7&395E3E21&3&0000]
>>> Section start 2013/03/05 16:46:00.903
cmd: “C:\Windows\system32\mmc.exe” C:\Windows\system32\devmgmt.msc
<<< Section end 2013/03/05 16:46:00.903
<<< [Exit status: SUCCESS (DI_DO_DEFAULT)]
>>> [DIF_TROUBLESHOOTER - USB\VID_15A2&PID_0106&MI_00\7&395E3E21&3&0000]
>>> Section start 2013/03/05 16:46:13.360
cmd: “C:\Windows\system32\mmc.exe” C:\Windows\system32\devmgmt.msc
<<< Section end 2013/03/05 16:46:13.360
<<< [Exit status: SUCCESS (DI_DO_DEFAULT)]
SELECTING BROWSE TO FOLDER:
==> /cygdrive/c/Windows/inf/setupapi.dev.log <==
>>> [Device Install (DiShowUpdateDevice) - USB\VID_15A2&PID_0106&MI_00\7&395E3E21&3&0000]
>>> Section start 2013/03/05 16:46:13.360
cmd: “C:\Windows\system32\mmc.exe” C:\Windows\system32\devmgmt.msc
dvi: {DIF_UPDATEDRIVER_UI} 16:46:13.361
dvi: No class installer for ‘XXX Data Port’
dvi: Default installer: Enter 16:46:13.361
dvi: Default installer: Exit
dvi: {DIF_UPDATEDRIVER_UI - exit(0xe000020e)} 16:46:13.361
ndv: {Update Driver Software Wizard for USB\VID_15A2&PID_0106&MI_00\7&395E3E21&3&0000}
???G??z??
==> /cygdrive/c/Windows/inf/setupapi.app.log <==
>>> [Build Driver List - USB\VID_15A2&PID_0106&MI_00\7&395E3E21&3&0000]
>>> Section start 2013/03/05 16:46:23.399
cmd: “C:\Windows\system32\mmc.exe” C:\Windows\system32\devmgmt.msc
cpy: Policy is set to make all digital signatures equal.
<<< Section end 2013/03/05 16:46:23.401
<<< [Exit status: SUCCESS]
>>> [Build Driver List - USB\VID_15A2&PID_0106&MI_00\7&395E3E21&3&0000]
>>> Section start 2013/03/05 16:46:23.405
cmd: “C:\Windows\system32\mmc.exe” C:\Windows\system32\devmgmt.msc
cpy: Policy is set to make all digital signatures equal.
<<< Section end 2013/03/05 16:46:23.472
<<< [Exit status: SUCCESS]
>>> [DIF_SELECTBESTCOMPATDRV - USB\VID_15A2&PID_0106&MI_00\7&395E3E21&3&0000]
>>> Section start 2013/03/05 16:46:23.472
cmd: “C:\Windows\system32\mmc.exe” C:\Windows\system32\devmgmt.msc
! dvi: Selecting driver failed(0xe0000228)
! dvi: Default installer: failed!
! dvi: Error 0xe0000228: There are no compatible drivers for this device.
<<< Section end 2013/03/05 16:46:23.473
<<< [Exit status: FAILURE(0xe0000228)]
xxxxx@hotmail.com wrote:
It’s a little gobbledygook to me but here it is…
WHEN NO DRIVER INSTALLED, DEVICE PLUGGED IN:
>>> [Device Install (Hardware initiated) - USB\VID_15A2&PID_0106&MI_00\7&395e3e21&3&0000]
>>> Section start 2013/03/05 16:45:07.273
ump: Creating Install Process: DrvInst.exe 16:45:07.274
ndv: Retrieving device info…
ndv: Setting device parameters…
ndv: Searching just Driver Store…
dvi: {Build Driver List} 16:45:07.439
dvi: Searching for hardware ID(s):
dvi: usb\vid_15a2&pid_0106&rev_0100&mi_00
dvi: usb\vid_15a2&pid_0106&mi_00
dvi: Searching for compatible ID(s):
dvi: usb\class_02&subclass_02&prot_01
dvi: usb\class_02&subclass_02
dvi: usb\class_02
OK, so those are the IDs it is searching for. What are the IDs in your
INF file?
–
Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.
Tim,
OK, thanks and you are right. I think there was a typo from the HID INF,
HID\VID_15A2&PID_0106&MI_00
now renamed to
USB\VID_15A2&PID_0106&MI_00
Seems to find now easier than before - great.
Regards,
dc
Hey chaps,
While we on about it, looking at the logs, I can see more about why my HID driver is such a pain to install. I checked the VID/PID, they match what is being searched but it seems to be a signing problem this time.
Is this something I can do here since I’m reusing their sys driver file just like in the CDC?
I’ve got the signtool.exe with the WDF installed. I do not really want to distribute a certificate though.
>> [Build Driver List - HID\VID_15A2&PID_0106&MI_02\8&431884C&0&0000]
>> Section start 2013/03/05 17:21:42.642
cmd: “C:\Windows\system32\mmc.exe” C:\Windows\system32\devmgmt.msc
cpy: Policy is set to make all digital signatures equal.
! sig: Verifying file against specific (valid) catalog failed! (0x00000057)
! sig: Error 87: The parameter is incorrect.
! sig: Verifying file against specific Authenticode™ catalog failed! (0x80092003)
! sig: Error 0x80092003: An error occurred while reading or writing to a file.
<<< Section end 2013/03/05 17:21:42.722
<<< [Exit status: SUCCESS]
Again, it’ll load, just you gotta jump through hoops to get it to.
Regards,
dc
xxxxx@hotmail.com wrote:
While we on about it, looking at the logs, I can see more about why my HID driver is such a pain to install. I checked the VID/PID, they match what is being searched but it seems to be a signing problem this time.
Is this something I can do here since I’m reusing their sys driver file just like in the CDC?
I’ve got the signtool.exe with the WDF installed. I do not really want to distribute a certificate though.
There are TWO signing requirements in Windows. First is the KMCS
requirement, which applies only to 64-bit systems. It will prevent your
driver from loading at all unless either the SYS file or the containing
CAT file is signed using a certificate from an approved vendor. This
check is done every time the driver loads. You have this covered, since
your SYS file is signed.
The other requirement is the PnP check, which is done on all systems,
but only when the driver is installed. This is the check that produces
the dreaded “unsigned driver!” dialog. If you sign your CAT file with a
valid code-signing certificate, that dialog changes to a much less
obnoxious “do you trust this publisher?” dialog.
If you fail the PnP check, the user can still OK it. If you fail the
KMCS check, there is no bypass (short of suppressing the check during
reboot or attaching a debugger).
You don’t every ship your certificate. To anyone. Ever.
–
Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.
Tim Roberts wrote:
There are TWO signing requirements in Windows. First is the KMCS
requirement, which applies only to 64-bit systems. It will prevent your
driver from loading at all unless either the SYS file or the containing
CAT file is signed using a certificate from an approved vendor. This
check is done every time the driver loads. You have this covered, since
your SYS file is signed.
The other requirement is the PnP check, which is done on all systems,
but only when the driver is installed. This is the check that produces
the dreaded “unsigned driver!” dialog. If you sign your CAT file with a
valid code-signing certificate, that dialog changes to a much less
obnoxious “do you trust this publisher?” dialog.
If you fail the PnP check, the user can still OK it. If you fail the
KMCS check, there is no bypass (short of suppressing the check during
reboot or attaching a debugger).
I found out the hard way that the PnP check has become stricter with the
introduction of Windows 8: Unless a signed CAT file is provided, the
driver package cannot not be installed at all.
Hmmm… are you sure? I know that in Windows 8, a CAT file is required for the first time. I did not think that CAT file was required to be SIGNED however.
Peter
OSR
xxxxx@osr.com wrote:
Hmmm… are you sure? I know that in Windows 8, a CAT file is required for the first time. I did not think that CAT file was required to be SIGNED however.
That may very well be the actual rule, my apologies.
When my driver package, consisting of SYS and INF only, was rejected by
Win8, I provided a signed CAT file, found that it solved the problem,
and never bothered to look for an explanation on MSDN.
Wilhelm Nöker wrote:
xxxxx@osr.com wrote:
> [quote]
> Unless a signed CAT file is provided, the
> driver package cannot not be installed at all
> [/quote]
>
> Hmmm… are you sure? I know that in Windows 8, a CAT file is required for the first time. I did not think that CAT file was required to be SIGNED however.
That may very well be the actual rule, my apologies.
When my driver package, consisting of SYS and INF only, was rejected by
Win8, I provided a signed CAT file, found that it solved the problem,
and never bothered to look for an explanation on MSDN.
That’s exactly what happened to me. My two normal build procedures
create “no CAT file” and “signed CAT file”, so when I had the problem, I
cut-and-pasted from the other set. I never even tried the intermediate
step. I suppose one of us should set up a test driver package with a
CAT file that is not signed, and see if Windows 8 accepts it, so we have
the answer once and for all. My Win 8 partition got reformatted, so it
might be a while…
–
Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.