Skip to main content
Matrix42 Self-Service Help Center

Provision of WinPE drivers

In the following chapter we will go into the provision of WinPE drivers, which are necessary to be able to address hardware that is not yet natively supported by the current WinPE.

Despite frequent updates of the Microsoft ADK (up to Windows 10 2004), it is possible that certain hardware types are not or not correctly addressed by the supplied drivers. The manufacturers usually offer special WinPE driver packages for this, which then provide a remedy.

Please note that these are not always "fully usable" drivers in the operating system.
If the manufacturer provides drivers for your operating system, you should also use these for the operating system installation.
A detailed list of the released operating systems can usually be found in the driver package readme file, or can be obtained from the manufacturer.

Driver integration for a boot configuration

In this step-by-step guide, we will use a VMware Workstation Client as an example and integrate the necessary drivers.

Dell, for example, already provides the necessary mass storage drivers with the common name F6 Driver. This name is derived from the F6 installation method for third-party mass storage drivers during Windows setup.

As with the F6 installation method, you will need unpacked drivers (usually consisting of at least one *.inf, *.cat and *.sys file) to deploy the mass storage drivers. Often there can be more than one of these files in a driver package).

It is recommended that you first create a new boot configuration and use it to test the deployment. After successful tests, the necessary drivers can be transferred to a productive boot configuration.

  1. After you have made sure that the drivers have been correctly unpacked to the desired location, go to Configuration > Boot Configurations in the Matrix42 Management Console.
  2. In the Boot Configuration overview you will find "Additional driver folders" in the lower right corner after setting the Advanced Properties (upper right) to On.
  3. Here possibly already integrated driver directories of this boot configuration are displayed. In this case we create a new boot configuration and the window "Additional driver folders" shows currently nothing.
  4. Now select the button WinPE_Add.gif and navigate in the opening "Search Folder" window to the driver folder where you have unpacked the drivers..


It is a good idea to always select descriptive names, so that at a later date it is possible to identify which driver is to be replaced by a successor, but also to make it easier for other colleagues to identify the drivers.
The selected directories must be located on a share that is accessible to the Activation Service. Make sure that the user under which the Activation Service is running has access to the share and that the share can be accessed from the computer on which the Activation Service is running.
A maximum path length of 256 characters applies to file storage and all path specifications. The following characters ~ " # % & * : < > ? / \ { | } are not allowed in folder, file and path specifications.
The EmpInst$ share must be used here.

  1. In this case we add the driver directory "VMXNET3" to the boot configuration.
    Note that each driver directory must be added individually!
  2. Enter a unique name and a description, this will facilitate the later identification of the boot configuration.
  3. After all the changes correspond to your wishes, confirm them by clicking the "Save" button.
  4. Confirm the security prompt with Yes.
  5. The WinPE boot configuration is now created and can then be assigned to the client.

The WinPE agent tries to find suitable drivers for devices that are not supported by WinPE's own drivers. This means that a possibly existing WinPE driver will always have priority over a subsequently added driver.

Read log file information

On the client in the directory "X:\UAF" or on the server in the directory .\Empirum\EmpInst\Wizard\OS\WinPeStatus\<Domäne_Computername> you will find the file "Matrix42.Platform.Service.Host.log". In it, you will find a section that indicates the missing device drivers or shows the installed devices if additional drivers were stored in the boot configuration.

Here in the example an 'Ethernet Controller' is listed as "Unsupported Device". And you can see in the last lines that no devices were installed, because no drivers were stored here in the boot configuration.

The hardware ID can be used to search for a required driver in particular.
If you have now stored drivers in the boot configuration, then you can see from the log that the suitable drivers were installed. The driver files are also listed and which devices support them.
The appropriate drivers are then filtered for storage and network devices - everything else is not required and therefore not installed. (Strictly speaking, only the device classes Volume, DiskDrive, Net, SCSIAdapter and HDC are used).
And it finally comes to the installation of the drivers, which you can see here below in the example: The driver for the network device is installed.

In principle, unsupported devices are always listed - the installed devices are not listed by default. If you want to see all devices, or more information about the state of the devices the installation attached drivers, you must change the configuration file "Matrix42.Platform.Service.Host.exe.config" on the server in the directory "EmpInst$\Sys\Images\WinPE\binaries\UAF" and recreate the relevant boot configurations.

To do this, you need to add the listener for the log file as an XML node to the debug switch in the logging configuration:
Under <loggingConfiguration><categorySources>:
<add switchValue="Verbose" name="Debug">
    <add name="OutputDebug TraceListener"/>

you have to add the following listener:
<add name="RollingFlatFile TraceListener"/>
Sodass die Konfiguration etwa wie folgt aussieht und Debug-Logs in die Logdatei geschrieben werden:
<add switchValue="Verbose" name="Debug">
    <add name="OutputDebug TraceListener"/>
    <add name="RollingFlatFile TraceListener"/>

  • Was this article helpful?