none
Trouble installing custom inf in Windows 10 Professional. Windows overrides it with OEM driver RRS feed

  • Question

  • I have made a signed USB Serial inf file for a custom device and created an installer that successfully installs the driver to Windows 7 (32/64), Windows 8.1 (64) but not Windows 10. This applies to the default installation (right-click, install) directly on the file, using Device Manager and using PNPUTIL. The device driver successfully installs but the OEM usbser driver is used instead. After clicking "Update Driver" and selecting my driver in Device Manager, Windows prompts me with "The best driver software is already installed for your device". If I use Device Manager and choose "Have Disk" I can successfully get around the issue with Windows 10 enforcing their own driver. This doesn't get me any closer to having a successful inf file and installer though.

    My process for default installation:

    1. Unplug the device from the USB port
    2. Load a snap shot of freshly-installed Windows 10 Professional
    3. Right click, install on the .inf file
    4. Plug in the device
    5. Look at Device Manager and see that the standard USB Serial Device driver made by Microsoft is used instead of my driver

    If I then uninstall it and repeat steps 3-5 it sometimes allows my custom driver to stick.

    I've been told that my driver installs on Windows 10 Enterprise, which confuses matters further.

    Question: What am I doing wrong?

    My inf file:

    ;************************************************************
    ; Windows USB CDC ACM Setup File
    ; Copyright (c) 2000 Microsoft Corporation
    
    ; Version v1.1, updated 17 April 2013
    
    
    [Strings]
    DriverPackageDisplayName="Rinstrum USB Serial Drivers"
    ManufacturerName="Rinstrum"
    ServiceName="USB RS-232 Emulation Driver"
    linux.gserial="Rinstrum USB Gadget Serial"
    MFGNAME="Rinstrum"
    
    [DefaultInstall]
    CopyINF=c500.inf
    
    [Version]
    DriverVer=03/02/2017,1.0.0.0
    Signature=$Windows NT$
    Class=Ports
    ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318}
    Provider=%MFGNAME%
    CatalogFile=c500.cat
    DriverPackageDisplayName=%DriverPackageDisplayName%
    PnpLockdown=1
    
    [Manufacturer]
    %MFGNAME%=Models,NTx86,NTamd64,NTarm
    
    [DestinationDirs]
    DefaultDestDir=12
    FakeModemCopyFileSection=12
    
    [Models.NTx86]
    %linux.gserial%=DriverInstall, USB\VID_1FC9&PID_816A, USB\VID_1FC9&PID_816A&MI_00
    
    [Models.NTamd64]
    %linux.gserial%=DriverInstall, USB\VID_1FC9&PID_816A, USB\VID_1FC9&PID_816A&MI_00
    
    [Models.NTarm]
    %linux.gserial%=DriverInstall, USB\VID_1FC9&PID_816A, USB\VID_1FC9&PID_816A&MI_00
    
    [DriverInstall]
    Include=mdmcpq.inf
    CopyFiles=FakeModemCopyFileSection
    AddReg=DriverAddReg
    
    [DriverAddReg]
    HKR,,DevLoader,,*ntkern
    HKR,,NTMPDriver,,%DRIVERFILENAME%.sys
    HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider"
    
    [DriverInstall.Services]
    Include=mdmcpq.inf
    AddService=usbser,0x2,DriverService
    
    [DriverService]
    DisplayName=%ServiceName%
    ServiceType=1
    StartType=3
    ErrorControl=1
    ServiceBinary=%12%\usbser.sys
    LoadOrderGroup=Base
    Friday, February 3, 2017 6:57 AM

All replies

  • Setupapi.dev.log will tell you why your inf was out ranked

    d -- This posting is provided "AS IS" with no warranties, and confers no rights.

    Friday, February 3, 2017 5:31 PM
  • >>>  [Device Install (DiInstallDriver) - C:\Users\R&D\Desktop\c500.inf]
    >>>  Section start 2017/02/03 17:17:58.321      
    cmd: "C:\Windows\System32\InfDefaultInstall.exe" "C:\Users\R&D\Desktop\c500.inf"     
    ndv: Flags: 0x00000000     
    ndv: INF path: C:\Users\R&D\Desktop\c500.inf     
    inf: {SetupCopyOEMInf: C:\Users\R&D\Desktop\c500.inf} 17:17:58.337     
    inf:      Copy style: 0x00000000 !   
    inf:      Driver package is already in driver store     
    inf:      Driver Store Path: C:\Windows\System32\DriverStore\FileRepository\c500.inf_amd64_4fee793fb11027ac\c500.inf    inf:      Published Inf Path: C:\Windows\INF\oem4.inf     
    inf: {SetupCopyOEMInf exit (0x00000000)} 17:17:58.368
    <<<  Section end 2017/02/03 17:17:58.399
    <<<  [Exit status: SUCCESS]


    Saturday, February 4, 2017 1:28 AM
  • After reading my log one would assume that I need to programmatically remove the OEM4.inf driver from C:Windows\INF before installing my driver. If this is correct is there a risk that this will break other devices that rely on the standard USB-Serial driver? Or is OEM4 literally only attached to the particular VID and PID of my hardware?
    Saturday, February 4, 2017 1:58 AM
  • You may have to pass MS Win10 certification process to make the "pre-install" to work.


    leo

    Saturday, February 4, 2017 3:58 AM
  • Can you please elaborate on this? I have used a driver signing tool provided to my company by another manufacturer who we're buying some PIDs from. Is there an additional step we need to take in this process for Windows 10 only before it will override the OEM driver?

    • Edited by LukeAllison Saturday, February 4, 2017 4:01 AM
    Saturday, February 4, 2017 4:00 AM
  • Update: from setupapi.dev.log

         sig:                     Success: File is signed in Authenticode(tm) catalog.
         sig:                     Error 0xe0000242: The publisher of an Authenticode(tm) signed catalog has not yet been established as trusted.

    Saturday, February 4, 2017 1:20 PM