[Howto] Updating Dell Firmware on Linux

fedora-logo-bubble
A recent hardware bug in NVIDIA cards made it necessary to update the firmware on quite some laptop models. Usually firmware updates are only provided for Windows machines, but Dell provides all tool needed for firmware updates on Linux.

NVIDIA has a tough time right now: there are unresolved driver issues on Linux, and now a serious hardware problem came up: many graphic cards are broken, and some might even be fried in the machine.

There is a workaround available making sure to not overheat the card, though. This workaround however often requires a firmware update on the used machine. Firmware updates are most often difficult on Linux and require some work. However, Dell is one of the pleasant exceptions: Dell provides the technique, the software and even precompiled binaries in distribution specific repositories to easily update the firmware.

The only disadvantage is that you have to search quite some pages until you get the information needed. Once you get there, the rest is quite easy and straight forward. The following shows an example for Fedora, but there are howtos for other distributions as well.

# wget -q -O - http://linux.dell.com/repo/software/bootstrap.cgi | bash
# wget -q -O - http://linux.dell.com/repo/firmware/bootstrap.cgi | bash
# yum -y install firmware-addon-dell
# yum -y install $(bootstrap_firmware)
# update_firmware

The first two commands install the necessary repositories with the help of perl scripts. These check the distribution and download the appropriate repo information, keys, etc. The third command installs the binary needed to identify the firmware, the fourth downloads the right firmware, and the last command updates the firmware.

Afterwards, the firmware will be updated on the next soft reboot. If you want to be sure to make a soft reboot, call shutdown -r 0 as root. It worked for me definitely. A big THANKS to Dell for their excellent Linux support!

It would of course be even better when there would be some generic way to update the firmware on any machine. This could then be implemented in Linux generically and could make the live of users easier – not only on Linux, but also on Windows, where the average user does not even now what a firmware is, left alone how to update it.

13 thoughts on “[Howto] Updating Dell Firmware on Linux”

  1. Don’t update your BIOS to “”fix”” this nvidia problem.
    The only aim of the firware upgrade is to delay the failure of your GPU until your warranty expire.
    That’s not the way it should be done, but nVidia doesn’t want to repair every broken GPU they selled… (Sure, it’d cost them a lot, but that’s their fault).
    Moreover, this firmware upgrade will increase the use of your system fan (to decrease the GPU temperature), so your computer will make more noise, and your battery will not last as long as it should.

  2. I have made a PKGBUILD (a script to download, compiler and package a program on ArchLinux, similar to an ebuild) for the bios upgrade of my Dell Latitude D830 laptop. It download the right bios (for windows), unpack it, mount the floppy image, change something, then copy it on /boot.

    That way, you only need to select “Bios Upgrade” from grub!

    PKGBUILD:

    ]
    pkgname=dellbios-ld830
    pkgver=A12
    pkgrel=1
    arch=('i686' 'x86_64')
    pkgdesc="Dell BIOS upgrade"
    url="http://support.dell.com"
    license=("GPL")
    depends=('grub' 'hd2u')
    makedepends=('sudo')
    install=${pkgname}.install
    _bios=d830_${pkgver}.exe
    source=(
        http://ftp.us.dell.com/bios/${_bios} \
        http://www.fdos.org/bootdisks/autogen/FDSTD.288.gz
    )
    
    build()
    {
        cd $startdir/src/
        mkdir -p floppy
        sudo modprobe loop
        sudo mount -o uid=1000 -o loop FDSTD.288 floppy
    
        rm -f floppy/config.sys
        echo "FILES=20
    BUFFERS=20
    SHELL=\COMMAND.COM /E:256 /P" > floppy/config.sys
        dos2unix --u2d floppy/config.sys
    
        cp $startdir/src/${_bios} floppy/
    
        echo ${_bios} >> floppy/autoexec.bat
        dos2unix --u2d floppy/autoexec.bat
    
        sudo umount floppy
        mkdir -p $startdir/pkg/boot
        install -m 644 FDSTD.288 $startdir/pkg/boot/biosflash.img
    }
    [/code]
    
    dellbios-ld830.install:
    [code]post_install() {
    
        cp /usr/lib/syslinux/memdisk /boot/
    
        echo "
    
    # BIOS Flash update
    title BIOS upgrade
    root (hd0,2)
    kernel /memdisk
    initrd /biosflash.img" >> /boot/grub/menu.lst
    
    }
    
    post_upgrade() {
    /bin/true
    }
    
    pre_remove() {
    rm -f /boot/memdisk
    }
    
    op=$1
    shift
    
    $op "$@"
    
  3. I’m glad you like the firmware-tools software and easy BIOS download method. Michael Brown and I have been working for a long time on keeping your firmwares and BIOS updated as simple as the distributions make keeping your OS-provided software updated. Thanks for spreading the word!
    -Matt Domsch
    Linux Technology Strategist, Dell Office of the CTO

  4. Hi Matt…

    Great to see answers from an official Dell guy.
    I’m quite happy with your linux support, but please, could you comment about this weird nvidia problem, and their “””fix””” (sorry, reducing battery life and increasing computer noise is *not* a fix imho) ? Anyway, my GPU is already broken, I’ve got a video to demonstrate it, I’ll have to send my computer back, but will I get a still broken GPU with the software workaround ?

  5. @Pinraf: I’m not familiar with the nVidia problem aside from the comments I’ve read about it in public forums such as this, nor do I know the details behind the resolution. I encourage you to call Dell Technical Support, and raise your concern with the technician you speak with. They will be more knowledgeable about this than I.

  6. big_gie, while it is a nice idea, it’s not at all as easy to use as the DELL tools. Also, it might not work with the next bios version since you use Windows things. Why not directly use the right linux stuff? Also, please be careful posting large chunks of code here on my blog, distribution specific code should be closer to the distribution.

    Matt, thanks for the comment. And thx for the tools, they helped me pretty much. The next step should be for you guys to contact the distributions to ask them to include all your repository data with their releases. 🙂
    Anyway, I’ve bought a D630 some weeks ago and I really don’t regret it!

  7. Over the years, I’ve had a good deal of non-support from Dell. Good to see some change in that respect. Oh, maybe not:

    # wget -q -O - http://linux.dell.com/repo/software/bootstrap.cgi | bash
    Downloading GPG key: http://linux.dell.com//repo/software/RPM-GPG-KEY-dell
    Importing key into RPM.
    Downloading GPG key: http://linux.dell.com//repo/software/RPM-GPG-KEY-libsmbios
    Importing key into RPM.
    Failed to download RPM: http://linux.dell.com/repo/software/fc9/i386/dell-unsupported-repository/1-4/dell-unsupported-repository-1-4.fc9.noarch.rpm

  8. I’ve a question:
    all NVidia 84x and 86x are broken? How can I check if my video card is overheating?
    Nvidia settings under “Thermal monitor” shows: “Core temperature: 61 C”.

    Also, I didn’t understand if it’s good to install the updated firmware or not.

  9. Augu, afaik both versions are affected.
    However, if you want to apply the new firmware or not is up to you – it will help to keep the machine running, but maybe with a more noisy air fan.
    And the best way to check if the card is affected is to look for graphic problems – but at that moment it is already to late to save the card.

  10. FWIW, I am still running BIOS version A02 on my Dell Latitude X1, since Dell refused to fix the real issues in their updates (A03, A04, A05, A06). They still don’t make the laptop support its own screen resolution (!), and only introduced cpu throttling problems, which essensially locked the machine at 600MHz – see comments on http://eightflat.org/tracesofmartinsstate/2005/06/03/linux-on-dell-x1/ .

    So – think twice before upgrading, at least make sure you will be able to downgrade. If you still have the warranty – why not just let the laptop burn out itself and get a new one? Remember to backup first…

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.