DellBIOS

Introduction

BIOS update utilities and files are often provided as .exe files. The BIOS updates work by booting the machine into DOS using a USB or floppy (FreeDOS or MS-DOS) and then running an executable to reflash the BIOS.

This guide provides information for Dell users to use such files without using Windows.

Checking your current BIOS version

The current BIOS version can be checked by this command from Ubuntu:

sudo dmidecode -s bios-version

The current BIOS release date can be obtained by invoking:

sudo dmidecode -s bios-release-date

Upgrading the BIOS and hardware firmware for PowerEdge servers

CentOS

One of the easiest methods requiring no server configuration is to upgrade PowerEdge servers via booting into a CentOS 7.0 x64 live environment (USB is faster but one may want to use CD/DVD due to a limited number of USB ports), load the firmware BIN files onto a FAT32 USB drive, execute the following in a terminal to find the path to the USB drive, and launch the .BIN extension firmware file:

df -h
sudo bash FILENAME.BIN

This is how the files were developed assuming one is using Red Hat. As well, while one of the files tested worked by default in Ubuntu (ex. firmware update for Broadcom BCM5720 NetXtreme Gigabit Ethernet Adapter), running the .BIN file for the iDRAC firmware initially complained of missing packages (ex. rpm, stty, gzip, among others) despite gzip being confirmed installed. Installed rpm, executed the .BIN file and this caused the server to start to reboot and then hang, which after a hard shutdown, and booting into the Lifecycle Controller the firmware was not upgraded. However, the same .BIN file worked flawlessly in CentOS.

Dell OpenManage Ubuntu Repository

For more on this, please see http://linux.dell.com/repo/community/ubuntu/.

Upgrading with a FreeDOS USB drive

Follow the directions here to create a FreeDOS USB drive: http://chtaube.eu/computers/freedos/bootable-usb/

After you've done that:

1. Eject the USB drive, then re-insert it so you can see the new FreeDOS file system.

2. Copy your BIOS update file to the drive.

3. Reboot, press F12 for the one-time boot menu, and boot from the USB Storage Device.

4. Choose "fdos".

5. Choose "4 - Load FreeDOS without drivers."

6. Execute the BIOS update.

Using WINE to extract the BIOS image for a Dell Inspiron 1525

sudo apt-get install firmware-addon-dell libsmbios-bin wine
update_firmware
sudo modprobe dell_rbu

Check your BIOS version number:

sudo dmidecode -s bios-version

Download the BIOS update .exe from Dell's support site, then run:

wine 1525_A17.EXE  -writehdrfile -nopause

Check it outputs a .hdr file:

ls *.hdr

Then use this file:

sudo dellBiosUpdate -u -f 1525_A17.hdr

Reboot:

sudo reboot now

One should see a BIOS update screen. Please ensure you do not restart, or lose power during this process. Once it reboots automatically, one may see if it took via:

sudo smbios-sys-info

Updating the BIOS by booting into firmware directly

1. Obtain the appropriate BIOS .EXE file for your computer from http://support.dell.com (search under "drivers & downloads"). Download it to your hard drive. In this example we'll use the filename I545-A12.EXE but it will be different for you if you have a different Dell model (or a newer BIOS revision).

2. We need to create a 2.88MB "floppy" disk image (1.44MB is too small for the uncompressed BIOS code) and mount it. Note that FreeDOS doesn't provide an 'empty' 2.88MB boot disk so we need to delete the "fdos" utility folder to get space. We'll need to obtain a FreeDOS disk image and mount it:

wget http://www.fdos.org/bootdisks/autogen/FDSTD.288.gz
gunzip FDOEM.288.gz
mkdir /tmp/floppy
sudo mount -t vfat -o loop,quiet,umask=000 FDSTD.288 /tmp/floppy
rm -rf /tmp/floppy/fdos

Note that that last step is crucial to free up sufficient space on the "floppy".

3. Next we need to install dosemu (a DOS emulator) so we can extract the BIOS files from the Dell installer but with unlimited diskspace:

sudo apt-get install dosemu
dosemu

You should get a window pop up that looks like DOS with the C drive active. What you are actually seeing is a dosemu 'virtual' drive, who's actual location on your Ubuntu system is ~/.dosemu/drive_c

4. Copy the .exe file to your dosemu "C" drive:

cp I545-A12.EXE ~/.dosemu/drive_c

5. Back in the dosemu window, type:

dir

and confirm that the BIOS update's .EXE file is there.

6. Type the name of the BIOS file (e.g. I545-A12) and hit return to start it up. You should see a 'Copyright (c) Foxconn LTD 2001-2007...' message and importantly messages 'Decompress the exe file' and 'Decompress the bin file'. Unfortunately, you'll also notice that it ends with an error message and 'ALL Files removed!' at the bottom. So this is where you need to get quick with your fingers, because we need to get those files before they disappear!

Run the BIOS upgrade file again in the DOS box, and wait until it says 'Begin to check the bin file'. Immediately press Ctrl-C on the keyboard to cancel and exit the program before it fails and erases the files we need. Make sure the files you need are there by typing:

dir

If you don't see files named something like AFU877.EXE (probably the same for everyone) and 8A1D1P34.BIN (probably different for everyone), you hit Ctrl-C a moment too late. Just re-run the original .EXE file and try to kill it at the right moment. The .BIN file should be around 1-2MB in size, depending on the BIOS.

7. Copy the files to your "floppy" drive image:

cp ~/.dosemu/drive_c/afu877.exe /tmp/floppy
cp ~/.dosemu/drive_c/8a1d1p34.bin /tmp/floppy

8. That's it for the DOS stuff so you can close the DOS box down. Now to tidy up and prepare to run the update:

sudo umount /tmp/floppy
sudo mv FDSTD.288 /boot/biosupdate.img
sudo apt-get install syslinux
sudo cp /usr/lib/syslinux/memdisk /boot/

9. You now need to add the biosupdate boot image to your grub (system boot) menu. You can do this from the command line like this:

sudo cat >> /etc/grub.d/40_custom
menuentry 'Dell BIOS Flash Updater' {
set root='(hd0,msdos1)'
linux16 /boot/memdisk
initrd16 /boot/biosupdate.img
}

10. Press Ctrl-D to save your changes to that file.

11. Restart your computer. As soon as it starts to boot from the hard drive, hold down the Shift key to make the Grub menu appear.

12. At the Grub menu select the final entry (the one you just added; it should say "Dell BIOS Flash Updater") and press Enter.

13. FreeDOS should now start up. If you get prompts for the date and time just press Enter until you get to the A:> prompt.

14. Start the BIOS update by typing the following (substitute the name of the .EXE and .BIN files you extracted from the Dell download, as appropriate):

afu877 8a1d1p34.bin

15. Follow the prompts, reboot, and confirm that your BIOS was updated.

Obtaining and using an image from the WinPhlash utility

Firstly, you need WINE to obtain the image from the archive:

wine /path/to/biosupdater.exe

Then extract and attempt to run the updater, which will fail, but place a file named BIOS.ROM in C:\Windows\Temp\WINPHLASH\. Now download the phlash16.exe utility, which will actually perform the flash using BIOS.ROM.

If this method doesn't work, you may have downloaded a newer installer. You can then try:

wine /path/to/biosupdater.exe  /WriteRomFile

which will extract the ROM file in the same directory:

/path/to/biosupdater.ROM

Assuming the image from biosdisk is called bios.img, next mount the image somewhere and modify it (as root):

mount -t vfat -o loop,rw /path/to/bios.img /mnt/somewhere
rm -f /mnt/somewhere/{xxxx.exe}
cp ~/.wine/drive_c/windows/temp/WINPHLASH/BIOS.ROM /mnt/somewhere
cp /path/to/phlash16.exe /mnt/somewhere
umount /mnt/somewhere

Now write the image to a floppy or boot it with GRUB as before, but once you get a command prompt and autoexec.bat has failed, type:

phlash16.exe BIOS.ROM

Obtaining the phlash16.exe Utility

One way of getting phlash16.exe has been described previously. The relevant directions from there are reproduced in what follows. 1747A04_DOS.exe has been successfully used before, though other archives from Dell may also work. After downloading the suitable file, use DosBox to extract it:

sudo apt-get install dosbox

In the directory where you just downloaded the file:

dosbox .

In the DosBox window, type the name of the executable. It will give an error, but upon closing it, and inspecting your directory, you should see that the archive was extracted and phlash16.exe should now be present.


CategoryLaptop

DellBIOS (last edited 2015-02-04 01:52:30 by penalvch)