ConfigMgr 2007: Dell Latitude E6400 laptop may hang during Windows XP Mini-Setup

Here's an issue that Frank Rojas saw the other.  This particular issue involved a Dell E6400 but I thought it was worth a post because the same troubleshooting technique could be used for similar issues with other hardware as well:


Issue: When deploying a Windows XP image to a Dell Latitude E6400 laptop using a ConfigMgr 2007 OSD Task Sequence, it may deploy the image properly, however when the Dell Latitude E6400 laptop boots into Windows XP Mini-Setup, Mini-Setup eventually freezes and does not proceed.

The SMSTS.log will not show any errors indicating what the problem is. Inspecting the setupapi.log taken from the client PC will show the following lines as the last lines in the log:

#-019 Searching for hardware ID(s): acpi\pnp0c0a,*pnp0c0a
#-198 Command line processed: C:\Windows\system32\services.exe -setup
#I022 Found "ACPI\pnp0C0A" in C:\Windows\inf\battery.inf; Device: "Microsoft ACPI-Compliant Control Method Battery"; Driver: "Microsoft ACPI-Compliant Control Method Battery"; Provider: "Microsoft"; Mfg: "Microsoft"; Section name: "CmBatt_Inst".
#I023 Actual install section: [CmBatt_Inst]. Rank: 0x00000000. Effective driver date: 07/01/2001.
#-166 Device install function: DIF_SELECTBESTCOMPATDRV.
#I063 Selected driver installs from section [CmBatt_Inst] in "c:\Windows\inf\battery.inf".
#I320 Class GUID of device remains: {72631E54-78A4-11D0-BCF7-00AA00B7B32A}.
#I060 Set selected driver.
#I058 Selected best compatible driver.
#-166 Device install function: DIF_INSTALLDEVICEFILES.
#I124 Doing copy-only install of "ACPI\PNP0C0A\1".
#-166 Device install function: DIF_REGISTER_COINSTALLERS.
#I056 Coinstallers registered.
#-166 Device install function: DIF_INSTALLINTERFACES.
#-011 Installing section [CmBatt_Inst.Interfaces] from "c:\Windows\inf\battery.inf".
#I054 Interfaces installed.
#-166 Device install function: DIF_INSTALLDEVICE.
#I123 Doing full install of "ACPI\PNP0C0A\1".
#I121 Device install of "ACPI\PNP0C0A\1" finished successfully.

Note: The problem may also happen when trying to deploy a Windows XP image to a Dell Latitude E6400 laptop using other deployment technologies, including Microsoft Business Desktop Deployment (BDD)

Cause: It appears that when Windows XP tries to load the battery drivers for the Dell Latitude E6400 laptop using the battery.inf file from the C:\Windows\INF folder, it hangs the installation.

Resolution: There are a few workarounds to the problem:

1) Remove the battery from the laptop during deployment. Doing so will have Windows XP Mini-Setup not try to detect the battery so Mini-Setup will not hang. While this works, this solution is not the most ideal.

2) Build the reference image on a Dell Latitude E6400 laptop. By building the reference image on a Dell Latitude E6400 laptop, the battery.inf driver installation no longer causes Windows XP Mini-Setup to hang. However, this solution seems to work only in some situations. In testing, the reference image built on the laptop fixed the Windows XP Mini-Setup hang issues and it also worked on most other model PCs, but it did fail on others. Your results may vary depending on your environment and what make/model PCs you have.

3) Install the battery driver within Windows XP instead of during Windows XP Mini-Setup. If using a Task Sequence in either SCCM 2007 OSD, BDD, or MDT to deploy the Windows XP image, you can add tasks into the Task Sequence which forces the battery to be installed while in Windows XP instead of during Windows XP Mini-Setup. The installation of the battery drivers seems to succeed while in Windows XP. It only seems to fail while in Windows XP Mini-Setup. To do this follow these steps:

a) Add a "Run Command Line" task that renames the battery.inf in the Windows\INF folder at some point in the Task Sequence while it is still in WinPE, but after it has dropped down the Windows XP WIM image using the "Apply Operating System Image" (SCCM 2007) or "Install Operating System" (BDD/MDT) tasks. For example, the command line for the "Run Command Line" would be:

rename %DeploySystemDrive%\Windows\INF\battery.inf battery.inf.tmp

b) Add a "Run Command Line" task at some point in the Task Sequence after it has completed Windows XP Mini-Setup and while it is in Windows XP that renames the file back to battery.inf. The command line for the "Run Command Line" should be:

rename %windir%\INF\battery.inf.tmp battery.inf

c) Download the Microsoft DEVCON.exe utility as documented in KB311272 from:  This utility allows the installation of devices from the command line by using the following command line:

devcon install INFfile HardwareID

d) In SCCM/MDT/BDD, create a Package/Application that contains the DEVCON.exe program file. For MDT/BDD, set the command line as:

copy devcon.exe %windir%\system32 /Y

For SCCM 2007, after creating the package, create a program with the command line:

copy devcon.exe %windir%\system32 /Y

e) Add an "Install Software" task (SCCM 2007) or an "Install Application" (MDT/BDD) task immediately after the "Run Command Line" task from step b that runs the package/program created in step d.

f) Add a "Run Command Line" task in the Task Sequence immediately after the "Install Software"/"Install Application" task from step e which initiates the installation of the battery drivers using devcon.exe while in Windows XP.  For example, to install the battery on the Dell Latitude E6400 laptop, set the command line to:

devcon install "%windir%\inf\battery.inf" ACPI\PNP0C0A\1


Like I said, even though this issue mentions one specific laptop, the same troubleshooting procedure and resolution method can be used in a wide variety of situations where you see a driver causing an issue during mini-setup.  Thanks Frank!

J.C. Hornbeck | Manageability Knowledge Engineer