Dell BIOS Upgrades for Enterprise Clients with Microsoft System Center Configuration Manager 2007

OS and Applications

OS and Applications
Dell OS and Applications Solutions on Dell TechCenter - Project Sputnik, Microsoft Windows, Red Hat Linux, SUSE, Ubuntu, and more

OS and Applications - Wiki

Dell BIOS Upgrades for Enterprise Clients with Microsoft System Center Configuration Manager 2007

OS and Applications - Wiki

BIOS upgrades can be a vital part of any OS migration. With the Microsoft® Vista OS there are required hardware features and attributes that may need to be upgraded to have a fully compatible install. This article demonstrates a practical means for getting Dell™ OptiPlex™, Dell Latitude™, and Dell Precision™ enterprise-class systems upgraded to the latest BIOS version using simple scripts and Microsoft System Center Configuration Manager (SCCM) 2007.

All Dell BIOS upgrades for enterprise-class systems can be executed within the Microsoft Windows® OS. The Dell-provided installer temporarily loads a device driver on the fly and injects the new firmware into a reserved memory space on the motherboard. A token is also modified in the BIOS that configures the BIOS to apply the firmware on the next reboot. The installer then forces a reboot. The sample script contained in this document demonstrates the logic of applying the correct BIOS revision installer for specific models. This demonstration is targeted specifically to large corporate customers who are intimately familiar with using and supporting Microsoft SCCM.


Assumptions

A BIOS upgrade is a fundamental change in the hardware. These changes should be deployed only if there is a specific issue in the environment that is explicitly fixed by the newer BIOS revision. It must also be restated that this scenario is intended for enterprise-class client systems, and not consumer-class systems.

These scripts are being provided as a demonstration for adding value onto what is provided and supported by Dell. While a best effort is being made to give you the building blocks for your own environment, these scripts are not part of Dell’s supported services.

A BIOS upgrade occurs outside of the OS, and therefore a reboot is necessary to perform the upgrade. Reboots can cause downtime for end users unless they are scheduled around their business processes. It is essential that end users be notified of any impending reboots.

Testing should be performed on all aspects of this deployment before rolling it out to your production systems:

  • Older BIOS revisions for each model should be tested to assure success across all previous versions.
  • Test the upgrade on battery power; it should not allow it.
  • Verify the original issue is fixed by the successful upgrade.

Gathering Information and BIOS Installers

Using a Microsoft SCCM Web Report (SQL query), Dell models and corresponding BIOS revisions in your environment can be determined. This report can be helpful for gauging the scope of your targets:

SELECT CompSys.Manufacturer0 as 'OEM', CompSys.model0 as 'Model',BIOS.SMBIOSBIOSVERSION0 as 'BIOSVersion', COUNT(Sys.Resourceid) AS 'TotalSystems'
FROM V_R_System as Sys
LEFT JOIN V_GS_PC_BIOS as BIOS on Sys.resourceid = BIOS.resourceid
LEFT JOIN V_GS_COMPUTER_SYSTEM as CompSys on Sys.resourceid = CompSys.resourceid
WHERE
CompSys.Manufacturer0 LIKE '%dell%'
AND (CompSys.Model0 LIKE '%optiplex%'
OR CompSys.Model0 LIKE '%latitude%'
OR CompSys.Model0 LIKE '%precision%')
GROUP BY CompSys.Manufacturer0,CompSys.model0, BIOS.SMBIOSBIOSVersion0
ORDER BY CompSys.Model0, BIOS.SMBIOSBIOSVersion0

After obtaining a list of the models that need remediation, download the installers from support.dell.com.

Method 1

Use the model-specific menus for downloads to find the latest BIOS version.


GetBIOSInstaller1

Method 2

Browse the Dell FTP site and grab the installers.

ftp://ftp.dell.com/bios/

For the Dell OptiPlex 755, the following are found:

  • O755-A01.exe
  • O755-A04.exe
  • O755-A05.exe
  • O755-A07.exe
  • O755-A08.exe
  • O755-A09.exe (this A09 is the current BIOS)

Customizing the Script

The included sample Visual Basic script can be customized for specific environments by adding or removing the logic for the models that are available in the environment, which can be accomplished within the Select statement. Match up the downloaded installer .exe name with the proper version.

Disclaimer: You are required to modify this sample script for your specific environment; this script must be updated after a new BIOS upgrade is released.

DellBIOSUpgdEndUser.vbs

' DELL BIOS UPGRADES
' Dell Inc 2008
' For new BIOS revisions you can download them from ftp.dell.com/bios
' Or for individual systems use the download menus on support.dell.com
' Modify the Case statement below to reflect newer revisions
On Error Resume Next
DlgTitle = "IT Department"
Set WshShell = CreateObject("Wscript.Shell")
Set WshNet = CreateObject("Wscript.Network")
PathToScript = Left(WScript.ScriptFullName,(Len(WScript.ScriptFullName) - (Len(WScript.ScriptName) + 1)))
CompName = WshNet.ComputerName
Set objLocator = CreateObject("WbemScripting.SWbemLocator")
Set wmi = objLocator.ConnectServer(CompName, "root\cimv2",,,,,128)
For Each Instance in wmi.ExecQuery("Select * From Win32_ComputerSystem",,48)
Model = Instance.Model
Next
For Each Instance in wmi.ExecQuery("Select * From Win32_SystemEnclosure",,48)
ServTag = Instance.serialnumber
Next
For Each Instance in wmi.ExecQuery("Select * From Win32_Bios",,48)
BIOSRev = Instance.SMBIOSBIOSVersion
Next
Model = Trim(Model)
Select Case Model
Case "Latitude D420" : ExeToRun = "D420_A06.EXE" : NewBIOSVersion="A06"
Case "Latitude D430" : ExeToRun = "D430_A05.EXE" : NewBIOSVersion="A05"
Case "Latitude D520" : ExeToRun = "D520_A06.EXE" : NewBIOSVersion="A06"
Case "Latitude D530" : ExeToRun = "D530_A04.EXE" : NewBIOSVersion="A04"
Case "Latitude D531" : ExeToRun = "A04_D531.EXE" : NewBIOSVersion="A04"
Case "Latitude D620" : ExeToRun = "D620_A09.EXE" : NewBIOSVersion="A09"
Case "Latitude D630" : ExeToRun = "D630_A08.EXE" : NewBIOSVersion="A08"
Case "Latitude D820" : ExeToRun = "D820_A08.EXE" : NewBIOSVersion="A08"
Case "Latitude D830" : ExeToRun = "D830_A10.exe" : NewBIOSVersion="A10"
Case "Latitude XT" : ExeToRun = "DXT_A02.EXE" : NewBIOSVersion="A02"
Case "OptiPlex GX280" : ExeToRun = "GX280A08.exe" : NewBIOSVersion="A08"
Case "OptiPlex SX280" : ExeToRun = "SX280A09.exe" : NewBIOSVersion="A09"
Case "OptiPlex GX520" : ExeToRun = "A11GX620.exe" : NewBIOSVersion="A11"
Case "OptiPlex GX620" : ExeToRun = "A11GX620.exe" : NewBIOSVersion="A11"
Case "OptiPlex 320" : ExeToRun = "O320-0101011.EXE" : NewBIOSVersion="1.1.11"
Case "OptiPlex 330" : ExeToRun = "O330-A03.EXE" : NewBIOSVersion="A03"
Case "OptiPlex 740" : ExeToRun = "O740-2012.EXE" : NewBIOSVersion="2.0.12"
Case "OptiPlex 745" : ExeToRun = "o745-020601.exe" : NewBIOSVersion="2.6.1"
Case "OptiPlex 755" : ExeToRun = "O755-A09.EXE" : NewBIOSVersion="A09"
Case "Precision M2300" : ExeToRun = "M2300A04.EXE" : NewBIOSVersion="A04"
Case "Precision M4300" : ExeToRun = "M4300A09.EXE" : NewBIOSVersion="A09"
Case "Precision M6300" : ExeToRun = "M6300A08.EXE" : NewBIOSVersion="A08"
Case "Precision WorkStation 340" : ExeToRun = "WS340A07.EXE" : NewBIOSVersion="A07"
Case "Precision WorkStation 650" : ExeToRun = "WS650A05.EXE" : NewBIOSVersion="A05"
Case "Precision WorkStation 670" : ExeToRun = "WS670A07.EXE" : NewBIOSVersion="A07"
Case "Precision WorkStation 690" : ExeToRun = "WS690A07.EXE" : NewBIOSVersion="A07"
Case "Precision WorkStation T3400" : ExeToRun = "WST34A03.EXE" : NewBIOSVersion="A03"
Case "Precision WorkStation T5400" : ExeToRun = "T5400A01.EXE" : NewBIOSVersion="A01"
Case "Precision WorkStation T7400" : ExeToRun = "T7400A01.EXE" : NewBIOSVersion="A01"
Case Else : ExeToRun = "NA"
End Select
If ExeToRun = "NA" Then
MsgBox "We do not currently provide a BIOS upgrade for a " & Model & vbcrlf & vbcrlf & "If this is an older model system, please excess the equipment.",0,DlgTitle
Wscript.Quit(1)
ElseIf BIOSRev = NewBIOSVersion Then
MsgBox "The current BIOS[" & BIOSRev & "] for this " & Model & " is up-to-date and does not require an upgrade.",0,DlgTitle
Wscript.Quit(1)
End If
ExeStr = PathToScript & "\" & ExeToRun WshShell.Run Chr(34) & ExeStr & Chr(34), 1, False
Wscript.Quit(0)

Putting Together the Package

In the Microsoft SCCM Package source directory, copy the custom, edited VBscript and all the associated current BIOS installers that were previously downloaded. Set the package to download to cache, and call the script with the following command line:

Wscript.exe DellBIOSUpgdEndUser.vbs

This sample script presents the end user with a variety of dialogs that they must take action on. Therefore, deploy this at a time when you are sure that the end user is present at the system, which can be determined in Run Advertised Programs within SCCM, or you can make it mandatory.

We have provided a sample MOF file to import these package properties.

Note: Modify the MOF before importing it and change the SCCM Site Server and source directory. It is also necessary after the import to look over the Package and Program properties to verify that those objects conform to your deployment standards. This MOF is a sample and is not production ready!

Deployment Options

For the target systems create a specific collection of only those systems that need an upgrade based on hardware attributes. This collection can assist in making sure that you do not deploy to systems that are not eligible for an upgrade. We have provided a sample MOF file that you can import into SMS to create the collection rules using mofcomp.

Note: Modify the SCCM Site Server UNC in the MOF before importing it. After the MOF import, go into the collection queries and modify the various revisions since newer BIOS upgrades will likely have been released since the document was published.

There are also options for making the deployment silent with a forced reboot or skipping the reboot. If you choose to customize with these options, beware of the following issues:

  • The BIOS will not upgrade without the reboot; the installer simply loads the image file into memory and waits for the reboot.
  • If a system goes into a low-power state, such as sleep or hibernate, then the memory space where the upgrade image is stored will be erased, and the end user will get an error when it eventually reboots. There is no harm done, but the error message may cause calls into your help desk and the BIOS upgrades will not have taken place.
  • The silent forced reboot option is very quick and does not give the user any option to save data. It does not provide a countdown or cancel option.

The optional switches for the BIOS installers are listed here:

NOPAUSERun without user prompts. ·
NOREBOOTDoes not reboot the system when flashing is completed.

  • Example 1:
D620_A09.EXE -NOREBOOT –NOPAUSE

Completely silent and no reboot; a reboot must occur to upgrade.

  • Example 2:
D620_A09.EXE –NOPAUSE

Completely silent and includes a forced reboot.

Dennis Abbott
Dell IT

If you have questions or comments, feel free to begin a discussion thread below.

Comments
  • Is there a switch to supply the BIOS password to the command when running with the -NOPAUSE option?

  • The next to the last line in the VBS script is wrong.

    It reads:

    ExeStr = PathToScript & "\" & ExeToRun WshShell.Run Chr(34) & ExeStr & Chr(34), 1, False

    This will always give you an "Unexpected end of line" error, causing the script to fail.

    It is actually two lines:

    ExeStr = PathToScript & "\" & ExeToRun

    WshShell.Run Chr(34) & ExeStr & Chr(34), 1, False

    Splitting the line into two lines corrects the problem.

    The -NOPAUSE and -NOREBOOT switch can be added to the second line for silent deployment:

    WshShell.Run Chr(34) & ExeStr & Chr(34) & "-NOPAUSE" & Chr(34), 1, False

    -or-

    WshShell.Run Chr(34) & ExeStr & Chr(34) & "-NOREBOOT -NOPAUSE" & Chr(34), 1, False

    Unfortunately, I don't know VBscript that well and it took me a while to figure it out. Dell should have corrected the script before publishing the article becaus there are some people that will attempt use it that do not know VBscript at all and thier BIOS deployments will fail all the time.

    Just my observation.

    R. Shaw

  • Looks like they change some options you can run w/ /? to get a list of available switches.