none
Installing Drivers Issue with MDT 8450, Windows 10 v1803, and OptiPlex 7060 Intel i7 8th Gen Processor RRS feed

  • Question

  • Good morning all,

    I have been managing an MDT server for several years now. Within my task sequence, I set the DriverGroup001 variable (to "Windows 10\%Make%\%Model%") so MDT automatically handles driver installs. I use the Set Task Sequence Variable for this. For drivers, I download and import the CAB file from the Dell Enterprise CAB site. I have my Drivers folder organized. Windows 10 is the parent folder. Then, I have folders with the make name. And within those folders, I have the model folders. My task sequence has worked great for several models. I've installed Windows 10 on the OptiPlex 7050, OptiPlex 5250 AIO, Precision 7720, Latitude E6230, and Latitude 3379 to name a few models. Now, we have the OptiPlex 7060 and MDT imports the drivers as expected. However, once the computer restarts and goes into Windows, I get the message, "Cannot connect to deployment share". I turned on the shell for troubleshooting. I look at the Device Manager and see that MDT missed a lot of drivers, the network driver being amongst them. I can manually install the drivers. I can browse the C:\ drive and Windows finds the drivers. So, they are on the computer. After I install the drivers, I can click Retry on the error message that pops up and my deployment completes successfully. My initial thought is that there needs to be some delay because MDT is moving too fast through the process and not allowing the drivers to get installed. I remember reading a post about MDT and faster hardware, but I have not found it again. I do not mind editing the VBS script files and adding a pause. But, I am not quite sure if that would help or where I would add the pause. I also wanted to post and see if anyone else came across similar issues with the newer hardware. I'm scratching my head wondering why everything works on other models, but not our newest one. I appreciate anyone's input. Thank you!

    • Changed type MTram18 Tuesday, October 30, 2018 9:54 PM
    Friday, July 27, 2018 1:42 PM

Answers

  • Good morning all, I am excited to report that I found and fixed my mistake! I had removed an important line from the unattend.xml file from when we migrated from Windows 7 to Windows 10. Basically, I started from scratch on the unattend.xml file and based it on how I would setup a PC from the CD not realizing that MDT adds some extra lines to the unattend.xml file for it to work properly.

     Make sure the following is at the end of your unattend.xml file. It's important for the MDT process!
    <settings pass="offlineServicing">
        <component name="Microsoft-Windows-PnpCustomizationsNonWinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
          <DriverPaths>
            <PathAndCredentials wcm:keyValue="1" wcm:action="add">
              <Path>\Drivers</Path>
            </PathAndCredentials>
          </DriverPaths>
       </component>
    </settings>
    -Matt Trammell

    • Marked as answer by MTram18 Tuesday, September 24, 2019 2:04 PM
    Tuesday, September 24, 2019 2:04 PM

All replies

  • It would be easier to troubleshoot looking the the bdd.log to see what the model name reports as and also to see what drivers were injected. Can you post it to onedrive or similar and share the link to it?

    We haven't bought any 7060's just yet so I can't test deploying to one myself.


    Daniel Vega

    Friday, July 27, 2018 2:36 PM
  • Good afternoon,

    After much research, I came up with a workable solution. I'll give the quick version, but if you have any questions, I can elaborate.

    I started by writing a PowerShell script to collect IP information (IP, subnet, gateway, DNS) from within the Windows PE environment and save it to a text file on the Windows drive called staticip.txt. I called the file: SaveIPInfo.ps1. Additionally, my script copies the following helper files for the deployment to pick up after the computer restarts into the Windows environment with the Shell hidden. The helper files are:

    • SetIPAddress.ps1 - I wrote this PowerShell script to reference the staticip.txt fie created earlier and set the IP address statically
    • devcon.exe - This is a great tool from Microsoft. It is a command line tool to work as you would from within the Device Manager dialog. It was a process to get the file, because I do not like downloading files from unofficial sites. To get devcon.exe, you must install Visual Studio and the Windows 10 Software Development Kit. The free Visual Studio Community worked fine for me.
    • netdriver.bat - I wrote this batch file to install the network driver and then run SetIPAddress.ps1 to statically set the IP address on the PC. I'll include the syntax I used for the devcon.exe install command since it was a bit tricky to figure out:

    devcon.exe install "C:\Drivers\Net\E1C65x64_12.15.31.4_5791E6B08A40200B10C275922802487334134A6121F85312F8A18AFFFA78A421\E1D65x64.inf" "PCI\VEN_8086&DEV_15BB"

    So, within the Task Sequence, I run the SaveIPAddress.ps1 file under the Postinstall phase, before I capture the network settings, advance the phase, and restart computer (4th step from the bottom). I also only run this script file if the model matches the model(s) that I see the same issue on.

    To get the driver to install and set the IP after the reboot, I edited the LiteTouch.wsf file. I made the changes in bold:

      '//----------------------------------------------------------------------------
      '//  If there were any "saved" network settings, restore them now.
      '//----------------------------------------------------------------------------
      If isNumeric(oEnvironment.Item("OSDAdapterCount")) then
       If Cint(oEnvironment.Item("OSDAdapterCount")) > 0 then                               
        sCmd = "wscript.exe """ & oUtility.ScriptDir & "\ZTINicConfig.wsf"" /RestoreWithinWinPE"
        iRetVal = RunAndLog(sCmd, true)
        TestAndLog iRetVal,"Excution: " & sCmd
       End if
      End if
      
      '//----------------------------------------------------------------------------
      '// install network driver
      '//----------------------------------------------------------------------------
      
      If oEnvironment.Item("SavedIP") = "YES" then
       Dim objShell
       Set objShell = WScript.CreateObject("WScript.Shell")
       objShell.Run "cmd.exe /K CD ""C:\AITS Tools\"" & netdriver.bat"
       Set objShell = Nothing
      End If

    And a little bit further down, I added a delay to give time for the netdriver.bat file to finish. Again, new code in bold:

     Function ValidateDeployRootWithRecovery
      Dim sARF
      Dim sNetworkErrorHint
      DIm iRetVal
      Dim sLTISuspend
      
      'add delay for newer computer models to load the network driver
      WScript.Sleep 17000

      

    If oUtility.ValidateConnectionEx(oEnvironment.Item("DeployRoot"), True) = Success then
       ValidateDeployRootWithRecovery = SUCCESS
       exit function
      End if

      sNetworkErrorHint = vbNewLine & GetNetworkingErrorHint(oEnvironment.Item("DeployRoot"))
      oLogging.CreateEntry "Unable to connect to the deployment share " & oEnvironment.Item("DeployRoot") & "." & sNetworkErrorHint, LogTypeError

      

    I think that is everything. I will make amendments if I see that I missed something. It was a fun process to figure out and hopefully future editions of MDT will remove the need for this workaround.

    -Matt Trammell


    • Edited by MTram18 Friday, October 5, 2018 9:24 PM ammendments
    • Marked as answer by MTram18 Tuesday, October 30, 2018 9:55 PM
    • Unmarked as answer by MTram18 Tuesday, September 24, 2019 2:04 PM
    Friday, October 5, 2018 9:21 PM
  • Good morning all, I am excited to report that I found and fixed my mistake! I had removed an important line from the unattend.xml file from when we migrated from Windows 7 to Windows 10. Basically, I started from scratch on the unattend.xml file and based it on how I would setup a PC from the CD not realizing that MDT adds some extra lines to the unattend.xml file for it to work properly.

     Make sure the following is at the end of your unattend.xml file. It's important for the MDT process!
    <settings pass="offlineServicing">
        <component name="Microsoft-Windows-PnpCustomizationsNonWinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
          <DriverPaths>
            <PathAndCredentials wcm:keyValue="1" wcm:action="add">
              <Path>\Drivers</Path>
            </PathAndCredentials>
          </DriverPaths>
       </component>
    </settings>
    -Matt Trammell

    • Marked as answer by MTram18 Tuesday, September 24, 2019 2:04 PM
    Tuesday, September 24, 2019 2:04 PM