You are browsing the archive for Drivers.

Configuration Manager 2012 OSD : Only import the Intel chipset drivers you really need for your brand/model !

6:31 pm in ConfigMgr 2007 R2, ConfigMgr 2012, configmgr 2012 R2, ConfigMgr 2012 SP1, ConfigMgr SP2, configmgr2007, Deployment, Drivers, Operating System Deployment, OSD, sccm, SCCM 2007, SCCM 2007 R2, SCCM 2007 R3, SCCM 2007 SP2, SCCM 2012, sccm 2012 R2, SCCM 2012 R2, SCCM 2012 SP1, sccm RTM, sccm2007 by Kenny Buntinx [MVP]

 

Yesterday I wrote a blogpost about the reason to keep your “Driver DB” and “driver packages” as clean as possible and that you do not need to import all the junk they provide in those so called “enterprise driver packages” for multiple models.

As a first tip for helping you accomplish that , we show you in this blog post how we can limit the number of *.inf files we need to import from Intel(R) Chipset Device Software . When downloading and extracting that Intel(R) Chipset Device Software package you will see that originally there are about  98 inf files present :

image

Now reduce the number of INF files :

Two override command switches for setup.exe from Intel(R) Chipset Device Software that will help us to reduce the *.inf files we need to import into our “Driver Package” :

-AONLY Extracts the needed INF files to install on the current system. If the install has been run once successfully, ‘-AONLY’ will not return any INFs when used in conjunction with ‘-OVERALL’ switch, all the needed INFs for the system will be extracted.

-P <Installation Path> Specifies the hard disk location to which the INF program files are copied. If this flag is not specified at the command line, the <Installation Path> directory is as follows: C:\Program Files\Intel\INFInst .

If this flag is used without the ‘-A’ option, only the Readme will be copied to <Installation Path>. The directory name can include spaces, but then a pair of double quotes (") must enclose the directory name. There should not be any space between the switch ‘-p’ and the directory name. This flag works in either Silent Mode or Interactive Mode.

Lets execute on the local brand/model that contains an intel chipset :

The result of running the setup with those parameters:

And then the result after running the tool on your local brand/model , you will see that the number of *.inf files are reduced to five (5) items ! isn’t that great ? Now copy those drivers to your regular driver import process and you reduced the number of bloat in your ConfigMgr driver database by 80% at least !

 

image

 

Hope it Helps ,

Kenny Buntinx

MVP enterprise Client Management

Configuration Manager 2012 and the need of keeping your Driver database lean and clean !

8:03 pm in CM12, CM12 R2, CM12 SP1, Deployment, Drivers, OSD, sccm, SCCM 2012, sccm 2012 R2, SCCM 2012 R2, SCCM 2012 SP1, sccm RTM, Task Sequence by Kenny Buntinx [MVP]

 

Hi ,

Lately we had an issue on a CM2012 R2  production environment when exporting a “task sequence” from our Acceptance environment and importing that exported “task sequence” into production , and ran into an error where our task sequence import would fail with out of memory message.

The exact message was : “System.OutOfMemoryException , Exception of type ‘System.OutOfMemoryException’ was thrown” as shown in the picture below:

clip_image002

Several people recommended me to increase the WMI memory allocation by doing this : http://anoopcnair.com/2011/05/06/configmgr-sccm-how-to-increase-wmi-default-memory-allocation/ . Anoop links to the “_providerhostquotaconfiguration” class in his article. Anoop’s advice is not uncommon, although supportability of the matter is questionable without PSS/CSS support , it’s a common test/fix giving on PSS/CSS calls related to slow or underperforming console issues.

My advice : DON’T DO THIS BLINDLY or without PSS/CSS support . You’d be crazy doing anything to WMI on a ConfigMgr production environment that you don’t understand the impact off. And if it’s to a component as critical as WMI is to ConfigMgr than you’d better do your homework before implementing it in production.

And this blog post explains what the impact is: http://blogs.technet.com/b/askperf/archive/2008/09/16/memory-and-handle-quotas-in-the-wmi-provider-service.aspx

We increased the WMI memory allocation with PSS support until 8Gb memory (Server having 16 Gb physical memory) , but no luck at all.

A little recap and issue definition:

  1. 1. We created a OSD Task sequence deployment in our acceptance environment.
    2. Once validated , we exported the TS without content (Content is located on a shared UNC storage path) but with dependencies.
    3. We tried to import the exported TS into production, the import fails both trough the GUI and via the powershell cmdlts. The import in production of the exported tasksequence fails with an out of memory error as shown in the screenshot above
    4. We tested both on the Primary site server itself as via remote console –> same result
    5. We have sufficient memory available on the server. I saw that the PowerShell session on the primary site server used up to 1.5Gb ram during the import. (memory was not maxed out (74% used))

Further investigation leads us to the size of the exported Task Sequence , which was about 235 Mb ( without content , go figure ! ) . Probably you would say : “What the hell did you put into that task sequence ????? ”. Well , the customer needs to support 55 different hardware models because of the way they need to buy there hardware. Crazy , I know and the fact is that they know that as well , however they can’t change this purchase behavior.

That being said , they have 55 HW driver packs and they have around 4800 drivers imported in there CM12 Driver DB .

After testing , we discovered that if the imported task sequence is more or less bigger then 135Mb in size , it will fail to import with the error displayed above. Once we lowered the number of drivers being referenced in the driver packages and therefore also in the CM12 driver database itself and the exported TS would be below 135mb in size , the import succeeded. However we could never pinpoint the exact size of the task sequence when it would fail as this was between 135 and 145 Mb.

What I recommend you to do:

  • One of the biggest mistakes customers make is to go the manufacturer website and grab every driver with those so called “enterprise driver packs” that contain drivers for multiple models…. Hell no , mostly the drivers are out dated, full of additional crap…
  • Use common sense and  only import drivers that are applicable to machines in your environment. I do not recommend that drivers are blindly imported into ConfigMgr where there is no actual benefit. This will just cause the database to bloat and the task sequences to become unwieldy. I recommend that any unused drivers/driver packages are removed from ConfigMgr
  • If you have a large number of Manufacturers and models or you run into conflicts, you can apply the driver package based on category or apply a specific package, especially when exporting / importing task sequences .
  • Typically graphic cards , Intel Vpro , Soundcard drivers or custom “hotkey” drivers are “bad” drivers. Those should be installed with applications from the setup.exe or msi.

To give you an idea , we went for a Lenovo C30 desktop model from +_ 400 drivers to 22 drivers. Keep it clean and tight . It will cost you more energy in the beginning , but will save you a lot of time when you need to debug. That’s the message I am trying to give you !

Hope it helps ,

Kenny Buntinx

MVP Enterprise Client Management

Intel HD Graphics driver and software for HP Models in OSD in the New Configmgr 2012 Application model

9:04 am in Application Model, ConfigMgr 2012, ConfigMgr 2012 SP1, Deployment, deployment types, Drivers, Global Conditions, query, Requirements, SCCM 2012, SCCM 2012 SP1, System Center by Kenny Buntinx [MVP]

 

System Center 2012 Configuration Manager has a great feature called the Application model that has many great built-in requirement rules that will help you to get the right deployment type installed on the right machine type even during OSD.

For most of the drivers you need to install during OSD , the driver alone isn’t enough. A great example here is the Intel HD graphics or IDT high definition Audio drivers.

In the old CM07 days you would build packages and programs , use them in your task sequence with a condition that uses a WMI query to apply that TS step on the right HW model. Well , forget about that and start using applications to install your “bad drivers” that need software as well. Let those global conditions figure out on what HW model hardware it is applicable.

For most of my applications the built-in rules can get the job done, but some times we need to create our own Global Conditions, to fit the requirement rules for an application/Deployment Type. In this particular case , we will use a global condition to detect the right PNP ID so we are able to detect the HW. We simply don’t care on what HW model we apply this step , as the global condition will figure it out for you . This will allow you to simplify things in your TS.

Let me give you an example on how to do it :

1. Create your Application : HP Graphics driver and Software and fill in your supported models. Note: When downloading the driver software from the HP website , in the .inf file you will find on what HW models this software is applicable.

image

2. Create your Deployment Type and specify the install / uninstall parameters . In this case : “Setup –s”

image

3. Create your “Detection Method” . In this case we will look in to the registry :

Hive: “HKLM”

Key : \Software\Wow6432Node\Intel\GFX”

Value :”Version”

Data Type : “String”

Equals version “ 9.17.10.2967”

Now you can detect if the app is already installed or not .

image

4. Create your custom Global condition under the “Global Condition” Node in the Console .

image

5. Create your custom Global condition called:”Video is Intel HD Graphics Compatible Adapter” and specify the following settings :

Name :”Video is Intel HD Graphics Compatible Adapter”

Device Type : “windows”

Condition Type : “Setting”

Setting Type : ”WQL query”

Data Type :”String”

Namespace : “Root\Cimv2”

Class: ”CIM_LogicalDevice”

Property : “PNPDeviceID”

WQL query where clause  :

“PNPDeviceID like ‘%VEN_8086&DEV_0166%’ or PNPDeviceID like ‘%VEN_8086&DEV_0106%’ or PNPDeviceID like ‘%VEN_8086&DEV_0102%’ or PNPDeviceID like ‘%VEN_8086&DEV_0116%’ or PNPDeviceID like ‘%VEN_8086&DEV_0112%’ or PNPDeviceID like ‘%VEN_8086&DEV_0126%’ or PNPDeviceID like ‘%VEN_8086&DEV_0122%’ or PNPDeviceID like ‘%VEN_8086&DEV_010A%’ or PNPDeviceID like ‘%VEN_8086&DEV_0162%’ or PNPDeviceID like ‘%VEN_8086&DEV_016A%’ or PNPDeviceID like ‘%VEN_8086&DEV_0152%’ or PNPDeviceID like ‘%VEN_8086&DEV_0156%’ or PNPDeviceID like ‘%VEN_8086&DEV_015A%’”

image

To find the above information , you must open the corresponding inf file of the specified driver

clip_image002

6. Attach your previous defined “Global Condition” as a requirement on your deployment type. Make your sure to select that your global condition must exist on the client device .

image

7. Add the application to your OSD task Sequence . You’re done.

I hope you see that the power of Applications can also be used in your OSD deployment scenarios .

Hope it Helps ,

Kenny Buntinx

Configmgr 2007 OSD : Using Lenovo Update Retriever to install all your drivers without importing them in the ConfigMgr driver catalog

11:00 pm in ConfigMgr, ConfigMgr 2007, ConfigMgr 2007 R2, ConfigMgr SP2, configmgr2007, ConfigMgr2007 R3, Deployment, Drivers, Installation, Operating System Deployment, OSD, sccm, SCCM 2007, SCCM 2007 R2, SCCM 2007 R3, SCCM 2007 SP2, sccm2007, script, Task Sequence, Windows 7 by Kenny Buntinx [MVP]

Did you also think that driver management  in OSD could be more simplified ? For example when you have Lenovo devices , you need to also install a lot of “bad” drivers en also in a very specific way or features such as “hotkeys”does not work .Let’s look at the process right now:

1. Search drivers from the internet manually

2. Unpack them in a correct folder structure

3. Import drivers and categorize

4. Handle duplicate drivers

Problems often seen :

1. Not all drivers work with the import ( there are drivers that simply do not work with the export method , they need to run thru setup.exe ) HP is a king in that area with the sound card & Quick launch buttons. This means that the admin need to create packages , programs and multiple steps in the TS to let it work.

2. For getting some drivers you need to install the vendor msi on your test laptop , go to the install folder and find the extracted drivers there.After that you could import.

3. HP & Lenovo needs certain additional software such as HP quick launch , HP power manager , Lenovo Hotkeys , Lenovo think vantage , etc . A lot of those packages needs to be installed in a very specific order or it just don’t work .

4. You test your deployment and damn it seems you forgot 2 drivers . Find out by HWguid , download and import again …

 

Lenovo Update Retriever – Thinstaller solution :

If you don’t want to spent hours on searching, downloading and importing drivers for you LENOVO computer when going to build a Win7 image , read on . I have found a better way to accomplish this with thanks to Karel Serroels.

It normally takes so much time for an admin , while with the HP / IBM solution it is a 5 minutes job per HW model :

 

1. Install and run the Lenovo update retriever, select your model and software /drivers you want to install , download the drivers into a pre-defined file share . Nice , quick and easy .

2. Create a package with the Lenovo Thinstaller source files , copy the Lenovo Thinstaller files to the local disk & run it thru your TS

 

The advantage here is that I as an admin does not need to worry about the right install sequence , prerequisites , number of needed drivers or even OS type .The Thinstaller tool will do it for you .

Prerequisites :

Get the following software’s online from the Lenovo site as you will need it

  1. Link thininstaller: http://www-307.ibm.com/pc/support/site.wss/TVAN-ADMIN.html#ti
  2. Link update retriever: http://www-307.ibm.com/pc/support/site.wss/TVAN-ADMIN.html#ur

 

Step 1 : Install Lenovo Update Retriever on your server and follow instructions to create a share for the repository , etc .

image

Step 2 : Launch the Lenovo Update Retriever and select your Model an Operating System. Download all files to the repository.

image

Step 3 : Modify your Task Sequence and add Run Thinstaller Trustzone. It needs to work with Dot.net 2.0 .

If you run Lenovo Thinstaller via Configuration Manager task sequence , you cannot run the installation program, because it is a .NET executable and the default policy is to disallow running it from a network share or distribution point. You must therefore change the  following ipadress and sharename with the one from your environment!

image

Step 4 : Create the Lenovo thinstaller package in Configuration Manager.

image

Step 5 : Copy the Lenovo Thinstaller directory to C:\Windows\Thinstaller

image

Step 6 : Run Thinstalle with the following commend line . You must therefore change the  following ipadress and sharename with the one from your environment!

image

Step 7 : Remove the Thinstaller source files . Do a nice cleanup .

image

 

There you go .. The only disadvantage from using this , is the fact that your sourcefiles need to be always to one spot . You can solve this by using Sysvol , DFS or other technologies . However , Most companies have a team that will build the initial image on site and than replicate the images across the company .

Hope it helps ,

Kenny Buntinx.

SCCM OSD issue with Win7 x64 bit deployment on HP 8740W

12:16 pm in ConfigMgr, ConfigMgr 2007, ConfigMgr 2007 R2, ConfigMgr SP2, configmgr2007, ConfigMgr2007 R3, Deployment, Drivers, Installation, Operating System Deployment, OSD, sccm, SCCM 2007, SCCM 2007 R2, SCCM 2007 R3, SCCM 2007 SP2, sccm2007, Windows 7 by Kenny Buntinx [MVP]

Hi,

I was deploying a windows 7 64 bit, at a customer on a HP 8740W , witch is a monster machine ( core I7 , Nvidia Quatro 512 mb graphics , etc ) but during the step “setup windows and Configmgr” it fails with the following error :

Windows setup failed, code 31

Failed to run the action: Setup Windows and ConfigMgr.
Unspecified error (Error: 80004005; Source: Windows)

Looking further in the SMSTS.log it looks like :

——SMSTSLog—–

Command line for extension .EXE is "%1" %*    OSDSetupWindows    4/29/2010 7:45:19 PM    1576 (0x0628)
Set command line: "\\<yourSCCMServer>\SMSPKGE$\ABC00014\SOURCES\SETUP.EXE" "/unattend:C:\_SMSTaskSequence\unattend.xml" /noreboot    OSDSetupWindows    4/29/2010 7:45:19 PM    1576 (0x0628)
Executing command line: "\\<yourSCCMServer>\SMSPKGE$\ABC00014\SOURCES\SETUP.EXE" "/unattend:C:\_SMSTaskSequence\unattend.xml" /noreboot    OSDSetupWindows    4/29/2010 7:45:19 PM    1576 (0x0628)
Process completed with exit code 31    OSDSetupWindows    4/29/2010 7:45:34 PM    1576 (0x0628)
Windows Setup completed with exit code 31    OSDSetupWindows    4/29/2010 7:45:34 PM    1576 (0x0628)
Entering ReleaseSource() for \\<yourSCCMServer>\SMSPKGE$\ABC00014\    OSDSetupWindows    4/29/2010 7:45:34 PM    1576 (0x0628)
reference count 1 for the source \\<yourSCCMServer>\SMSPKGE$\ABC00014\ before releasing    OSDSetupWindows    4/29/2010 7:45:34 PM    1576 (0x0628)
Released the resolved source \\<yourSCCMServer>\SMSPKGE$\ABC00014\    OSDSetupWindows    4/29/2010 7:45:34 PM    1576 (0x0628)
exitCode == 0, HRESULT=80004005 (e:\nts_sms_fre\sms\client\osdeployment\setupwindows\setupwindows.cpp,440)    OSDSetupWindows    4/29/2010 7:45:34 PM    1576 (0x0628)
Windows setup failed, code 31    OSDSetupWindows    4/29/2010 7:45:34 PM    1576 (0x0628)
setup.run(), HRESULT=80004005 (e:\nts_sms_fre\sms\client\osdeployment\setupwindows\setupwindows.cpp,1707)    OSDSetupWindows    4/29/2010 7:45:34 PM    1576 (0x0628)
Exiting with code 0x80004005    OSDSetupWindows    4/29/2010 7:45:34 PM    1576 (0x0628)
Process completed with exit code 2147500037    TSManager    4/29/2010 7:45:34 PM    1384 (0x0568)

——SMSTSLog—–

 

This error (error 31) could have multiple causes in my environment. I will summarize them below :

  • As I was deploying from OEM Media  kit ( Yes , I know , companies should have a volume license key ) , it could cause some issues as on the OEM Media there is no such thing as a Pid.txt where the product key is stored . OEM media uses the unique key that has been sticked under your pc/ Laptop
  • A badly written Unattend.xml , but as that xml has been used at other customers as well and posted on my blog , it seems unlikely .
  • The Product key mentioned in the Task Sequence . Checked it , no product key mentioned .This error usual happens though because you are using an MAK key when you should not be using any key during the TS — you can use the KMS client key (this is different than the KMS Server key you get from the MVLS site), but this is not required as your KMS client key is embedded in the OS source files in a file called pid.txt mentioned earlier.
  • Faulty Drivers ….

 

I eliminated very soon 2 of the 4 options and was left over with :

  • As I was deploying from OEM Media  kit ( Yes , I know , companies should have a volume license key ) , it could cause some issues as on the OEM Media there is no such thing as a Pid.txt where the product key is stored . OEM media uses the unique key that has been sticked under your pc/ Laptop
  • Faulty Drivers ….

 

Next step I have disabled the step “Auto apply drivers” and magically the setup continued …. That’s funny  , so it has to be a driver….

Now that I know my root cause , lets investigate. The fun part is that Configmgr has the possibility to disable drivers on an easy way.

After some testing it became clear that the “IDT High Definition Audio Codec” was giving me error 31 because it has been written very crappy !

Solution :

  1. Remove the driver from the database
  2. Create a software Package and launch the setup via Setup.exe in your Task Sequence .

 

It now works like a charm .

 

Hope it Helps ,

Kenny Buntinx

SCCM : Deploying Windows 7 on a VMware ESX environment ( howto )

3:13 pm in ConfigMgr, ConfigMgr 2007 R2, ConfigMgr SP2, configmgr2007, Drivers, Installation, OSD, sccm, SCCM 2007, SCCM 2007 R2, SCCM 2007 SP2, sccm2007, script, Vmware, Windows 7 by Kenny Buntinx [MVP]

Hi ,

Did you ever wanted to build a reference image of your physical workstations onto your VMware ESX environment ( yes , some customers have a firm grip on vmware …) so that people could play around ?

In my previous post , I explained already on how to perform this for Vmware workstation and the process isn’t that much different. see

http://scug.be/blogs/sccm/archive/2009/04/20/sccm2007-osd-customising-your-task-sequence-for-building-a-client-os-on-your-vmware-workstation-6-0-or-later.aspx

Well , I have a lot of customers demanding for this scenario as well and here is how you get started :

Prerequisite: Make sure that you have at least ESX 3.5 update 5 !

Step 1 : Download the drivers of the “Intel PRO Network adapter” from the Intel site ( www.intel.com)

Step 2 : Copy the drivers to a folder from the extracted VMware tools on your SCCM Primary server & import those drivers into the driver database . Make sure to assign a category to it .It could be perfectly VMware like in the example below.

 image

Step 3 : When done , alter your Windows 7 deployment task sequence and add a “auto apply driver step”

Step 4 : Limit the driver scope to the Vmware category earlier defined as shown below.When done , click OK.

image

Step 5 : Make sure that your settings in your VMware are representing the following settings.

For Windows 7 32 bit :

TRUVO-0020

For Windows 7 64 bit :

TRUVO-0021

Step 6 : Once done , you boot your machine in PXE and start staging . That’s it . However do not forget to add your VMWARE Tools into your tasksequence .

TRUVO-0019

Hope it Helps ,

Kenny Buntinx

SCCM 2007 : Best Practice importing drivers (Part 1) , creating a driver Package.

4:26 pm in AdminUi, ConfigMgr, ConfigMgr 2007, Drivers, OSD, sccm, SCCM 2007 by Kenny Buntinx [MVP]

Did you ever wonder what would be the required best practice steps on how to import new drivers in System Center Configuration Manager (SCCM), when building a new hardware model. Well I try to explain the steps to accomplish this in a few sections .

First a word about integrating drivers in SCCM

 

These instructions describes the process of integrating the drivers in to the OS deployment functionality. The approach for driver integration into OS deployment functionality:

– All drivers are integrated into driver packages per hardware model.

– Drivers Packages are created in the corresponding folder for each hardware model on the SCCM box.For example : “\\<Your Server>\Drivers\PC\SCCM_Driver_Packages\XP\<PC Model>”

– Drive source are created in the corresponding folder for each hardware model on the SCCM box.For example : “\\<Your Server>\Drivers\PC\_OriginalSources_\XP\<PC Model>”

Categorize the drivers needed for deployment

“Nice” drivers

Drivers that can be installed/imported using an INF file.

“Nice” drivers list for deployment:

These drivers are needed for OS deployment and are imported into one driver package per hardware type in SCCM for further use in the OS deployment task sequencer.

“Bad” drivers

Drivers that must be “installed” (setup.exe). This could be a Bluetooth driver, finger print reader software or even DVD software that is specific to a particular model type. Generally, this type of drivers are also called “Hardware based applications”.

A small example is the 4 in 1 Card reader drivers for Lenovo laptop R61.A software package will be created for deployment and used for further use in the OS deployment task sequencer.

 

Create a Driver Package for your specific hardware model (for nice drivers)

clip_image004 In this example we are creating a driver package for a “Lenovo R61”

I. Open your “Windows Explorer”

II. Go to “\\<Your server>\Drivers\PC\SCCM_Driver_Packages\XP\”

III. Create a sub-folder that is representing your hardware model , in this case “R61–8935CTO”.

clip_image006.

IV. In the ConfigMgr console, expand ”Site Database

V. Expand Computer Management in the left pane.

VI. expand the “Operating system deployment” and Click “Driver Packages

VII. Navigate to the sub-folder [PC]

VIII. Right click on the “[PC]” folder and select “New” -> “Driver Package

clip_image008

IX. New Driver Package wizard starts:

· Give your new driver package a unique name that represents your hardware model & version.

· Fill out the commenting window as shown below , but adapt to your HW model.

· In the Driver Package Source , you must fill in the UNC path to your earlier created folder on the SCCM primary server. The UNC path in this case will be “\\<your Server>\Drivers\PC\SCCM Driver_Packages\XP\R61-8935CTO”.

· Note that this is not the drivers source but the working directory for Configuration Manager when to add drivers to the “Driver Package” !

clip_image010

X. Click Ok

XI. Expand the “Operating system deployment” and expand “Driver Packages” .Expand the driver package you just created for OS deployment and select “Distribution Points”.

clip_image012

XII. Right click the “Distribution Points” folder. In the right click context menu you will see “New Distribution Point”. The following screen will appear and select “Next” on the Welcome screen.

clip_image014

XIII. Select the appropriate Distribution Point(s) where you want your package to be copied and click “Next” , but NEVER select the SMSPXEIMAGE$ distribution point !

clip_image016

XIV. Click “Close” on “completion” page.

clip_image018

XV. Your SCCM driver package is now ready to be integrated with imported drivers from the database.

 

For the Part 2 , I will show you on how Import a Single driver into the SCCM database !

 

Hope it helps ,

 

Kenny Buntinx.