DellBIOS

Revision 25 as of 2011-01-15 04:36:13

Clear message

Updating the BIOS on Dell systems

BIOS update utilities and files are often provided as Windows executable files. This guide provides information for Dell users to use such files without using Windows or any emulation software.

If you have a Dell Mini 9

The only BIOS recommended update for the Dell Mini 9 is version A01. There is no know mechanism for doing this update from Linux at this time. For more details see this thread in the Ubuntu forums.

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 from the Internet using Dell packages

The firmware-tools and firmware-addon-dell packages are available from the Ubuntu Universe repositories and are required to perform a BIOS upgrade on Dell systems.

The latest system BIOS images for many Dell system types are available in a repository on linux.dell.com. Detailed information is available at the Dell wiki about firmware.

In a nutshell, for Ubuntu systems with Gutsy or later, be sure the Universe section is enabled in /etc/apt/sources.list. The following commands need to be run one at a time, and may take several minutes to complete:

sudo -s
wget -q -O - http://linux.dell.com/repo/firmware/bootstrap.cgi | bash
aptitude install firmware-addon-dell firmware-tools
aptitude install $(bootstrap_firmware -a)
update_firmware

The bootstrap command downloads an OpenPGP key for use in validating the linux.dell.com repository, and sets up the dell-firmware and dell-software sections for use by apt.

Several dozen existing upgrades will be searched resulting in "normal" warnings similar to:

Couldn't find any package whose name or description matched "pci-firmware-ven-0x8086-dev-0x27d4"
Couldn't find any package whose name or description matched "pci-firmware-ven-0x8086-dev-0x27d4"

It way take a few minutes for such checks to complete.

If the system does not need to be updated, a message similar to this will be shown:

root@bachue:~# update_firmware

Searching storage directory for available BIOS updates...

Checking System BIOS for Precision WorkStation 360 - a08
        Available: system_bios(ven_0x1028_dev_0x0156) - a08
        Did not find a newer package to install that meets all installation checks.

This system does not appear to have any updates available.
No action necessary.

A reboot is required for the BIOS upgrade to actually happen.

Dell has had this service available for quite a while for several RPM-based distributions. They are now bringing this to the dpkg-based distributions now as well.

Upgrading the BIOS using biosdisk and a floppy disk

biosdisk is a utility maintained by John Hull at Dell. There isn't an official Ubuntu package yet but the provided downloadable archive has an installer which can be used to upgrade your BIOS from Ubuntu.

biosdisk simplifies the process of flashing your system BIOS under Linux on Dell desktops and laptops. The purpose of this utility is to create a bootable BIOS flash image using the raw BIOS flash executable images (e.g. WS360A05.exe) available from support.dell.com. An RPM, SRPM, and tarball for this project are available at http://linux.dell.com/biosdisk.

Be sure to check with Dell support if a given BIOS version applies to your Ubuntu system. Some BIOS upgrades are designed specifically for Windows and do not follow specifications, as such they may not be suitable for Ubuntu.

The project consists of a shell script that, when executed, creates a FreeDOS floppy image at a location of your choosing. This project is intended for Dell desktop and laptop customers and not PowerEdge customers, since Linux BIOS flash packages are already available for PowerEdge systems, and raw executable BIOS flash images are not.

To use the biosdisk utility to create a BIOS flash image, first download the latest raw BIOS image for your system from support.dell.com or ftp://ftp.dell.com/bios. If you use support.dell.com then the executable you are offered may be a Windows-only utility called WinPhlash. If this is the case (for example, if you try the below and are told that the file cannot be run in DOS mode) then follow the instructions at the end of this section. You then have one of several options:

  • Create a bootable FreeDos floppy with the BIOS upgrade

  • Create a dd floppy image (in a file)
  • Create a user-installable distribution-specific package (e.g. RPM)
  • Install the image for your bootloader

Installing biosdisk for Ubuntu

  1. Download the latest tarball (.tar.gz archive) version of biosdisk from http://linux.dell.com/biosdisk to your home directory. An 11 June 2010 Git snapshot was the latest available as of January 2011.

  2. Open a terminal window by going to Applications | Accessories | Terminal
  3. Extract the archive:  tar -zxvf biosdisk-git-06112010.tar.gz  (or whatever the current version might be)

  4. Change to the directory where files were extracted:  cd biosdisk 

  5. Two packages are needed for biosdisk to work. They are both part of the main repository. The following command will install them:

 sudo apt-get install tofrodos syslinux 

  1. Now the install script can be invoked:  sudo ./install.sh 

  2. If you don't get any output, the install should have completed succesfully. To verify your installation is complete, invoke biosdisk without any parameters, as root:  sudo biosdisk 

Creating a bootable FreeDos floppy disk with the BIOS upgrade

The mkfloppy action will create the biosdisk image and write it directly to a floppy disk. Usage is the following:  biosdisk mkfloppy [-o option] [-d device] [-k baseimage] /path/to/.exe 

If you are using an external USB floppy drive, make sure you use the -d option to refer to it, for example:

Creating a floppy disk image file

If you don't have a floppy drive, you can still use biosdisk to create a floppy image file and boot that via your bootloader.

The mkimage action will create a floppy image on the user's hard drive. Usage is the following:  biosdisk mkimage [-o option] [-i destination] [-k baseimage] /path/to/.exe .

Typically you'd just type  sudo biosdisk mkimage /path/to/.exe  and this will emit a .img file in /tmp. You then install that .img file by adding it to Grub 2 as described below.

Installing an image in the bootloader via Grub 2 configuration

After you've created a floppy image file (see above), you can boot that floppy image file using Grub 2. These commands will copy the necessary files into /boot and edit the Grub 2 configuration file. Replace FILENAME as appropriate for your BIOS image:

sudo cp /tmp/FILENAME.img /boot
sudo cp /usr/lib/syslinux/memdisk /boot
echo "menuentry 'BIOS Flash' {" | sudo tee -a /etc/grub.d/40_custom
echo "set root='(hd0,1)'" | sudo tee -a /etc/grub.d/40_custom
echo "linux16 /boot/memdisk bigraw" | sudo tee -a /etc/grub.d/40_custom
echo "initrd16 /boot/FILENAME.img" | sudo tee -a /etc/grub.d/40_custom
echo "}" | sudo tee -a /etc/grub.d/40_custom

Finally, execute sudo update-grub and reboot. Select the "BIOS Flash" option from the Grub menu options.

Creating a RedHat / Fedora package (does not work on Ubuntu)

The mkpkg action will create the floppy image, and use it to create a user-installable package specific to the distribution (example: RPM). When the package is installed, it will use the distribution's built-in tools to update the system's bootloader so that the user can boot to the image from the hard drive to flash the BIOS, without needing a floppy drive. Currently only Red Hat/Fedora RPM packages are supported. This method will not work in Ubuntu. Usage is as follows:  biosdisk mkpkg [-o option] [--install] [--distro=] [--name=] [--version=] [--release=] /path/to/{.exe | .img} 

Installing an image in the bootloader via biosdisk install (does not work on Ubuntu)

This does not apply to Ubuntu

The install action will create the biosdisk image, copy the image file to /boot, and then update the bootloader with an entry for the image. Then all the user has to do is boot the system and select the image to flash the BIOS; this will load the biosdisk image directly from the hard drive and flash the BIOS. Usage:  biosdisk install [-o option] [--name=] /path/to/{.exe | .img} 

Obtaining and using an image from the WinPhlash utility

If the download from the DELL site comes as a WinPhlash installer, then the biosdisk method will not work - the executable cannot be run from the DOS environment it boots into. Consequently we must modify the image biosdisk creates. 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, i.e., /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