Understanding the MDT Lite Touch Driver Repository

Earlier this week I was asked to help out with an MDT Lite Touch Driver Repository that was missing most of its drivers. After some research it turned out that the drivers.xml had been truncated, something that can happen if multiple admin are working with drivers at the same time (MDT uses a last-writer-wins approach). Here is how you can troubleshoot that:

Importing Drivers to MDT Lite Touch

When importing drivers to MDT Lite Touch, there are two XML files being updated. The DriverGroups.xml file which contains a list of your virtual folder structure inside Out-of-Box Drivers, together with the GUID of each driver that is linked to each folder, and the Drivers.xml file which contains details about each driver.

Here is an example of a DriverGroups.xml file with a single folder (Windows 10 x64 22H2\HP ZBook Firefly 14 G7 Mobile Workstation) having a few drivers in it.

<group guid="{dc62b51a-5e1d-4c17-a2dd-a1ec41a4d3e4}" enable="True">
    <Name>Windows 10 x64 22H2\HP ZBook Firefly 14 G7 Mobile Workstation</Name>
    <Comments></Comments>
    <CreatedTime>2/26/2023 6:14:54 AM</CreatedTime>
    <CreatedBy>ROGUE-512\Administrator</CreatedBy>
    <LastModifiedTime>2/26/2023 6:19:07 AM</LastModifiedTime>
    <LastModifiedBy>ROGUE-512\Administrator</LastModifiedBy>
    <Member>{b078d747-b5db-4001-a635-9bd80873894d}</Member>
    <Member>{749ff0d6-dca2-4a6b-a94e-370905fdfd40}</Member>
    <Member>{29bc1c4f-b185-4f69-bdad-fc5b8df29914}</Member>
    <Member>{d57a0415-f9b3-47b9-871a-5b99d8f134d5}</Member>
    <Member>{764b0654-edb8-4da0-927c-b669e1a6eccc}</Member>
    <Member>{b2fe3a04-22bc-46db-b897-b3d2f368e7c9}</Member>
    <Member>{e5c35597-e318-4c67-b54d-4169e1c6bb6d}</Member>
    <Member>{652ce022-bee1-4d31-86e0-f6b9a5641c57}</Member>
    <Member>{21cfea77-f7b5-4316-af40-fdc98c8db296}</Member>
    <Member>{041e0755-1e23-45f9-b3fd-f5db0c6c2e13}</Member>
    <Member>{25033f5b-0a37-4816-beb3-5b9066c58095}</Member>
</group>
Drivers listed in the DriverGroups.xml file

If we take a look at the corresponding Drivers.xml file, you find the following info for one of the drivers. Please note the 749ff0d6-dca2-4a6b-a94e-370905fdfd40 guid that is also showing in the DriverGroups.xml file.

<driver guid="{749ff0d6-dca2-4a6b-a94e-370905fdfd40}" enable="True">
    <Name>Intel Corporation Extension HdBusExt.inf 27.20.100.8853</Name>
    <CreatedTime>2/26/2023 6:16:45 AM</CreatedTime>
    <CreatedBy>ROGUE-512\Administrator</CreatedBy>
    <LastModifiedTime>2/26/2023 6:16:45 AM</LastModifiedTime>
    <LastModifiedBy>ROGUE-512\Administrator</LastModifiedBy>
    <Manufacturer>Intel Corporation</Manufacturer>
    <Version>27.20.100.8853</Version>
    <Date>10/14/2020</Date>
    <Source>.\Out-of-box Drivers\SoftwareComponent\cui_dch_27.20.100.8853_3246FC52CEAE4B6C3A2F7F64ABC3DFBBB8B495ABE4415326C6769AFAF26592D3\HdBusExt.inf</Source>
    <Class>Extension</Class>
    <Hash>3246FC52CEAE4B6C3A2F7F64ABC3DFBBB8B495ABE4415326C6769AFAF26592D3</Hash>
    <WHQLSigned>True</WHQLSigned>
    <Platform>x64</Platform>
    <OSVersion>10.0...17704</OSVersion>
    <OSVersion>10.0...18362</OSVersion>
    <PNPId>PCI\VEN_8086&DEV_9D71</PNPId>
    <PNPId>PCI\VEN_8086&DEV_A171</PNPId>
    <PNPId>PCI\VEN_8086&DEV_A2F0</PNPId>
    <PNPId>PCI\VEN_8086&DEV_9DC8</PNPId>
    <PNPId>PCI\VEN_8086&DEV_A348</PNPId>
    <PNPId>PCI\VEN_8086&DEV_A0C8</PNPId>
    <PNPId>PCI\VEN_8086&DEV_43C8</PNPId>
    <PNPId>PCI\VEN_8086&DEV_98C8</PNPId>
</driver>
Details for one of the drivers in Drivers.xml

Using PowerShell to Troubleshoot

If you want to make sure the DriverGroups.xml file is matching the Drivers.xml file, you can use some basic XML parsing in PowerShell. Here are some examplesÖ

# Using PowerShell to Parse XML Attributes with Select-Xml
$Drivers = "C:\DeploymentShare\Control\Drivers.xml"
Select-Xml -Path $Drivers -XPath '/drivers/driver' | ForEach-Object { $_.Node.guid }
(Select-Xml -Path $Drivers -XPath '/drivers/driver' | ForEach-Object { $_.Node.guid }).count

# Using PowerShell to Parse XML Attributes with Select-Xml
$DriverGroups = "C:\DeploymentShare\Control\DriverGroups.xml"
Select-Xml -Path $DriverGroups -XPath '/groups/group/Member' | ForEach-Object { $_.Node.InnerXML }
(Select-Xml -Path $DriverGroups -XPath '/groups/group/Member' | ForEach-Object { $_.Node.InnerXML }).count

Restoring from Backup

If the XML files for drivers gets in a mismatch, simply restore the from your backup. In the very event you don't have a daily backup of your deployment share (which you should have), please note that you may be lucky and find a working copy of your drivers*xml files in the <DeploymentShare>\Backup\Automatic folder.

Example of the <DeploymentShare>\Backup\Automatic folder
About the author

Johan Arwidmark

5 2 votes
Article Rating
Subscribe
Notify of
guest
6 Comments
Newest
Oldest Most Voted
Kevin
Kevin
6 months ago

I came across this article when trying to figure this scenario out regarding drivers….

We currently have 12 different hardware models and have a great layout that detects model and injects drivers.
But the issue here is that the offline media we create is north of 40GB.
I'm wondering if before we stick the usb drive can we grab the drivers we want for a model and dump them in the out of box driver folder?

Will this method work? It seems from this article it would not?
If not, any recommendations you have for me?
Thank you in advance.

Kevin
Kevin
6 months ago

I see two solutions you pointed out.
First one would be possible maybe doing a offline media for HP models and one for Dell models since we only have 2 manufacturers.
The second one is intriguing and have not tried a zip or wim file method.
Can you elaborate on that or point me in the right direction?
Thank you Johan

Jay
Jay
8 months ago

I know this is an old article, but I recently have been trying to see if I can take a "working" copy of the drivers.xml, drivergroups.xml and manually copy them into an existing Control folder, then also copy all the drivers from a "working" Out-Of-Box Drivers folder to an existing Out-Of-Box Drivers folder. This is to say from an existing Offline Media share to a different Offline Media share. Since these "source files" are all coming from the same Offline Media share, the internals of the files should all match. However, when I try to image a device with it,… Read more »


>