Life of a techno-guru
Monday, July 31, 2006
  Deploying a BIOS Update to Dell Systems
DISCLAIMER: I am in no way responsible for any damage to any system cause by following the instructions in this article. This is purely informational and should only be used by trained Systems Administrators well-versed in both computer hardware and software. Your actions, your responsibilities. :-)

Introduction

So, if you're a Systems/Network Administrator, a Desktop Admin, or maybe even part of a smaller helpdesk staff, you may be familiar with the task of BIOS upgrades. BIOS upgrades have been a pesky task, often because there hasn't been a method of upgrading large numbers of systems simultaneously, or at least automatically. What I'm going to show you today is how you can use a few simple components to update the firmware on any number of Dell Systems automatically. For simplicity's sake, I'm not going to go into the details of how to actually deploy a script, because that's ultimately up to you, although I'll leave a couple of recommendations for how you could do it.

My Situation

In my particular case, I have approximately 550 client computers needing BIOS upgrades, which consist of a variety of Dell Optiplex GX270 and GX280 small form-factor (SFF) desktops; Most of them are the older 270's. This morning, I happened to notice that on 7/21/2006, Dell released a new revision of the GX270's firmware. This prompted me to investigate some method of deploying the BIOS update, especially since I've come across this situation before, but haven't had the brains to find a real resolution to it; That said, Dell's Support department didn't exactly help that much ... despite a couple calls placed this morning, I ended up telling both technicians I spoke to how to do it in the end. One of them didn't even know what Dell OpenManage was before I told him about it ... *yikes*

What You Need

You really don't need much to complete this seemingly onerous task. Within about the next 15 minutes, I'll bet you have a pretty good idea in mind of how to approach this. The four things you need to mass-update your desktop computer's firmware are:
Armed with these four tools, you'll be able to get your entire network up-to-date in no time. Now that we know what we need ahead of time, let's get down to the grindstone and make things happen!

How It Works


The basic process is going to look something like this:
  1. Deploy the OMCI to all client machines (no reboot required)
  2. Extract the ever so valuable HDR file from the BIOS update executable
  3. Whip up a quick script that uses the OMCI's WMI provider to flash the BIOS
  4. Deploy the script
Deploying the OMCI

Deploying Dell's OMCI is pretty simple. You'll want to download the latest version of the client for your system from http://support.dell.com. As of this writing, the most current version if v7.3. After unpacking the file you download from Dell Support, you'll be left with a setup.exe and a couple other files. Setup.exe is the one we want from here; You'll want to run this from the command-line on each computer you want to install the OMCI on: "setup.exe /s /v/qn". This will instruct setup.exe to execute silently, and will pass the /qn CLI parameters to msiexec.exe which instruct it to operate quietly with no user interface. Once you get this packaged up, here's a few methods you could use to deploy it:
Extracting the HDR File

Since we are using the OMCI to install the BIOS update, we can't pass the executable file to it, we have to give it an HDR file. If you're using a Windows computer to extract the HDR file, open a command prompt, cd to the folder where the BIOS executable resides, and run the following command: " -writehdrfile" minus the quotes. If you're running a Linux system, Dell has some instructions on how to extract the HDR file from the executable. I'm assuming that most of you will have a Windows workstation available to do these operations on. Now that we've got the HDR file, put it on a network share accessible to your clients (eg. \\server\ITshare), and then let's look at how to create a script to install the new update.

Write a Quick Script

Well, when I said whip up a script earlier on, I really meant it; This script will be 2 lines long and will perform the task of updating the machine's BIOS. First, a little bit of background; The Dell OMCI actually isn't much more than a WMI provider that exposes quite a bit of information and functionality to the WMI service. Once installed though, it started popping up a bunch of messages at me about chassis intrusion, but how to disable those dumb notifications is beyond the scope of this article. Basically, our script will connect to the newly installed namespace (root\dellomci), grab the Dell_Configuration class, and call the FlashBios static method (more on static classes/members), passing it the path to the HDR file as its only parameter, to finally update the system's BIOS. Without further to do, here we go:

set dellconf = GetObject("winmgmts:root\dellomci:Dell_Configuration)
dellconf.FlashBIOS("\\server\ITshare\gx270.hdr")

Yep, that's it. This is what you'll want to run on the systems you want to update with this BIOS version. Pretty simple script isn't it? If you want to investigate more functionality in the OMCI, I encourage you to use the wbemtest utility provided by Microsoft in Windows XP and connect to the root\dellomci namespace. Choose Enum Classes --> Recursive --> OK for a full list of classes in this namespace.

Deploying Your Script

Well, now that we have all the pieces together, we can finally deploy the script to our clients. Again, we can use similar methods as above to deploy the script:
Once you've decided on one of these methods to deploy your script, you should be good to go.

Conclusion

Well, I hope this short tutorial has provided some insight to someone out there. I took the time to write this guide because my own attempts to locate information regarding BIOS deployment failed pitifully. I couldn't really find any firm answers to many of my questions, especially about using OpenManage IT Assistant to send out the firmware updates. No one at Dell could give me straight answers, and no one knew how all the pieces fit together properly. My initial attempts to resolve this predicament began a little over a year ago, but I gave up trying to find information on it. After learning about scripting, WMI, and other general computing concepts, I was finally able to gather the pieces myself and make everything work the way I wanted it to. If anyone would like to ask questions about this tutorial, or about WSH scripting, WMI, or related technologies, I'd love to hear them. Please feel free to e-mail me at pcNOSPAMgeek101 at gmail.com. Until next time ....

Trevor Sullivan
 
Comments:
This guide saved my butt. I was trying to run the updates using the .EXE files and /NOPAUSE, but that doesn't work in our environment with BIOS passwords. This does.
 
Bravo! this guide/tutorial is a 5 start, well done, helped me a lot.
I did this and tried to push it with SCCM

set dellconf = GetObject("winmgmts:root\dellomci:Dell_Configuration)
dellconf.FlashBIOS("\\server\ITshare\gx270.hdr")

BTW you are missing a " after Dell_Configuration

The problem I have now is that it prompt the user if it want to update BIOS now and gives 60 seconds, if nothing is chosen it reboots, and I cannot do that on 300 machine because users will lose the work. Any known parameters to do the BIOS update after a reboot and not force one?

Thanks a lot
 
5 star... sorry not 5 start :s
 
Very nice. Thank you. This is very useful indeed.
 
Post a Comment



<< Home
My life of learning various things about technology including network administration, development, and 3D design

Name:
Location: Chicago, Illinois, United States
ARCHIVES
January 2006 / February 2006 / March 2006 / May 2006 / June 2006 / July 2006 / August 2006 / September 2006 / October 2006 / November 2006 / December 2006 / January 2007 / February 2007 / March 2007 / April 2007 / May 2007 / June 2007 / August 2007 / December 2007 / January 2008 / March 2008 / April 2008 / June 2008 / July 2008 / September 2008 / December 2008 / January 2009 / February 2009 / March 2009 / May 2009 /


Powered by Blogger