Skip to main content
Matrix42 Self-Service Help Center

Provision of operating system drivers

The following chapter first describes the concept of operating system driver integration. It then describes how to obtain the necessary information using the Matrix42 PreOS package HardwareInfo and how to integrate the information and drivers using the Matrix42 Driver Wizard.

Concept

Before we move on to deploying the operating system drivers, we would like to discuss how hardware detection works and how a driver package is assigned based on it.

The Matrix42 PreOS DriverIntegration package is responsible for integrating the operating system drivers. The package has the option to decide which driver archive or driver directory should be integrated into the operating system based on two variants.

  • Direct specification of the driver archive or driver directory via the DriverIntegration.DriverArchiveFileName computer variable.
  • Automatic determination of the driver archive or driver directory via the Drivers.json control file based on the manufacturer name, model name and operating system type (Windows 7, Windows 10, Windows 11, Windows Server 2016, Windows Server 2019 or Windows Server 2022).

The control file can be found on the Empirum server at:

\\%EmpirumServer%\Configurator$\Packages\Matrix42\OsPackages\Drivers\Drivers.json

The assignment takes place via the manufacturer name, the model name of a hardware and the assigned operating system source. Exactly this information is summarized in the Drivers.json file.
DrvAssist_005.png

The names for manufacturer and model are not arbitrary, but are as they are read by WinPE at runtime through the Windows Management Instrumentation (WMI) classes (gwmi win32_computersystem). This information can also be obtained by running the Matrix42 PreOS package HardwareInfo.

 

With the DriverIntegration PreOS package as of version 2.13, the model name in the Drivers.json file no longer has to completely match the model name read out by WMI. It is sufficient if the model name read out by WMI starts with the model name in the Drivers.json file..

Example:
The WMI model name is VMware7,1
The model name in the Drivers.json file is VMware
Thus, the driver specified under the model name VMware is used, even if the name does not match completely.

If there are multiple model names in the Drivers.json file that match the WMI read model name, the model with the closest match in name is selected.

Example:
The WMI model name is VMware7,1
VMware7 and VMware are present as model names in the Drivers.json file.
Thus, the driver specified under the model name VMware7 is used because it has a closer match to the model names read.

Some manufacturers offer driver packages for several models. Whereby the model names differ only by different name endings. With this adaptation, the entries in the Drivers.json file can be combined. It is no longer necessary to create an entry for each individual model variant.

 

Determine the Vendor and model

In order to be able to carry out the automated assignment of driver packages logically, you need - as already mentioned - the manufacturer and model designation as determined by the Windows Management Instrumentation.

For this purpose, we provide you with the Matrix42 PreOS package HardwareInfo, with which you can determine all the necessary information, so that you can then enter it into the control file with the help of the driver wizard.

  1. Assign a working WinPE boot configuration and the Matrix42 PreOS package HardwareInfo to the client.
  2. Activate the client (software and PXE activation).
  3. Then start the client via PXE Boot.
  4. After successful execution of the package, you will find a file in the form "debug_drivers_<client>.<domain>.json" in the directory
    \\%EmpirumServer%\EmpInst$\Wizard\OS\Auto\WinPeStatus\<domain_Computername>.
  5. The content can now be imported into the Drivers.json control file using the Driver Wizard. Starting from the chapter Create a new Drivers.json file the wizard and the import of the information is described in more detail.

 

Driver assistant via EMC

The Driver Wizard is a tool that can be used to customize the Drivers.json control file. The control file is used by the Matrix42 PreOS package DriverIntegration to determine the driver archive or driver directory to be integrated.

Requirements

  • Matrix42 Client Management (v21.0.2 or newer).
  • WinPE Support 1.8.10 or newer
  • PreOS package DriverIntegration 2.17 or newer:
    • To use the driver wizard, you need the PreOS package DriverIntegration 2.17 (or higher). From this version on, the JSON format created by the driver wizard is supported. Older versions of DriverIntegration do not support this JSON format.

Current functionality

The current functionality of the driver wizard:

  • Driver support for Windows 7, Windows 10, Windows 11, Windows Server 2016, Windows Server 2019, Windows Server 2022 operating systems
  • Validation of the entries in the Drivers.json control file
  • Import of driver entries created by the HardwareInfo PreOS package
  • Import of driver entries via the previous version of the Drivers.ini control file
  • Automatic migration of the previously used Drivers.ini file, to the new Drivers.json file, if it does not exist yet
  • Import of driver files or driver directories
    • Reference to already imported driver files or driver directories via the import
  • Deleting previously imported driver files or driver directories
  • Exporting already imported driver files or driver directories in the format readable by the SDK
  • Importing a driver control file (replace or extend)
  • Exporting the driver configuration (Drivers.json) in SDK readable format, or as a ZIP file (UUX Import Format)
  • Manually adjust the control file
    • Add, delete and customize vendor entries
    • Add, delete and adjust model entries
    • Customize driver references

Limitations

The following limitations exist when using the Driver Wizard:

  • The created control file is only compatible with DriverIntegration package version 2.17 or higher.

Procedure after a new installation

After installing Empirum Unified Endpoint Management (v21.0.2 or higher), there are no entries in the database yet and thus no Drivers.json file in the directory 
".\Empirum\Configurator\Packages\Matrix42\OsPackages\Drivers\".

Create a new Drivers.json file

  1. Start the Matrix42 Management Console (EMC), go to Configuration > Driver Assistant in the navigation bar.
    You will be asked whether you want to import the driver control file Drivers.json or Drivers.ini.
    DrvAssist_010.png
  2. Since there is no driver control file yet, confirm the query with "No".
    DrvAssist_015.png


If an output file of the Matrix42 PreOS package HardwareInfo already exists, this file can now be imported via the Model Import button.
For more information, please refer to chapter "Import HardwareInfo package output files".

  1. Click the WinPE_Drv_Add.gif button to add a new manufacturer.
  2. Click the WinPE_Drv_Add.gif button to the right of the manufacturer to add a model.
  3. Click the Driver Import button and then click Import driver folder or Import driver file.
    In this example, Import driver file is used.
  4. Select the appropriate file or folder and click Open.
  5. Confirm the message that the driver was imported successfully with OK.
    The selected driver is copied to the directory shown in the image and an entry is made in the database (DriverObject table).
  6. Now the just imported driver has to be assigned to an operating system - in this example Windows 10.
  7. Click on the Windows 10 drop-down button and select the driver you just imported.
  8. Enter (optionally) a description for the model.
    Your configuration will now look like this:
    DrvAssist_020.png
  9. With the help of the Save button, the changes must be saved. The confirmation dialog opens.
  10. Confirm this dialog with Yes and the following dialog that the Driver.json file was successfully written with OK.
    Saving is done via the Backend Task Queue extension.

Procedure after an update installation

  1. Start the Matrix42 Management Console (EMC), go to Configuration > Driver Assistant in the navigation bar.
    You will be asked whether you want to import the driver control file Drivers.json or Drivers.ini.
    DrvAssist_110.png
  2. Click Yes.
  3. Confirm the message that the import of the Drivers.json file was successful with OK.
    Manufacturer, model and the assignment of the drivers are taken over and displayed in the driver wizard.
    DrvAssist_115.png
  4. With the help of the Save button, the changes must be saved. The confirmation dialog opens.
  5. Confirm this dialog with Yes and the following dialog that the Driver.json file was successfully written with OK.
    Saving is done via the Backend Task Queue extension.
  6. Afterwards you have the possibility to integrate further manufacturers, models and drivers - including allocation.
    See also chapter "Create a new Drivers.json file" from point 3 and "Import HardwareInfo package output files".

 

Back-end tasks

Back-end Task Queue

The current jobs in the Backend Task Queue can be checked using the following dialog in the Matrix42 Management Console (EMC):

  • Matrix42 Management Console > Management > Administration > Menu > Info > Back-end Tasks

The queue entries named PE (= Preinstallation Environment) are the jobs of interest for creating the PXE image.
The list shows which jobs are currently being processed by the queue.
BackEndTaskQueue.png

The BTQH service must run under a user who has administrative rights.

Back-end Task Log

In the Back-end Task log tab, the status of the jobs that have already been processed can be viewed.
The Result column shows the success of the order. In case of failure, the message column contains detailed information about the error.
BackEndTaskLog.png


Detailed information can also be obtained from the backend task queue log file - located at: 
C:\ProgramData\Matrix42\Logs\BackendTaskQueueHost64\BackendTaskQueueHost64.log

 

The interface of the driver assistant

Starting from an empty configuration, the top entry is the driver control file Drivers.json and its file path.
Since the driver control file does not yet contain any entries, no subordinate manufacture or model entries are displayed.
DrvAssist_210.png

  • WinPE_Drv_Location.gif Location
    Location of the driver control file Drivers.json.
    • WinPE_Drv_Add.gif This button allows you to add a new manufacturer.
    • WinPE_Drv_Export.gif This button can be used to export the driver configuration (Drivers.json). There are two possibilities:
      • Export the driver configuration in ZIP format:
        The export is done as a ZIP file (This format can be imported via DWP).
      • Export the driver configuration in SDK format:
        The export is done as a folder structure.
  • WinPE_Drv_Nodes_Collapse.gif Collapse all nodes
    By clicking on it, the complete list is reduced to the entries of the manufacturers.
  • WinPE_Drv_Nodes_Expand.gif Expand all nodes
    By clicking on it, all entries in the list will be expanded.
  •  Filter
    By clicking on it, filter options for all entries in the list are displayed at the bottom of the window.
  • Model Import
    There are three ways to import the model or the manufacturer and the model:
    • Import Hardware Model
      The driver control file is expanded by importing the output file of the Matrix42 PreOS package HardwareInfo.
      See Import HardwareInfo package output files
    • Import driver control file (Replace)
      After selecting this option, the selected driver control file Drivers.json will be imported completely and all existing entries will be replaced.
      The associated driver files and folders must then be imported using the Driver Import button.
    • Import driver control file (Extend)
      After selecting this option, only the entries that do not already exist will be applied.
      The associated driver files and folders must then be imported using the Driver Import button.
  • Driver Import
    There are two ways to integrate drivers here:
    • Import driver folder - All files/folders starting from the selected folder will be imported.
    • Import driver file     - Either a *.zip or a *.cab file can be imported.
  • Save
    A confirmation prompt is displayed; if this is confirmed with Yes, saving (database, hard disk) is performed via the Backend Task Queue extension.
     

Import HardwareInfo package output files

The easiest and safest way to extend the driver control file is to import the output file of the Matrix42 PreOS package HardwareInfo, which automatically creates the HardwareInfo output file in the .\EmpInst$\Wizard\OS\WinPeStatus\<Domäne_Computername> directory. The chapter Determine the Vendor and Model describes in more detail how to create the output file using the HardwareInfo package.
This output file contains the information about the manufacturer and the model of the client used.

  1. Start the import via the Model Import button.
    The file browser opens in the directory .\EmpInst$\Wizard\OS\WinPeStatus with the help of which the output file of the HardwareInfo package can be opened.
    DrvAssist_215.png
    The output file of the HardwareInfo package is located in the directory of the client.


You can also use the search function of the file browser here and search for the client name. The output file of the HardwareInfo package always contains the client name and the domain of the client.

  1. After the output file has been selected, the import can be started via Open. The wizard then gives a feedback which manufacturer and which model was imported.
    DrvAssist_220.png
  2. After confirming with OK, the new entry is inserted into the control file.
    DrvAssist_225.png
    An entry was created for the detected manufacturer (vendor) VMware, Inc. A subordinate entry was created for the detected model VMware7.1.
    There are currently no driver files, or driver directories assigned to the model entry for Windows 7, Windows 10, Windows 11, Windows Server 2016, Windows Server 2019, and Windows Server 2022 operating systems. For this reason, the entry is displayed with a light gray background and marked with an DrvAssist_Attention.gif exclamation mark. This indicates that the entry is not yet valid, because no driver for an operating system is specified yet, or a specified driver is not available on the Empirum share.

Conflict situations during import

When importing output from a HardwareInfo package, it is possible that an attempt is made to import models that already exist in the driver control file.
If the model information is identical to existing information, the following message is displayed indicating that no changes are necessary.
DrvAssist_230.png

Import driver file / driver folder

 

Most manufacturers now offer so-called SCCM driver packages. These driver packages usually contain all drivers that have been released by the manufacturer for installation as a driver installation file.
This may or may not include all device drivers for the hardware model. Drivers that contain an additional software component are often not included in such packages. In this case, it is a good idea to distribute these as separate software packages on the client. As a rule, the scope of the drivers in the SCCM package can be found in the manufacturer's documentation; in most cases, the drivers that are not included are also explicitly listed.

Matrix42 WinPE based OS Deployment currently supports both unpacked driver directories and compressed archives of type .cab or .zip.

  1. To assign a driver to the model entry, you can enter a file or directory name directly in the field for the respective operating system. In that case, you must ensure that the corresponding file or directory exists in the directory of the Drivers.json file.
    You can also click on the Driver Import button to select a driver file or driver directory that will be entered into the database and copied to the Empirum Share.
  2. Click Driver Import, and then click Import driver folder or Import driver file (in this example, a driver file is imported).
    DrvAssist_240.png
    The file browser opens, with the help of which the driver archive can now be selected.
  3. Select the driver archive you want to import.
    DrvAssist_245.png
  4. If the selection is confirmed with Open, the selected driver file is copied to the Empirum share and entered into the database.
    DrvAssist_250.png
  5. Confirm the successful import of the driver into the database and onto the Empirum Share with OK.
  6. Click the drop-down arrow for the operating system for which the driver was imported and select the driver you just imported.
    DrvAssist_255.png
    The driver is now assigned to the Windows 10 operating system, the warning notice is now gone, because the model entry is now valid (at least one driver that is also present on the Empirum Share is assigned).
    DrvAssist_260.png
  7. Click the Save button. The confirmation dialog opens.
    DrvAssist_265.png
  8. By confirming the message with Yes, the changes are saved in the control file on the Empirum server.
    DrvAssist_270.png
  9. Confirm the successful save operation with OK, this will take you back to the driver wizard view.
     

Export driver file / driver folder (SDK compliant)

If a driver is to be integrated into a cloud environment, for example, you have the option of exporting this driver via the Matrix42 Management Console > Configuration > Driver Assistant. The driver is saved in the target directory in a format that can be imported by the SDK.

  1. Click on the drop-down arrow for an operating system (Windows 10 in the example), there can also be another operating system in the list.
    DrvAssist_280.png
  2. In the drop-down box - to the right of the driver you want to export - click the Export Driver WinPE_Drv_Export.gif icon.
    DrvAssist_285.png
  3. Use the Browse for Folder window to select a destination folder for the driver export and click OK.
    DrvAssist_290.png
  4. Confirm the message about the successful export of the driver with OK.
    The path to the exported driver is also displayed in the message.
     

References to already imported driver files or directories

Using the import function, you can also create references to already imported driver files or driver directory.

To do this, simply select a file or directory from the Drivers directory while importing the driver file or directory. The driver wizard automatically detects that the file or directory to be imported comes from the Drivers directory.

In this case, the file or directory is not imported again. Only the correct path information is taken over into the driver entry.
The following note is displayed:
DrvAssist_310.png
 

Expand manually

If there are no HardwareInfo package outputs, the driver control file can also be expanded manually. The manufacturer name and model name of a computer are necessary for this.

New vendor entry

With the help of the WinPE_Drv_Add.gif button behind the control file entry a new vendor entry can be created.
DrvAssist_410.png

A new vendor with the default name NewVendorEntry is displayed under the structure. The manufacturer entry does not yet contain any model entries.
DrvAssist_415.png

The vendor name can now be manually adjusted and extended with model entries. In this example, the vendor Dell Inc. is entered.
DrvAssist_420.png
 

New model entry

Using the WinPE_Drv_Add.gif button behind the manufacturer entry, a new model entry can be created for this vendor.
DrvAssist_425.png

A new model entry with the default name NewModelName is displayed under the vendor.
DrvAssist_430.png

The model name can now be adjusted manually and a driver can be assigned to the entry. In this case, the model name Precision 5520 was specified. The previously imported driver archive DELL_5520_W10.zip was assigned to Windows 10 and the driver archive DELL_5520_S19.zip was assigned to Server 2019.
DrvAssist_435.png
If the configuration meets your requirements, don't forget to save it!
 

Remove entries

If vendor or model entries are no longer required, they can be removed by clicking on the WinPE_Drv_Delete.gif button behind the respective entry.
DrvAssist_440.png

When removing model or vendor entries, the assigned driver files or driver directories remain in the database and on the Empirum Share. They are not deleted in this process.

 

Delete already imported drivers

If a driver for an operating system is no longer needed, this driver can be deleted.

  1. Click on the drop-down arrow for an operating system (Windows 10 in the example), to the right of the driver you will find the icon for deleting the driver. Click on the Delete WinPE_Drv_Delete.gif icon.
    DrvAssist_445.png
    A security prompt is displayed.
    DrvAssist_450.png
  2. If you really want to delete the driver, click Yes.
    The entry is now deleted from the database and the driver file (also applies to directories) is deleted from the hard disk.
    In the driver wizard view, the entry remains, but is displayed with an exclamation mark DrvAssist_Attention.gif because the driver is no longer present.
    DrvAssist_455.png
  3. Import the new driver, assign it to the operating system and click the Save button.

 

Conflicts

When manually expanding the control file, conflicts may occur if manufacturer entries with the same name are created, or if model entries with the same name are created below a vendor. In these cases, the entries will be highlighted in orange. In addition, a warning symbol WinPE_Drv_Warning.gif is displayed at the identical entries.
DrvAssist_510.png
If conflicts are contained in the control file, the file cannot be saved. The Save button is grayed out in these cases.
 

Filtering

If the control file is expanded over time and thus gets more and more entries for different vendors and models, the view quickly becomes confusing. In order to be able to find the right entries quickly, a filtering function has been provided that can be used to filter out specific vendor, model or driver entries. 

Filtering is initially deactivated and can be displayed via the WinPE_Drv_Filter.gif icon.
DrvAssist_610.png

At the bottom of the window the filtering bar is displayed, with the help of which filtering can now be performed.
DrvAssist_615.png

It can be filtered by the following properties:

  • Verndor name
  • Model name
  • Driver name
  • Entries with warnings (e.g. driver specifications not available, or conflicts)
  • Entries with changes

The filter properties can also be combined. In the following example, only the entries that contain warnings are displayed. These are initially two entries for Dell Inc. Precision 5521 and Microsoft Virtual Machine. In addition, the display is restricted to the model that contains Virtual in its name.
DrvAssist_620.png

Switch off filtering

If you want to deactivate the filtering of the entries, you can either remove the filtering values and checkmarks, or you can close the filtering display via the WinPE_Drv_Delete.gif directly, which will also display all filtered out entries again.
DrvAssist_625.png

 

Ensure that the order of the Matrix42 PreOS packages in the depot configuration is correct. The following Matrix42 PreOS packages must be ordered relative to each other as follows:

  • DiskPartitioning
  • DiskImageDeploy
  • DriverIntegration 
  • WindowsInstallation 
  • PxeOffAndReboot 
  • LanguagePacksInstallation 
  • DomainJoin 
  • EmpirumAgentSetup

You may not use all of these packages. However, the packages you use must be in the correct order.

 

  • Was this article helpful?