Skip to content
David Hill edited this page Jul 29, 2013 · 1 revision

dellflash is an lkm plus flash utility enabling OpenBSD to flash the BIOS of Dell computers. It is released under the ISC license.

The README file contains all the documentation and is reproduced here for convenience.

$dellflash: README,v 1.8 2011/01/10 16:05:31 marco Exp $

THIS TOOL IS FOR USER CONVENIENCE ONLY.  IT IS NOT WRITTEN BY DELL AND ALL
RESPONSIBILITY LAYS WITH THE USER.  IF YOU BRICK YOUR BOX YOU OWN IT. DO NOT
BLAME ANYONE BUT YOURSELF.  WHEN IN DOUBT DON'T USE IT.  REALLY DON'T USE IT.

Read these instruction IN FULL before proceeding.

Boot the machine into securelevel -1 (set in /etc/rc.securelevel)

Ensure that there is a fresh kernel source checked out on the build machine.

Change into the dellflash directory and as root run the following commands:
make
make load
flashit/flashit pv1950_2.6.1.hdr
reboot

In this example it will load the Dell PowerEdge 1950 to BIOS 2.6.1 flash
image into memory.  Upon reboot the server will flash the BIOS.

Remember to set securelevel back to its normal value!

There are several ways to obtain the BIOS hdr files.
1. http://linux.dell.com/repo/firmware/bios-hdrs/
        this require one to match the BIOS to product ID.  For example
        pcidump -v | grep 1028
                0x002c: Subsystem Vendor ID: 1028 Product ID: 024f
        then find the .hdr directory with 0x024f and download bios.hdr
        Note: this repository isn't always up to date!

2. Download the .exe BIOS update for windows from support.dell.com and from
        a windows box run it like:
        PE1950_BIOS_WIN_2.6.1.exe /s /e=2.6.1
        then in the 2.6.1 directory find the .hdr file (might be in a payload
        directory as well)
        - or -
        laptops or desktops sometimes can be run like:
        E6500A16.EXE /writehdrfile
        in this example the executable writes E6500A16.hdr
        - or -
        install dosbox: pkg_add dosbox
        run it by simply typing: dosbox
        mount the directory where you downloaded the .EXE file, for example:
        mount c /tmp
        goto new mounted drive by typing: C:
        then you can run the same command as above: E6500A16.EXE /writehdrfile
        after the command completes the HDR file is in the directory

3. Download the .BIN BIOS update for linux from support.dell.com and on any
        machine edit the file in your favorite (NON WINDOWS!!) editor.
        Find the line that reads: #####Startofpackage#####^M
        and delete everything, including that line, in front of it.  Write
        the remaining file with a .tgz extension.
        Untar the tgz file that was generated and go find the .hdr file which
        again might be in a payload directory.

Example

File:Dosbox.png

The following steps illustrate a sample bios upgrade procedure:

$ cd /tmp/                                                                                                                                                                   
$ ftp http://opensource.conformal.com/snapshots/dellflash/dellflash-0.2.tgz
Trying 10.137.0.23...
Requesting http://opensource.conformal.com/snapshots/dellflash/dellflash-0.2.tgz
100% |*****************************************************|  4796       00:00    
4796 bytes received in 0.00 seconds (2.59 MB/s)
$ tar zxvf dellflash-0.2.tgz                                                                                                                                                 
dellflash-0.2
dellflash-0.2/flashit
dellflash-0.2/flashit/Makefile
dellflash-0.2/flashit/flashit.c
dellflash-0.2/Makefile
dellflash-0.2/README
dellflash-0.2/module
dellflash-0.2/module/Makefile
dellflash-0.2/module/biosmod.c
dellflash-0.2/module/biosmod.h
$ cd dellflash-0.2                                                                                                                                                           
$ ls -la
total 28
drwxr-xr-x  4 marco  wheel   512 Jan 10 10:09 .
drwxrwxrwt  9 root   wheel   512 Jan 10 10:28 ..
-rw-r--r--  1 marco  wheel   149 Nov 17  2009 Makefile
-rw-r--r--  1 marco  wheel  2283 Jan 10 10:05 README
drwxr-xr-x  2 marco  wheel   512 Jan 10 10:09 flashit
drwxr-xr-x  2 marco  wheel   512 Jan 10 10:09 module
$ make 
===> module
cc -O2 -pipe  -fPIC -fno-builtin -D_KERNEL -I/sys  -c biosmod.c
===> flashit
cc -O2 -pipe  -Wall -Werror   -c flashit.c
cc   -o flashit flashit.o 
$ sudo make load
===> module
modload -o biosmod -ebiosmod biosmod.o
Module loaded as ID 0
===> flashit
$ sudo ./flashit/flashit /tmp/E6500A24.HDR
$ sudo /sbin/reboot
In order to abort the flash process one has to unload the LKM like so:
$ sudo make unload
===> module
modunload -n biosmod
===> flashit

Dell Flash Resources

  • Snapshots
  • Mailing lists
    • dellflash-commits
      • subscribe: email dellflash-commits+subscribe at opensource.conformal.com
      • unsubscribe: email dellflash-commits+unsubscribe at opensource.conformal.com
Clone this wiki locally