Skip to content

Windows searches for a smart card driver at every insertion

When Windows has no driver for a smart card, it searches for one each time the card is inserted. This usually means the vendor did not ship its CSP or minidriver as an .inf package.

Windows searching for smart card driver
Windows searching for a driver on insertion
No driver found
Driver not found: shown after each insertion

There are two fixes:

Option A: turn off Smart Card Plug and Play
With Group Policy
  1. Press Win+R, type gpedit.msc, press Enter
  2. Go to Computer Configuration → Administrative Templates → Windows Components → Smart Card
  3. Double-click Turn on Smart Card Plug and Play service
  4. Select Disabled, click OK
With the registry

Import this .reg file:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\ScPnP]
"EnableScPnP"=dword:00000000

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Policies\Microsoft\Windows\ScPnP]
"EnableScPnP"=dword:00000000
Option B: install a fake driver
Step 1: find the historical bytes

In Device Manager, open the smart card that shows the error, then Properties → Details → Hardware IDs. Look for the entry that starts with SCFILTER\.

Historical bytes in hardware ID
Hardware ID in Device Manager
Historical bytes in certutil -scinfo
Same bytes visible in certutil -scinfo (here: Astrid in ASCII)
Step 2: create the .inf file

Save the following as an .inf file, and replace SCFILTER\CID_51FF0800 with the card's hardware ID:

;
; FabrikamVendor Smartcard Minidriver — x86 and x64
;
[Version]
Signature="$Windows NT$"
Class=SmartCard
ClassGuid={990A2BD7-E738-46c7-B26F-1CF8FB9F1391}
Provider=%ProviderName%
DriverVer=04/03/2013,1.0.0.0

[Manufacturer]
%ProviderName%=Minidriver,NTamd64,NTamd64.6.1,NTx86,NTx86.6.1

[Minidriver.NTamd64]
%CardDeviceName%=Minidriver64_Install,SCFILTER\CID_51FF0800
[Minidriver.NTx86]
%CardDeviceName%=Minidriver32_Install,SCFILTER\CID_51FF0800
[Minidriver.NTamd64.6.1]
%CardDeviceName%=Minidriver64_61_Install,SCFILTER\CID_51FF0800
[Minidriver.NTx86.6.1]
%CardDeviceName%=Minidriver32_61_Install,SCFILTER\CID_51FF0800

[Minidriver64_61_Install.NT]
Include=umpass.inf
Needs=UmPass

[Minidriver32_61_Install.NT]
AddReg=AddRegDefault
Include=umpass.inf
Needs=UmPass

[Minidriver64_61_Install.NT.Services]
Include=umpass.inf
Needs=UmPass.Services

[Minidriver32_61_Install.NT.Services]
Include=umpass.inf
Needs=UmPass.Services

[Minidriver64_61_Install.NT.HW]
Include=umpass.inf
Needs=UmPass.HW

[Minidriver64_61_Install.NT.CoInstallers]
Include=umpass.inf
Needs=UmPass.CoInstallers

[Minidriver64_61_Install.NT.Interfaces]
Include=umpass.inf
Needs=UmPass.Interfaces

[Minidriver32_61_Install.NT.HW]
Include=umpass.inf
Needs=UmPass.HW

[Minidriver32_61_Install.NT.CoInstallers]
Include=umpass.inf
Needs=UmPass.CoInstallers

[Minidriver32_61_Install.NT.Interfaces]
Include=umpass.inf
Needs=UmPass.Interfaces

[Strings]
ProviderName    = "FabrikamVendor"
CardDeviceName  = "FabrikamVendor Minidriver for Smart Card"
Step 3: install

In Device Manager, right-click the smart card → Update driver → Browse my computer → select the folder that holds the .inf file. If Windows finds no compatible driver, the SCFILTER string is wrong.

Debugging: if the install fails, check the .inf syntax with InfVerif (part of the WDK).