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. The following describes how to get the necessary information using the Matrix42 PreOS HardwareInfo package and how to integrate the information and drivers using the Matrix42 Driver Assistant.

Concept

Before we move on to provisioning operating system drivers, we'd like to discuss how hardware discovery works in our case and the mapping of a driver package based on it.

The Matrix42 PreOS package DriverIntegration is responsible for the integration of the operating system drivers. The package offers the possibility to decide which driver archive or driver folder should be integrated into the operating system.

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

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

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

The mapping is based on the vendor name, the model name of a hardware and the assigned operating system source. Exactly this information is summarized in the drivers.json.

clipboard_eedcfaa231880041b48ab4fde0f4bb751.png

The names for vendor and model are not arbitrary.  They are specified by WinPE at runtime via the Windows Management Instrumentation (WMI) classes (gwmi win32_computersystem) and must be the same. This information can also be obtained by executing the Matrix42 PreOS package HardwareInfo.

 

With the DriverIntegration PreOS package since version 2.13 the model name in the Drivers.json does not have to match completely with the WMI read out model name. It is enough if the WMI read out model name starts with the model name in the Drivers.json.

Example:
WMI model name is VMware7,1
Model name in the Drivers.json is VMware7
This means that the driver specified at the model name VMware7 is used, even if the name does not match completely.

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

Example:
WMI model name is VMware7,1
Model names in the Drivers.json are VMware7 and VMware
This means that the driver specified at the model name VMware7 is used, because it has a better match with the WMI read out model name.

Some manufacturers offer driver packages for several models. The only difference between the model names is the different name endings. With this modification the entries in the Drivers.json can be combined. It is no longer necessary to create an entry for each individual model variant.

Determination of the vendor and the model

In order to be able to execute the automated assignment of driver packages consistently, we need - as already mentioned - the vendor and model names as determined by the Windows Management Instrumentation.

For this purpose, we provide the Matrix42 PreOS package HardwareInfo, with that you can determine all necessary information to be able to enter it into the control file by using the Matrix42 Driver Assistant.

  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. Start the client via PXE Boot afterwards.
  4. After successful execution of the package, you will find a file in the form "debug_drivers_<client>.<domain>.json" in the Mac8 or UUID directory (\\%EmpirumServer%\EmpInst$\Wizard\OS\Auto\{<Mac8>|<UUUID>}) of the given computer.
  5. The content can now be imported into the Drivers.json control file using the Matrix42 Driver Assistant. Chapter 3.3.4 Starting the Matrix42 Driver Assistant on page 15 describes the assistant and the import of the information in more detail.

Matrix42 Driver Assistant for WinPE

The Matrix42 Driver Assistant is a tool 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 folder to be integrated.

Prerequisites

  • Matrix42 Client Management (v17.0.2 or higher).
  • WinPE Support 1.4.14 or higher.
  • PreOS package DriverIntegration 2.7 or higher:
    • To use the Driver Assistant, you need the updated PreOS package DriverIntegration 2.7 (or higher). DriverIntegration 2.7 (or higher) supports the JSON format which is created by the Driver Assistant. Older versions of DriverIntegration do not support this JSON format.

Current functionality

  • The current functionality of Matrix42 Driver Assistant for WinPE
  • Support of drivers for the Operating Systems Windows 7, Window 10, Windows Server 2016, Windows Server 2019
  • Validation of the entries in the control file Drivers.json
  • Import of driver entries created by the HardwareInfo PreOS package
  • Import of driver entries via the previous version of the control file Drivers.ini
  • Automatic migration of the previously used Drivers.ini to the new Drivers.json, if it is was not already present
  • Importing driver files or directories
    • Reference to already imported driver files or directories via import
  • Manual adjustment of the control file
    • Add, delete and customize vendor entries
    • Add, delete and customize model entries
    • Customize driver assignments

Limitations

The following limitations exist when using the Matrix42 Driver Assistant for WinPE:

  • Currently the Driver Assistant can only be used on the Empirum master server.
  • The created control file is only compatible with the current DriverIntegration package version 2.7 or higher.

Starting the Matrix42 Driver Assistant

To start the Matrix42 Driver Assistant, the Matrix42WinPEDriverAssistant.exe application must be started in the Empirum\AddOns\WinPEDriverAssistant directory.

clipboard_ecbc78a36df851c3ec221ed9711fda6de.png

Make sure that the user who starts the assistant has enough permissions to open, edit, recreate and delete the Drivers.json file on the Empirum share. The user should also have the permissions to copy files and folders there.

Creating a Drivers.json file at first startup

The Matrix42 Driver Assistant automatically tries to open the driver control file Drivers.json  on the Empirum share at startup. If the driver control file does not exist, an empty driver control file will be created by confirming the following message with Yes.

clipboard_ef5fa3fba7d904a80ae4091ec7aef9e7d.png

If a driver control file has already been created manually, this message will not appear and the Matrix42 driver wizard will open directly and display the contents of the file.

Migration of Drivers.ini Configuration from Previous Versions

If driver integration was already implemented in an earlier version via the Drivers.ini file, the import function can be used to transfer the entries of the Drivers.ini file to the new JSON format.

The migration of the previously used Drivers.ini to the new Drivers.json takes place automatically at the start of the tool if no Drivers.json already existed.

clipboard_e4fdad6d548ddecadca0359d6946b1ac6.png

As soon as no DriverIntegration package with version less than 2.7 is used anymore, the old Drivers.ini file can be safely removed from the server. DriverIntergration 2.7 and later uses a Drivers.JSON to map drivers, but it is also able to manage a Drivers.INI if the migration from INI to JSON has not yet taken place.

Chapter Importing HardwareInfo package output files describes the general procedure for importing. In this case, instead of importing an output file of the HardwareInfo package, you import the Drivers.ini file which is located on the Empirum server in the following directory:

Configurator$\Packages\Matrix42\OsPackages\Drivers\Drivers.ini

In this case the driver file or directory specifications in the Drivers.ini file is always automatically assigned to the Windows 10 operating system in the new JSON format.

The Matrix42 Driver Assistant interface

After creating an empty driver control file, the assistant opens and displays the opened file.

clipboard_e778f291b6736eee90fdf6d3aad69b287.png

Because the driver control file does not contain any entries, no subordinate vendor or model entries are displayed.

Importing HardwareInfo package output files

The easiest and safest way to extend the driver control file is to import HardwareInfo PreOS package output files, which the HardwareInfo package automatically creates in the EmpInst$\Wizard\OS\Auto subdirectory of the given client. Chapter Determination of the vendor and the model describes how to generate the output file with help of the HardwareInfo package.

This file contains the information about the vendor and the model of the given client.

The import can be started via the Import button.

clipboard_ea02edf835d0ebee06c362a6709845f72.png

The file browser opens in the EmpInst$\Wizard\OS\Auto folder which can be used to open the output file of the HardwareInfo package.

clipboard_efef47d9581f4a3cdbec7468b3ddb3b67.png

The output file of the HardwareInfo package is in the subfolder of the given client. This is either the Mac8 or the GUID folder.

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

Once the output file has been found and selected, the import can be started via Open. The wizard then gives feedback about which vendor and which model was imported.

clipboard_ea3ef8a9eede85cc9deed7abe5f8455c1.png

After confirmation with OK the new entry is inserted into the control file.

clipboard_e7fa5fce5cf0ef322d75035a3fcc7f450.png

An entry was created for the recognized vendor VMware, Inc. Subordinate an entry for the recognized model VMware7,1 was created.

No driver files or driver directories are currently assigned to the operating systems Windows 7, Windows 10, Windows Server 2016 or Windows Server 2019 of the model entry.

For this reason, the entry is highlighted in light gray and marked with an exclamation mark clipboard_ee252045e58df5bc0f5014ae12e6a8ade.png. This indicates that the entry is not yet valid because there is no driver is specified, or the specified driver is not available on the Empirum share.

Conflict situations at import

When importing HardwareInfo package output, it can happen that the models to import already exist in the driver control file.
If the model values are identical to the existing values, the following message is displayed, indicating that no changes are necessary.

clipboard_ed8dddd27e81a86dcbd11f55e2d662ad1.png

If a model is imported that already exists and where the driver specification differs, the following message is displayed.

clipboard_e2f95fdd9abd99a2a210b29fb8f354633.png

Here it must be decided whether the existing driver specification is to be kept or whether the new specification is to be adopted. With Yes the changes are accepted. If you select No, the existing entries are kept.

Driver specifications for the Windows 7, Windows Server 2016 and Windows Server 2019 operating systems always remain unchanged during import. These driver specifications remain unchanged even if the new specifications are accepted.

Import driver file

To assign a driver to the model entry, you can specify either a file name or a folder name directly in the entry of the corresponding operating system.

In this case you must make sure that the folder of the Drivers.json file contains the corresponding file or folder.

You can also press the driver import clipboard_eb26d1725a8a5dfb2603c5430e2f20ad8.png button behind the corresponding operating system to select a driver file or folder to be copied to the Empirum share.

In this case the driver import button of the Windows 10 entry is selected to import a driver for Windows 10 to the model.

clipboard_eeb32eb99f2bb949f697f6e8dc9307523.png

A context menu opens, which can be used to decide whether to import a single driver file or a complete driver directory. In this case, a single Zip archive is to be imported, therefore the Import driver file... entry should be selected.

The file browser opens, which can be used to select the driver archive.

clipboard_ef3bbfe71a5d782d7442075db2309862a.png

If the selection is confirmed with Open, the selected driver file is copied to the Empirum share and the Assigned driver value of the model entry is set.

clipboard_eac819daccbd8a7c5d33b75258a50673d.png

You can now save the changes with the help of the Save button. The confirmation dialog opens.

clipboard_e8943e4b047ff215d5063ee268bae2640.png

Confirm the message with Yes, so the change will be saved in the driver control file on the Empirum server.

clipboard_ead46c01cd85a171306a61fa87095b326.png

The confirmation of the successful saving process appears, click OK and this will return you to the Driver Assistant view.

References to already imported driver files or directories

You can also use the import function to create references to already imported driver files or driver directories.

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

In this case the file or directory will not be imported again. Only the correct path specification in the driver entry is applied. The following message appears during the import:

clipboard_e5ee878886e137af3c09c9bd4bacc3a9b.png

Manual extension

If there are no HardwareInfo package outputs, the driver control file can also be extended manually. For this the vendor name and the model name of a computer are necessary.

New vendor entry

By clicking clipboard_e55f8ed2b248e8d632b667bdd8d20f7cb.png behind the driver control file entry a new manufacturer entry can be created.

clipboard_e700bf602d9861b3d3304cc907a847f09.png

A new vendor entry with the default name NewVendorEntry appears below the structure. The vendor entry does not yet contain any model entries.

clipboard_e78a2d6cb8e34ba8f59fe72e27852fb8b.png

The vendor name can now be adjusted manually and extended with model entries. In this example the manufacturer Dell Inc. will be entered.

clipboard_e207b0ebe6eb7648c784e151e9cae20fb.png

New model entry

By clicking clipboard_e55f8ed2b248e8d632b667bdd8d20f7cb.png behind the vendor entry a new model entry can be created for this vendor.

clipboard_ede3b1cf2caddb60c823a668b1b1c8d5c.png

A new model entry with the default name NewModelName appears under the vendor.

clipboard_e91b6b79144e405f9ac9e500e7d1a6d23.png

The model name can now be adjusted manually, and a driver can be assigned to the entry or imported. In this case the model name was Latitude 5491 and all operating systems were assigned the driver archive LAT5491.zip.

clipboard_e1afce8a08596a2185b424a9bb5367af6.png

Removing Entries

If vendors, or model entries are no longer needed, they can be removed by clicking on the icon clipboard_ec62adbeccb1f0ab85f3c20289e382b23.png after the desired entry.

clipboard_e2f67e700c8db185829a5e73a319c3988.png

Conflicts

When manually extending the driver control file, conflicts can occur when creating vendor entries with the same name, or when creating model entries with the same name under a single vendor entry. In these cases, the entries are highlighted in dark grey. A warning icon clipboard_e330e12072125931948ec4b7467126f56.png is also displayed.

clipboard_eb8d39570acc0b5045cbed9a3b669097b.png

clipboard_e67233e75ae5d164753e5b15fdcbf1913.png

If there are conflicts in the driver control file, the file cannot be saved. The Save button is disabled in these cases.

Filtering functions

If the driver control file is extended and more and more entries are made for different vendors and models, the view quickly becomes confusing. In order to be able to find the correct entries quickly, a filter function has been provided, which can be used to filter out certain vendor, model or driver entries.

The filter function is initially deactivated and can be displayed by clicking the clipboard_e7e3c82767408f733ab03e4867b6af69d.png icon.

clipboard_e1a3a757a053337a21b96c1d256b0076c.png

The filter bar appears at the bottom of the window and can be used to define the filter.

clipboard_e925b142ba5513c06bc80edc83636ce9a.png

It is possible to filter by the following properties:

  • Vendor name
  • Model name
  • Driver name
  • Entries with warning (e.g. non-existent drivers, or conflicts)
  • Modified entries

The filter properties can also be combined. In the following example, only entries that contain warnings are displayed. These are two entries for VMware and Microsoft. In addition, the display is restricted to the models contained in the name 7,1.

clipboard_e93e5a9c37932daaf926805ac0e21c655.png

Deactivating filtering

If the filtering of the entries should be deactivated again, the filtering values and check boxes can be removed again, or you can close the filtering display directly via clipboard_ec62adbeccb1f0ab85f3c20289e382b23.png, so that all filtered entries are displayed again.

clipboard_edc52c4a123e7c5dcf251d74809561987.png

 

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

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

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

  • Was this article helpful?