Skip to main content
Matrix42 Self-Service Help Center

Provision of WinPE drivers

In the following chapter, we describe the provisioning of WinPE drivers, which are necessary to be able to communicate with hardware that is not yet natively supported by the current WinPE.

Despite frequent updates of the Microsoft ADK, 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 provide a remedy.

 

Please note that this does not always have to be a "fully functional" driver for operating system that is deployed. If the manufacturer offers drivers for your operating system, we suggest preferring them for the operating system installation.

For a detailed list of the supported operating systems, you can generally refer to the driver package ReadME file or ask the manufacturer if necessary.

Driver integration for a boot configuration

For our case in the step by step instructions, we will use a Dell workstation and integrate the necessary drivers.

Dell already provides the necessary mass storage drivers under the common name F6 driver. This name is derived from the F6 third-party storage driver installation method during Windows Setup.

As with the F6 installation method, you will need unpacked drivers to deploy the mass storage drivers (typically these consist of at least one of *.inf, *.cat, and *.sys files, often multiple files of those types may be included in a driver package).

  1. After ensuring that the drivers have been unpacked correctly in the desired location, switch to the EMC and select the menu item Configuration > Boot Configurations.

clipboard_ed67ebd25d20a21a1f159cc1618f6ea2b.png

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

  1. In the Boot Configuration overview, you will find "Additional driver folders" on the bottom right.
  2. If already integrated driver directories exist for this boot configuration, they are displayed here. In our case, we create a new boot configuration and the window "Additional driver directories" shows nothing now.
  3. Please select the  clipboard_e05b92447c1439ab8da02b760d00ee260.png button and navigate in the file browser to the driver directory where you have previously unzipped the drivers.

clipboard_e32b3a3af8af503afb4529f71cf114b64.png

 

It is a good idea to always choose speaking names, so that you will be able to understand at a later date which driver should be replaced by a successor, but also to make it easier for other colleagues to identify the driver.

The selected directories must be located on a share, which can then also be accessed by the activation service. Make sure that the user under which the Activation Service runs has access to the share and that the share can be accessed from the computer running the Activation Service.

For the file storage and all path specifications, a maximum path length of 256 characters applies. 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 directories "SCSI" and "DRVLIB.NIC" to the boot configuration.

clipboard_e2f9848b10905077c1972d9b500aa652d.png

Note that each driver directory must be added separately.

  1. Enter a description in the description field, which facilitates later identification of the boot configuration.

clipboard_e557f534364a97d4a4e34ff9b085b7034.png

  1. After all changes have been made, confirm them by clicking on the "Save" button.

clipboard_e384515275d2f4a4966486d5d9f62dc67.png

  1. The WinPE boot configuration is now being 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. That Any existing WinPE driver will always be given priority over a subsequently added driver.

Reading Log File Information

The log file 'Matrix42.Platform.Service.Host.log' can be found on the client under 'x:\UAF' or on the server in the 'Auto\MAC' or 'Auto\UUID' directory. There you will find a section which indicates the missing device drivers or the installed devices if additional drivers have been 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 have been installed, because no drivers have been stored in the boot configuration:

clipboard_e0673e4ca0297211879fb2aa798cefdc9.png

The hardware id can be used to search for a required driver.

If you have stored drivers in the boot configuration, you can see from the log that the appropriate drivers have been installed. Additionally, the driver files are listed, and which devices they support.

The appropriate drivers are then filtered for storage and network devices - everything else is not needed and therefore not installed. (Strictly speaking, only the device classes Volume, DiskDrive, Net, SCSIAdapter and HDC are used.)

clipboard_e7419b8e85f88a3f8633d0ce3612be650.png

And finally, it comes to the installation of the drivers, as you can see in the example below: The driver for the network device has been 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 and the drivers included in the installation, you must change the configuration file 'Matrix42.Platform.Service.Host.exe.config' on the server under 'EmpInst$\Sys\Images\WinPE\binaries\UAF' and rebuild related boot configurations.

To achieve that you must add the listener for the log file as XML node to the debug switch in the logging configuration:

At <loggingConfiguration><categorySources>
<add switchValue="Verbose" name="Debug">
  <listeners>
    <add name="OutputDebug TraceListener"/>
  </listeners>
</add>

you must add following listener

<add name="RollingFlatFile TraceListener"/>

So that the configuration looks like below and debug logs are written to the log file:

<add switchValue="Verbose" name="Debug">
  <listeners>
    <add name="OutputDebug TraceListener"/>
    <add name="RollingFlatFile TraceListener"/>
  </listeners>
</add>

 

  • Was this article helpful?