How to enable the Surface Laptop keyboard during MDT deployment

This article addresses a deployment approach that uses Microsoft Deployment Toolkit (MDT). You can also apply this information to other deployment methodologies. On most types of Surface devices, the keyboard should work during Lite Touch Installation (LTI). However, Surface Laptop requires some additional drivers to enable the keyboard. For Surface Laptop (1st Gen) and Surface Laptop 2 devices, you must prepare the folder structure and selection profiles that allow you to specify keyboard drivers for use during the Windows Preinstallation Environment (Windows PE) phase of LTI. For more information about this folder structure, see Deploy a Windows 10 image using MDT: Step 5: Prepare the drivers repository.

Tip

When using keyboard drivers for Surface Laptop 2 and Surface Laptop 3 in the same Windows PE boot instance, you may need to manually reset the firmware if the keyboard or touchpad don’t work in Windows PE:

  • Press and hold the Power button for 30 seconds. If you are connected to a power supply unit (PSU), press and hold the Power button until you see the light at the end of the PSU cord briefly turn off before turning back on.

Important

If you are deploying a Windows 10 image to a Surface Laptop that has Windows 10 in S mode preinstalled, see KB 4032347, Problems when deploying Windows to Surface devices with preinstalled Windows 10 in S mode.

Add keyboard drivers to the selection profile

  1. Download the latest Surface Laptop .msi file from the appropriate locations:

  2. Extract the contents of the Surface Laptop .msi file to a folder that you can easily locate (for example, c:\surface_laptop_drivers). To extract the contents, open an elevated Command Prompt window and run the command from the following example:

    Msiexec.exe /a SurfaceLaptop_Win10_15063_1703008_1.msi targetdir=c:\surface_laptop_drivers /qn
    
  3. Open the Deployment Workbench and expand the Deployment Shares node and your deployment share, then navigate to the WindowsPEX64 folder.

  4. Right-click the WindowsPEX64 folder and select Import Drivers.

  5. Follow the instructions in the Import Driver Wizard to import the driver folders into the WindowsPEX64 folder.

Note

Check the downloaded .msi package to determine the format and directory structure. The directory structure will start with either SurfacePlatformInstaller (older .msi files) or SurfaceUpdate (newer .msi files) depending on when the .msi file was released.

Import drivers for Surface devices

Import the following folders as appropriate for your Surface Laptop device.

Device Import folders More information
Surface Laptop Studio heci
ialpss2_gpio2_tgl
ialpss2_uart2_tgl
intelthcbase
surfacehidminidriver
surfacehotplug
surfaceintegrationdriver
surfacepenwirelesschargerhotkey
surfacesarmanager
surfaceserialhubdriver
surfacestoragefwupdateenum
surfacestoragefwupdatekbg40zns256gpackage
surfacewakeontouchcontrol
n/a
Surface Pro 8 intelthcbase
ManagementEngine
surfaceacpiplatformextension
SurfaceBattery
SurfaceCoverClick
SurfaceEthernetAdapter
SurfaceHidMini
SurfaceHotPlug
surfaceintegrationdriver
SurfaceSar
SurfaceSerialHub
surfacetimealarmacpifilter
surfacetypecoverv7fprude
SurfaceUcmUcsiHidClient
surfacevirtualfunctionenum
tbtslimhostcontroller
TglChipset
TglSerial
n/a
Surface Laptop 5 with Intel processor adlserial
alderlakepchpsystem
gna
heci
intelprecisetouch
msump64x64sta
surfaceacpiplatformextensiondriver
surfacebattery
surfacebutton
surfacedockintegration
surfacehidminidriver
surfacehotplug
surfaceintegration
surfaceserialhubdriver
surfacetimealarmacpifilter
tbtslimhostcontroller
n/a
Surface Laptop 4 with Intel processor TglSerial
IntelPreciseTouch
SurfaceEthernetAdapter
SurfaceBattery
SurfaceHidMini
SurfaceHotPlug
SurfaceSerialHub
SurfaceTconDriver
surfacetimealarmacpifilter
surfacevirtualfunctionenum
TglChipset
ManagementEngine
n/a
Surface Laptop 4 with AMD processor U0361415
AMDfendr
AMDGpio2
AMDI2c
AMDLpcFilterDriverAMDMicroPEP
AMDPsp
AMDSmf
AMDSpi
AMDUart
SurfaceEthernetAdapter
SMBUS
SurfaceBattery
SurfaceButton
SurfaceDigitizerHidSpiExtnPackage
SurfaceHIDFriendlyNames
SurfaceHidMini
SurfaceHotPlug
SurfaceOemPanel
SurfacePowerMeter
SurfacePowerTrackerCore
SurfaceSerialHub
SurfaceSMFClient
SurfaceSmfDisplayClient
SurfaceSystemManagementFramework
SurfaceTconDriver
SurfaceThermalPolicy
Surfacetimealarmacpifilter
SurfaceUcmUcsiHidClient
n/a
Surface Laptop 3 with Intel processor SurfaceUpdate\SerialIOGPIO
SurfaceUpdate\SerialIOI2C
SurfaceUpdate\SerialIOSPI
SurfaceUpdate\SerialIOUART
SurfaceUpdate\SurfaceHidMini
SurfaceUpdate\SurfaceSerialHub
SurfaceUpdate\SurfaceHotPlug
SurfaceUpdate\Itouch
Importing the following folders will enable full keyboard, trackpad, and touch functionality in PE:

SerialIOGPIO
SerialIOI2C
SerialIOSPI
SerialIOUART
itouch
Chipset
ChipsetLPSS
ChipsetNorthpeak
ManagementEngine
SurfaceAcpiNotify
SurfaceBattery
SurfaceDockIntegration
SurfaceHidMini
SurfaceHotPlug
SurfaceIntegration
SurfaceSerialHub
SurfaceService
SurfaceStorageFwUpdat
Surface Laptop 2 SurfacePlatformInstaller\Drivers\System\GPIO
SurfacePlatformInstaller\Drivers\System\SurfaceHIDMiniDriver
SurfacePlatformInstaller\Drivers\System\SurfaceSerialHubDriver
SurfacePlatformInstaller\Drivers\System\I2C
SurfacePlatformInstaller\Drivers\System\SPI
SurfacePlatformInstaller\Drivers\System\UART
SurfacePlatformInstaller\Drivers\System\PreciseTouch
For newer .msi files beginning with "SurfaceUpdate", use:

SurfaceUpdate\SerialIOGPIO
SurfaceUpdate\serialioi2c
SurfaceUpdate\SerialIOSPI
SurfaceUpdate\SerialIOUART
SurfaceUpdate\SurfaceHidMini
SurfaceUpdate\SurfaceSerialHub
SurfaceUpdate\Itouch
Surface Laptop (1st Gen) SurfacePlatformInstaller\Drivers\System\GPIO
SurfacePlatformInstaller\Drivers\System\SurfaceHidMiniDriver
SurfacePlatformInstaller\Drivers\System\SurfaceSerialHubDriver
SurfacePlatformInstaller\Drivers\System\PreciseTouch
For newer .msi files beginning with "SurfaceUpdate", use:

SurfaceUpdate\SerialIOGPIO
SurfaceUpdate\SurfaceHidMiniDriver
SurfaceUpdate\SurfaceSerialHubDriver
SurfaceUpdate\Itouch

Tip

Check the downloaded .msi package to determine the format and directory structure. The directory structure will start with either SurfacePlatformInstaller (older .msi files) or SurfaceUpdate (Newer .msi files) depending on when the .msi was released.

Verify imported drivers & configure Windows PE properties

  1. Verify that the WindowsPEX64 folder now contains the imported drivers, as shown in the following figure:

    Image that shows the newly imported drivers in the WindowsPEX64 folder of the Deployment Workbench.

  2. Configure a selection profile that uses the WindowsPEX64 folder, as shown in the following figure:

    Image that shows the WindowsPEX64 folder selected as part of a selection profile.

  3. Configure the Windows PE properties of the MDT deployment share to use the new selection profile, as follows:

    • For Platform, select x64.
    • For Selection profile, select the new profile.
    • Select Include all drivers from the selection profile.

    Image that shows the Windows PE properties of the MDT Deployment Share.

  4. Verify that you have configured the remaining Surface Laptop drivers by using either a selection profile or a DriverGroup001 variable.

    • For Surface Laptop (1st Gen), the model is Surface Laptop. The remaining Surface Laptop drivers should reside in the \MDT Deployment Share\Out-of-Box Drivers\Windows10\X64\Surface Laptop folder as shown in the following figure.
    • For Surface Laptop 2, the model is Surface Laptop 2. The remaining Surface Laptop drivers should reside in the \MDT Deployment Share\Out-of-Box Drivers\Windows10\X64\Surface Laptop 2 folder.
    • For Surface Laptop 3 with Intel processor, the model is Surface Laptop 3. The remaining Surface Laptop drivers are located in the \MDT Deployment Share\Out-of-Box Drivers\Windows10\X64\Surface Laptop 3 folder.

    Image that shows the regular Surface Laptop (1st Gen) drivers in the Surface Laptop folder of the Deployment Workbench.

After configuring the MDT Deployment Share to use the new selection profile and related settings, continue the deployment process as described in Deploy a Windows 10 image using MDT: Step 6: Create the deployment task sequence.