Driver Matching – PNP Enumeration
(Last updated on August 2, 2018)
During an OS Installation, we want to make sure the computer gets the right drivers for that OS, no more or less. Right?
We have changed how that is done in Deploy 4.5 compared to earlier versions.
The behavior in Deploy 4.2 and earlier versions is like this.
During the OS installation, the client is matching it’s Manufacturer and Model plus OS to your driver store. It will then use a Plug and Play enumeration to identify which drivers from that store should be downloaded, based on the hardware in the client.
So Specops Deploy will basically read the inf file for each driver and see if the PNP ID of that driver matches any hardware in the computer. If it does, the driver is copied locally.
Windows will then in the next step use that local driver store to install the drivers.
This have worked quite well, but there has been one major and one minor flaw with this setup.
The minor flaw is that it could take quite a while to enumerate all the drivers if you had a huge store of drivers. Where you basically put all drivers in Common.
While the major flaw is that if some hardware were not present during the setup. For example the WLAN card was turned off on a Laptop. That hardware would not be enumerated and get a driver.
So when the user later on turned on the WLAN card, he would need to manually get a driver.
And the same for bluetooth, keyboard, mouse etc etc.
As mentioned earlier, this has now been altered.
What’s new in Deploy 4.5 is that we skip the PNP Enumeration. When the client has identified the Manufacturer and Model plus OS, it will download all matching drivers to the local driver store.
Which of course means, that when you later enable some hardware it will have the drivers in the store and Windows can automatically install it for the enduser. And the installation will be a bit faster. Since it’s most of the time faster to copy all the drivers locally, than do the enumeration.
The drawback is that the driver store will probably be a bit bigger since you may have some unnecessary drivers in there, especially if you download a huge driver pack from Dell or HP that will contain drivers for 2-4 different video cards, hdd controllers etc etc that’s not present in your clients.
I would like to know how you handle new versions of drivers.
Do you want to update all your client with the latest drivers, to keep them in sync. For example, when the OS Deploy Driver Store is updated, the drivers on all clients should be updated too?
Or do you prefer to live by, if it ain’t broken don’t fix it. So you don’t want to keep the drivers on your clients up to date until they are reinstalled next time?
I’ve thought about making a solution to auto update the drivers on the already installed clients with the drivers in OS Deploy, but not sure if anyone would be using it… 🙂
Please give me your thoughts on the subject.