locked
NFP/ NFC drivers - Post Install phase RRS feed

  • Question

  • Hi,

    I try to deploy a custom Wim of Windows 7 x64 on a Dell Latitude E5550 and a E7450.

    I have drivers from Dell Driver Cab web site for each Model.

    In my task, only matching drivers from the model is injected (OutOfBoxDrivers path are different).

    When the task is finished, I see missing drivers for 'CVUSBDRBUS_257' and 'Broadcom NFP'.

    I have test the drivers by installing manually the .inf, and that is working fine.

    So, I would like to know how can I trooblshot the installation of the driver, or how I can install them by the task sequence?

    Thanks

    Fabrice


    • Edited by Bilis518 Tuesday, December 15, 2015 1:11 PM inf
    Tuesday, December 15, 2015 8:38 AM

Answers

  • Hi,

    I wrote a PS script to install the missing drivers;

    In my Deploymentshare, I have folders like this:

    .\Out-Of-Box-Drivers\Windows7x64\Dell .inc\Latitude E7450 with \Good and \Bad subfolders, where Dell inc and Latitude are %Make% and %Model% variable.

    I set DriverGroup001 to "Windows 7 x64\%Make%\%Model%\good", and DriverGroup002 to "Windows 7 x64\%Make%\%Model%\bad"

    All good drivers are installed during the 'inject drivers' task in the PREINSTALL phase.

    And Bad drivers are installed in the STATERESTORE phase with a Powershell script.

    The ps1 script is in the \\MDTServer\DeploymentShare$\scripts folder.

    To launch the PS Script you first need to set the Execution Policy to 'Unrestricted'.

    This is my (basic) script:

    # 30/12/2015 FMELIS Création
    # 
    
    # Load ZTIUtility module
    c:
    cd C:\MININT\Modules\ZTIUtility
    Import-Module .\ZTIUtility.psm1
    
    # Variable MDT
    $MDTRoot     = $tsenv:DEPLOYROOT
    $BadDrvPath  = $tsenv:DriverGroup002
    
    # xml file of MDT drivers 
    $drvGrpXmlPath = $MDTRoot + "\Control\DriverGroups.xml"
    $drvXmlPath    = $MDTRoot + "\Control\Drivers.xml"
    
    # Bad driver list
    $drvList = Select-Xml -Path $drvGrpXmlPath -XPath "/groups/group" | select -ExpandProperty Node | where {$_.name -like $BadDrvPath}
    
    # If no bad driver -> exit
    If ($drvList.Member){
    
        # Searching in the drivers list the bad drivers to add    
    $drvXml = Select-Xml -Path $drvXmlPath -XPath "/drivers/driver" | select -ExpandProperty Node
    
        Foreach ($drv in $drvList.Member){
            
            $drvToAdd = $drvXml | Where {($_.guid -eq $drv) -and ($_.enable -eq "True")}
            
            # Formatting driver path and install it if exist
            if ($drvToAdd){
                $drvPath = $MDTRoot + $drvToAdd.source.remove(0,1)
               
                pnputil.exe -i -a $drvPath
    
                }
            }
    }

    Thank you.

    • Marked as answer by Ty Glander Wednesday, December 30, 2015 6:10 PM
    Wednesday, December 30, 2015 3:50 PM

All replies

  • If you read the FAQ above the forum Keith mentions how to troubleshoot driver installation.

    Logs are very important. https://keithga.wordpress.com/2014/10/24/video-mdt-2013-log-files-basics-bdd-log-and-smsts-log/ Mention any customizations you have made.

    Tuesday, December 15, 2015 7:31 PM
  • It could be a parent/child issue. You may need to install the driver instead of relying on PnP. If that's the case you can add the driver installer as an application and likely use some switches to silently install it. Add it to your task sequence and use a WMI query to restrict it to that specific model.

    Alternatively you could set it as a mandatory application in customsettings and use a model priority

    [Settings]
    Priority=Model

    [Latitude E7450]
    MandatoryApplications001={blahblahblah11111}


    If this post is helpful please vote it as Helpful or click Mark for answer.

    • Proposed as answer by Ty Glander Tuesday, December 15, 2015 10:14 PM
    Tuesday, December 15, 2015 8:48 PM
  • Hi Ty,

    It's a nice video, but I don't have error or warning at the deployment summary.

    thanks

    Thursday, December 17, 2015 10:09 AM
  • Hi Dan,

    I restrict the drivers for a specific model most drivers a correctly installed at the end of the deployement.

    I have the .inf of the NFC drivers (not an .exe).

    When the deployment ends, in the  Device Manager, I right click on the NFC device, Update driver, I put the path of the .inf and the driver update as well.

    I just would like to do this operation in the task and not manually.

    Also, I don't understant why Pnp don't install them automatically during the deployment.

    Thanks.

    Thursday, December 17, 2015 10:15 AM
  • For the exact answer you might want to talk to someone that writes drivers, which isn't me.
    https://msdn.microsoft.com/en-us/library/windows/hardware/ff559783(v=vs.85).aspx

    What model laptop has the NFC hardware? I'll see if I can find an installer for it in which case you could import it as an application and make it mandatory for that model computer.

    I do that with certain drivers for specific models, but I use a SQL database instead.


    If this post is helpful please vote it as Helpful or click Mark for answer.

    Thursday, December 17, 2015 8:07 PM
  • Dan,

    These are the two differents models :

    Dell Latitude E5550 and a E7450

    Thank you.

    Friday, December 18, 2015 11:06 AM
  • Hi,

    I wrote a PS script to install the missing drivers;

    In my Deploymentshare, I have folders like this:

    .\Out-Of-Box-Drivers\Windows7x64\Dell .inc\Latitude E7450 with \Good and \Bad subfolders, where Dell inc and Latitude are %Make% and %Model% variable.

    I set DriverGroup001 to "Windows 7 x64\%Make%\%Model%\good", and DriverGroup002 to "Windows 7 x64\%Make%\%Model%\bad"

    All good drivers are installed during the 'inject drivers' task in the PREINSTALL phase.

    And Bad drivers are installed in the STATERESTORE phase with a Powershell script.

    The ps1 script is in the \\MDTServer\DeploymentShare$\scripts folder.

    To launch the PS Script you first need to set the Execution Policy to 'Unrestricted'.

    This is my (basic) script:

    # 30/12/2015 FMELIS Création
    # 
    
    # Load ZTIUtility module
    c:
    cd C:\MININT\Modules\ZTIUtility
    Import-Module .\ZTIUtility.psm1
    
    # Variable MDT
    $MDTRoot     = $tsenv:DEPLOYROOT
    $BadDrvPath  = $tsenv:DriverGroup002
    
    # xml file of MDT drivers 
    $drvGrpXmlPath = $MDTRoot + "\Control\DriverGroups.xml"
    $drvXmlPath    = $MDTRoot + "\Control\Drivers.xml"
    
    # Bad driver list
    $drvList = Select-Xml -Path $drvGrpXmlPath -XPath "/groups/group" | select -ExpandProperty Node | where {$_.name -like $BadDrvPath}
    
    # If no bad driver -> exit
    If ($drvList.Member){
    
        # Searching in the drivers list the bad drivers to add    
    $drvXml = Select-Xml -Path $drvXmlPath -XPath "/drivers/driver" | select -ExpandProperty Node
    
        Foreach ($drv in $drvList.Member){
            
            $drvToAdd = $drvXml | Where {($_.guid -eq $drv) -and ($_.enable -eq "True")}
            
            # Formatting driver path and install it if exist
            if ($drvToAdd){
                $drvPath = $MDTRoot + $drvToAdd.source.remove(0,1)
               
                pnputil.exe -i -a $drvPath
    
                }
            }
    }

    Thank you.

    • Marked as answer by Ty Glander Wednesday, December 30, 2015 6:10 PM
    Wednesday, December 30, 2015 3:50 PM