Dell BIOS Upgrade

From Gentoo-en
Jump to: navigation, search

Introduction

Dell releases a new BIOS for a chassis fairly frequently and it is often the case that you don't have a floppy, bootable USB disk, or even local access to the machine. Dell has worked to get the proper interfaces into the mainline kernel to simplify safe BIOS updates from inside a running Linux system. Dell also provides a simple offline method for updating the BIOS as well.

SMBIOS Method

Make sure you have the needed modules.

Linux Kernel Configuration: 2.6.28+
Firmware Drivers  --->
    <M> BIOS update support for DELL systems via sysfs
    <M> Dell Systems Management Base Driver
    [*] Export DMI identification via sysfs to userspace

Install libsmbios and test for compatible desktop/laptop/server/motherboard.

emerge -av libsmbios smbios-sys-info | grep 'Service Tag'
 Existing Service Tag: F1C9KB1

If you got something that looks vaguely like the previous line you may contiune, if not you probably need the #Biosdisk Method

Fetch BIOS from Dell repository

Now grab your System ID and BIOS Version.

smbios-sys-info
Libsmbios:    2.2.19
System ID:    0x01BD
Service Tag:  F1C9KB1
Express Service Code: 32732802829
Product Name: MM061
BIOS Version: A17
Vendor:       Dell Inc.
Is Dell:      1

And start poking around Dells repo. Find the entry that matches system_bios_ven_0x1028_dev_SYSTEM_ID_version_BIOS_VERSION and download the HDR from the BIOS_VERSION you want to update too.

Note: SYSTEM_ID is lower case

Extract BIOS from Linux version of the upgrade file

Alternatively you can download the Linux version of the upgrade (.BIN) from the standard support website by selecting OS type Redhat, and extract the HDR from it.

UPGRADEFILE.BIN --extract to_dir

The HDR will be in to_dir/payload.

Extract BIOS from windows executable

Alternatively you can download the Windows .exe from the standard support website and extract the HDR from it. Sometimes this can yeild a newer bios version then the repo.

wine MM061A17.exe -writehdrfile -nopause ls MM*
 MM061A17.exe  MM061A17.hdr

if this doesn't work try this command

wine MM061A17.exe /writehdrfile /nopause ls MM*
 MM061A17.exe  MM061A17.hdr

Stage BIOS update

Make sure your plugged into AC and your battery is installed, then have at it.

dellBiosUpdate -u -f ~weedy/Desktop/MM061A17.hdr
Supported RBU type for this system: (MONOLITHIC)
Using RBU v2 driver. Initializing Driver. 
Setting RBU type in v2 driver to: MONOLITHIC
Prep driver for data load.
Writing RBU data (4096bytes/dot): ..................................................--SNIP--
Update staged sucessfully. BIOS update will occur on next reboot.

If all went smoothly you can now reboot, leave the adapter connected until the upgrade is complete and you are back in linux. Upon reboot if the BIOS complains of an incorrect checksum and fails, run the dellBiosUpdate tool again and see whether it's using packet updating, or monolithic. If it's the former, you can try forcing it to use the latter via --force_mono, which may help things.

If the first command,

dellBiosUpdate -u -f <your driver>.hdr

doesen't work, then try this:

dellBiosUpdate-compat -u -f <your driver>.hdr

Biosdisk Method

emerge -a biosdisk

Download the Windows .exe from the standard support website. In this case MM061A17.exe. Copy memdisk of the syslinux package to /boot

mount /boot cp /usr/lib/syslinux/memdisk /boot #or maybe /usr/share/syslinux/memdisk

Create a boot image

biosdisk install ~weedy/Desktop/MM061A17.exe

This will copy the image to /boot. Now update your boot loader.

File: /boot/grub/grub.conf
...
title Dell Bios update A17
root (hd0,0)
kernel /memdisk
initrd /MM061A17.img
...

Make sure your plugged into AC and your battery is installed, you can now reboot. Leave the adapter connected until the upgrade is complete and your back in linux. If all went smoothly you can use the biosdisk uninstall command to remove the image and clean up grub.conf

biosdisk uninstall ~weedy/Desktop/MM061A17.exe

Authors

Originally written by: Weedy - 28.01.2009

Edited by: klandreth - 02.03.2009


Authors are people who have worked on this document and have made significant changes to its content. If you have edited this article and wish to add yourself to the authors list please read "Who are Authors".