DellBIOS

Updating the BIOS on Dell systems

Since DELL has discontinued support for Linux, BIOS update utilities and files are often provided as Windows executable files. The bios updates work by booting the machine into DOS using a USB or floppy (FreeDOS or m/s dos) and then running an executable to reflash the BIOS.

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

There are a number of ways described below, including using disk emulator or a physical floppy disk. These include methods for upgrading without using DELL's biodisk.

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 Noting that the thread is three years old, can anyone confirm that it is still current?

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 using Dell's "biosdisk" and "syslinux memdisk"

The procedure detailed here is based on Updating the BIOS without using biosdisk below, but uses the disk image found in Dell's biosdisk archive. It uses FreeDOS from the disk image provided in Dell's archive and the syslinux memdisk utility to start a DOS system without needing a floppy disk (or even a drive) and run Dell's BIOS update utility from there. It has been tested on a Latitude E6410 laptop with Ubuntu 11.10 and 12.04, and may work for systems from other manufacturers who provide their BIOS update tool as a DOS executable too (the disk image isn't Dell-specific). The current version of biosdisk contains a sufficiently large FreeDOS image to hold the BIOS update executable file. I took the liberty of putting this section near the top of the wiki page, as I think that the information here is slightly more up-to-date than other sections. Please update this entry as names and details change, or if you find that it works for systems produced by other manufacturers.

Dell's biosdisk utility can currently be downloaded from their site (search for "biosdisk" in your favourite search engine) as a tar.gz archive. I was able to update my BIOS using the following steps:

1. I downloaded the current BIOS image for my laptop, packed as a combined DOS/Windows executable, from Dell (the file was called E6410A12.exe).

2. I installed the syslinux package from the Ubuntu repositories and copied the memdisk tool to /boot:

 $ sudo apt-get install syslinux
 $ sudo cp /usr/lib/syslinux/memdisk /boot

3. I downloaded the archive (called biosdisk-git-06112010.tar.gz at the time of writing) and extracted the FreeDOS floppy image dosdisk8192.img from the archive to the current directory and renamed it to E6410A12.img to match the BIOS image I wanted to flash.

4. I mounted the image, copied the file onto it and put it into /boot using the commands

 $ mkdir /tmp/floppy
 $ sudo mount -t vfat -o loop,quiet,umask=000 E6410A12.img /tmp/floppy
 $ cp E6410A12.exe /tmp/floppy
 $ sudo umount /tmp/floppy
 $ sudo cp E6410A12.img /boot

Substitute E6410A12.exe and E6410A12.img with the appropriate names. e.g. current bios version is A15, so on an E6520 this would be E6520A15.exe and E6520A15.img.

5. I rebooted to grub2, entered the command line with "C" and entered the commands:

 linux16 /boot/memdisk
 initrd16 /boot/E6410A12.img
 boot

to boot into the FreeDOS image. (Note: If you get a file not found message on the line linux16 /boot/memdisk then try the commands without the /boot: linux16 memdisk and initrd16 E6410A12.img)

I pressed <Enter> twice to confirm that I didn't want to reset the time and date), then executed

 A:\>E6410A12.exe

and followed the instructions, which brought me to the successful conclusion of the process.

Upgrading the BIOS from the Internet using Dell packages

Dell's linux firmware repository is "obsolete and unmaintained" as they say. They recommend their OMSA repository but as of this writing there is no support for Debian-based systems such as Ubuntu, and it appears that OMSA only works with Dell PowerEdge servers, which have official Linux support. If you have one of those machines you probably won't be reading this page. For reference, the OMSA repository info page can be found here:

http://linux.dell.com/wiki/index.php/Repository/OMSA

What worked for one user on a Dell Inspiron 1525 and Xubuntu, using Wine to extract BIOS image etc

This is in part pasted and reconstructed from my shell history, but I thought it better to put the info out there than ensure it's 100% polished:

sudo apt-get install firmware-addon-dell libsmbios-bin wine

update_firmware

sudo modprobe dell_rbu

Check your BIOS version number, make a note if needed:

sudo dmidecode -s bios-version

Time to download...

cd ~/Downloads

Have the BIOS update .exe downloaded from Dell's support site, then run something like this:

wine 1525_A17.EXE  -writehdrfile -nopause

Check it output a .hdr file

ls *.hdr

Then use said file

sudo dellBiosUpdate -u -f 1525_A17.hdr

I rebooted after:

sudo reboot now

I saw a black and white BIOS update screen, it took about a minute. DO NOT RESTART OR LOSE POWER DURING THIS PROCESS.

So it did it's thing, then it rebooted itself and I booted back into [x]ubuntu, and checked my bios again with this command:

sudo smbios-sys-info

Big credit: I figured this out in part from http://java2go.blogspot.co.uk/2010/05/how-to-upgrade-your-dells-bios-directly.html .

Updating the BIOS without without using biosdisk

The following instructions are adapted from this helpful yet outdated thread and tested with a Dell Inspiron 545 on 8 May 2012.

If you try Dell's biosdisk linux utility you'll quickly realise it does not work - attempting the upgrade spits out the rather cryptic "Error! udosexe = -5". The error is caused because the Dell BIOS updater is a compressed archive containing both the BIOS image (2MB) and an installer. Unpacking that on a 1.44MB disk will not work. Frustratingly, it will also not work on a 2.88MB disk, because the compressed archive+unpacked contents is too big!

1. Obtain the appropriate BIOS .EXE file for your computer from http://support.dell.com (search under "drivers & downloads"). Download it somewhere on 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 don'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. Don't you wish Dell made this easy for us? 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, cross your fingers and with any luck it will update your BIOS successfully.

16. Reboot into Ubuntu as usual

17. Confirm that your BIOS was updated by following the instructions under "Checking your current BIOS version", above.

Upgrading the BIOS using biosdisk and a floppy disk

NOTE that biosdisk hasn't been updated in almost a year and appears to be broken as of this writing (May 2012). See the "Updating the BIOS without without using biosdisk" section above for an alternative method.

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. It also doesn't appear to work at all for 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 http://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 (does not seem to work with 12.04 Precise)

  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 dos2unix 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 using '''biosdisk'''

The mkfloppy action will create the biosdisk image and write it directly to a floppy disk or USB drive. 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:  biosdisk mkfloppy [-o option] -d /dev/xxxxx [-k baseimage] /path/to/.exe 

Where xxxxx is your USB drive's device. Make sure you have the right device or you could wipe out data on the wrong drive!

Creating a floppy disk image file using '''biosdisk'''

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.

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

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 2013-11-15 05:34:51 by aperittos)