Jump to content




Sign in to follow this  
anyweb

How can I display video correctly in WinPE during UEFI Network boot on a Lenovo Thinkpad 10 using System Center 2012 R2 Configuration Manager



Recommended Posts

Introduction

More and more touch enabled Windows 8 hardware is becoming available, which is great news for us but it also poses some technical challenges. I recently had to image some Lenovo ThinkPad 10's with Windows 8.1 using UEFI network boot via System Center 2012 R2 Configuration Manager.

 

lenovo thinkpad 10.png

 

Problem

Imaging the Lenovo ThinkPad 10 using USB Bootable media posed no issue even though the same boot wim was used for UEFI Network boot. When booting this device using UEFI network boot all was fine until just after the nbp (network boot protocol) part of the process started, this was even before the PXE password was presented. The problem was that the video resolution was set to something like 800x600 which means displaying any sort of Frontend HTA or UDI wizard to end users will look terrible.

 

A colleague of mine (thanks Magnus) started testing with unattend.xml, wpeinit and drvload and got some good results so I set about putting a working solution together in a task sequence.

 

Solution

 

We will use drvload to load the video driver while still in WinPE as one of the first steps in the task sequence, normally you do not need to do this however in this case it's required as the video resolution is unusable.

 

Step 1. Download and extract the driver

 

Download the Chipset driver for the Lenovo ThinkPad 10 from Lenovo's website here. Once done, extract it somewhere by double clicking on the EXE file. By default it wants to extract the drivers to C:\Drivers. Browse to the path of the extracted drivers and locate the GFX folder as shown below

 

Extracted Drivers.png

 

Copy the GFX folder and all files and folders within in to your Configuration Manager package sources share, for example \\sccm\sources\os\drivers\Lenovo\ThinkPad10\Video\GFX as shown below

 

GFX package.png

 

Step 2. Create a Package containing the driver

 

In the Configuration Manager console, create a new Package in Software Library,

 

Create Package.png

 

Fill in the Package details and browse to the GFX folder copied above as shown below

 

Lenovo ThinkPad 10 Video fix.png

 

with no Program as shown below

 

do not create a program.png

 

continue through that wizard until completion

 

package created.png

 

Step 3. Distribute the package to your distribution points

 

Right click on the package and choose Distribute Content as shown below

 

Distribute content.png

 

after selecting at least one distribution point continue through that wizard until completion

 

content distributed.png

 

Step 4. Edit your task sequence and create a new Group

 

Open up your deployment task sequence (I used the CM12 BitLocker Frontend HTA available here) and create a new group called Lenovo ThinkPad 10 UEFI Video fix. Next, on the options tab create a new If statement, where ALL the conditions are true. The conditions to check for are:

  • check if it's a PXE boot
  • check if it's in UEFI mode
  • check for the Lenovo MTM

You can do this by adding the PXE boot check using the _SMSTSLaunchMode variable as shown below

 

smstslaunchmode.png

 

and add an UEFI bios check by using the _SMSTSBootUEFI variable as shown below

 

smstsbootuefi.png

 

add a new wmi query as the one shown below

Select * FROM Win32_ComputerSystem WHERE model like "20C3%"

so that the finished options tab look exactly like below

 

Lenovo ThinkPad 10 UEFI Video Fix group.png

 

Step 5. Add a Run Command Line to xcopy the video driver

 

Next within the new group, create a Run Command Line step, make sure that the step occurs somewhere at the start of the task sequence before any HTA, Frontend or UDI wizard is displayed such as in the example below. This step will work fine whether or not you have an MDT Integrated task sequence as it uses the _SMSTSMDataPath variable.

 

Xcopy Lenovo Thinkpad 10 video driver.png

 

the command line of the xcopy is

xcopy ".\*.*" "%_SMSTSMDataPath%\ThinkPad10" /D /E /C /I /Q /H /R /Y /S

make sure that you point to the package created in Step 2 above.

 

 

Step 6. Add a Run Command Line to xcopy the video driver

 

Next, create another new Run Command Line, and use the following command line

drvload %_SMSTSMDataPath%\ThinkPad10\kit59677.inf

so that it looks like below

 

install video driver.png

 

Step 7. Otpional - Set the resolution with Unattend.xml

 

Create a text file called unattend.xml and copy it to your Video driver package created in step 2 above, redistributed that package to your distribution points, the contents of the file should be as below

<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
    <settings pass="windowsPE">
        <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State">
            <Display>
                <ColorDepth>32</ColorDepth>
                <HorizontalResolution>1024</HorizontalResolution>
                <RefreshRate>60</RefreshRate>
                <VerticalResolution>768</VerticalResolution>
            </Display>
        </component>
    </settings>
</unattend>

Create another run command line step to set the resolution using

wpeinit /unattend:%_SMSTSMDataPath%\ThinkPad10\unattend.xml

as shown in the screenshot below

 

wpeinit.png

 

Note that the unattend.xml file will not work unless the video driver above is loaded first.

 

Step 8. PXE boot and verify

 

Make sure the unit is shutdown first. Then initiate a UEFI network boot (PXE boot) by holding the volume down key (right side) and Power button (top side). I used a USB 3 ethernet dongle attached to a USB hub and a USB keyboard.

 

Select the LAN connection using your external keyboard or use the up/down volume control

 

select boot device.jpg

 

then the UEFI network boot process starts, press enter or it won't boot

 

press enter for network boot.jpg

 

it boot's to the PXE password screen, notice the resolution is extremely low

 

photo 1.JPG

 

After entering the password you select a task sequence, again at this point the resolution is low (you could fix this by including the driver in the boot wim but that would increase your boot image size considerably for only one model.)

 

photo 2.JPG

 

it's starts the task sequence, and get's to our newly added group, which then copies down the video driver files

 

photo 3.JPG

 

then installs them using Drvload

 

photo 4.JPG

 

followed by setting the resolution to 1024x768 via the unattend.xml file (this was optional, if you choose not to do this it will default to the native 1920x1080 with tiny text etc...)

 

photo 5.JPG

 

Job done !

 

cheers

niall.

 

Related Reading

 

Task Sequence Built-in Variables in Configuration Manager - http://technet.microsoft.com/en-us/library/hh273375.aspx

Drivers for Lenovo ThinkPad 10 - http://support.lenovo.com/us/en/products/tablets/thinkpad-tablet-series/thinkpad-10

Share this post


Link to post
Share on other sites


Hello ,

I am trying to set WinPE resolution to 1920 x 1080 via Unattend.xml file but it seems settings has no effect on UEFI based PCs.
This article describes that to make it work, we must have Graphic drivers in Boot.Wim file (which I have injected as well but still no luck).

https://technet.microsoft.com/en-us/library/ff716217.aspx

 

This is HP EliteBook 840 G3 which is modern notebook designed to work with UEFI and its default resolution is 1920x1080 (meaning resolution is supported by system)

 

Note: I have placed unattend.xml on root of the boot.wim directory structure.
I am using an HTA /or VB application that gets inappropriate screen resolution when booted into the WinPE.

Its just a USB not via ConfigMgr.

Best Regards,
Malik

unattend.xml

Share this post


Link to post
Share on other sites

if you are trying it on a UEFI system it won't work

This setting only affects the Windows Setup process on BIOS-based computers. UEFI-based computers are not affected by these settings.

use my method instead (or a variety of it)

Share this post


Link to post
Share on other sites

Hi,

According to this link:

 

On UEFI-based computers, this setting is ignored unless you have added a graphics driver into the Windows PE image at \sources\boot.wim.

https://technet.microsoft.com/en-us/library/ff716217.aspx

 

Even I added driver for the Graphics, still no luck.

Your method describes the ConfigMgr way, right now situation is to use bootable USB stick not SCCM.

Do you have idea for how to do that ?

Share this post


Link to post
Share on other sites

replace my steps in the task sequence with steps in a script should work fine.

Share this post


Link to post
Share on other sites

Hi,

Assuming, I have extracted the driver and injected in the Boot.Wim , ,,, will the Step7 (Unattend.xml) can be used instead to write a script?

Share this post


Link to post
Share on other sites

maybe (i havn't tried), try it.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×