Updating BIOS from ubuntu 20.04 [duplicate]
Solution 1:
EDIT October 2015
In the post-Win7 era this answer has outlived its usefulness. Look at the other answers first. Read no further unless you have time to burn.
Other answers posted to this question may work with older hardware, but I posted this after my experience of upgrading the BIOS of a Dell Inspiron 7520 (vintage 2012). Checking dates on unofficial Dell support web sites suggests that this may also apply to other Dell models since 2010 or even earlier.
The first step is to get information about your current system. In Ubuntu you can check the BIOS version with the following two commands:
sudo dmidecode -s bios-version
sudo dmidecode -s bios-release-date
You need information about your computer's hardware when querying the manufacturer's website. For Dell this is often printed somewhere on the underside in the form of a Service Tag and an Express Service Code. If this is not easy to read, the information can be obtained in the following way:
1) Install libsmbios:
sudo apt-get update
sudo apt-get install libsmbios-bin
2) Get the service tab etc. from the system:
sudo getSystemId
This will produce output like this:
Libsmbios version: 2.2.28
Product Name: Inspiron 7520
Vendor: Dell Inc.
BIOS Version: ANN
System ID: 0xNNNN
Service Tag: NABCDEFN
Express Service Code: NNNNNNNNNN
Asset Tag:
Property Ownership Tag:
with the key information in the BIOS version, the System ID, the Service Tag, and the Express Service Code.
Armed with the above information, go to the Dell web site and download the appropriate driver(s) for your particular computer.
So far so good, but you will notice that the download is a Windows executable. Just as this cannot be run under Ubuntu (or any other Linux), it also will not run under legacy versions of Windows, in particular MS-DOS or any emulation of MS-DOS. This is in spite of anything it may say on the download page about being compatible with earlier versions of Windows; using any legacy DOS-type environment the .exe runs, but exits without doing anything except printing out an annoying message.
So, here comes the fun bit: you need a Windows 7 (or later) environment in order to run the BIOS upgrade. And how do we do that on a single-boot Ubuntu machine (or even a computer running legacy Windows, like XP)?
The key ingredient at this point is a Windows 7 Repair Disk. There are several ways to obtain one, including buying one from sources on the internet, or making friends with someone who has a Windows 7 computer. If you are lucky your computer manufacturer bundled one with your box. I chose to make one on my Ubuntu machine, using a copy of Windows 7 running in VirtualBox, adapting the instructions for making a rescue disk from this web site.
The good news is that it does not seem to matter which version of Windows 7 the Repair Disk is obtained from. Since this is a BIOS upgrade it does not even matter whether you use 32-bit or 64-bit versions if your computer is 64-bit.
Once you have a Windows 7 Repair Disk, the rest is easy. You can make it into a bootable USB if you wish, but if your box has a CD drive this is unnecessary. Here are the steps:
- Put the downloaded BIOS upgrade .exe on an ordinary USB flash drive.
- Reboot you computer from the Windows 7 Repair Disk, hit the
Space
bar when prompted. - Navigate to the command prompt. (
Use Recovery Tools->Command Prompt
). - Find the correct drive letter for your USB (on the command line
dir a:
then b, c, etc. till you find the right one). - Navigate to it on the command line (type the drive letter with colon).
- Run the file by typing its name (note tab auto-completion works :)).
- From there, just follow the on-screen instructions, and make sure your computer stays powered-on while the upgrade completes.
Note there are TWO automatic reboots before you get back to your Ubuntu startup screen.
Solution 2:
You do not need Windows to install any firmware updates from their site, just follow the instructions posted here.
From the Dell website:
- Download the WIndows/DOS BIOS installer for your hardware from dell.com
- Download the latest SystemRescueCD and burn it to a blank CD or install it to a USB flash drive.
- Copy the Windows/DOS BIOS installer to a FAT formatted USB stick or the one that you installed the SystemRescueCD on.
- Boot from the CD or flash drive.
- Choose to boot from FreeDOS in the floppy images menu.
- Make sure you do NOT load HIMEM and EMM386 memory managers.
- Change to the USB stick (typically C: if you do not have any FAT partitions on your HDD).
- Run the installer
Example when running the A14 update for the E7240 machine.
Solution 3:
Dell has a very nifty utility to download and apply latest BIOS to their computers that are using Linux. It should theoretically run without any problems and you can run it in Ubuntu.
Please visit their page for more information, there are precise instructions there:
- Dell BIOS updates using Debian based Linux systems
Here are the instructions from the linked page
sudo wget -q -O - http://linux.dell.com/repo/firmware/bootstrap.cgi | bash
sudo apt-get install firmware-addon-dell
sudo apt-get install $(bootstrap_firmware -a)
sudo update_firmware
Please note: I have not tested this myself, you might first drop an email to Dell support to ask them if this method deprecated or if there are any issues with it.
Note: As per 2020, this is outdated. firmware-addon-dell is not available for Ubuntu 20.04 and the the last commit to the github repo of firmware-addon-dell (https://github.com/dell/firmware-addon-dell) was on 2011.
Solution 4:
Recent Dell BIOSes have a built-in upgrade module.
- Download the appropriate .EXE upgrade program from Dell website.
- Write this file to a USB drive.
- Insert said USB drive and reboot. (NB : if your computer boots in UEFI mode, you can instead put the .EXE in the /boot/efi partition : it should be found automatically)
- As the Dell logo appears, press F12 to enter the One-time Boot Menu
- In this menu, select Bios Flash Update. If this entry does not appear, your BIOS does not have the built-in upgrade module.
- In the upgrade module, locate the .EXE upgrade program on the USB disk.
- Launch the upgrade process.
Solution 5:
My 7 Steps To Happiness without using any external drives
I've recently updated the BIOS of my Dell Latitude E6500 from version A27 to A29 under Linux Mint 17 KDE (= Ubuntu 14.04 LTS Trusty Tahr) with the CLI and here is what worked very well for me:
- Download the needed DELL Software
sudo apt-get install firmware-addon-dell smbios-utils wine
Check your BIOS version:
sudo dmidecode -s bios-version
My output:A27
Download your BiosUpdateFile.exe (in my case E6500A29.exe) for your specific device from the DELL Support Page
Switch to the directory which nests your E6500A29.exe and extract the *.hdr file from it with the command:
wine E6500A29.exe -writehdrfile
Update BIOS:
sudo dellBiosUpdate -u -f E6500A29.hdr
Reboot:
sudo reboot now
Check your BIOS version again:
sudo dmidecode -s bios-version
My output:A29