How to Update Firmware on Ubuntu and Other Linux Distributions

You know how to update your Ubuntu system for all the software. You might wonder about updating firmware in Ubuntu.

Like the software, Ubuntu also provides firmware updates for all the supported hardware through various channels. Some firmware updates come through the manufacturer like Intel while some come from the community. This is what I have seen with my Dell XPS laptops.

Usually, the default software center in Ubuntu and other Linux distributions handle the update of the firmware of your system. But if you encounter errors with it, you can use fwupd command line tool for updating the firmware of your system.

I’ll show both methods to you in this tutorial.

Method 1: Updating firmware in Ubuntu and other Linux via Software Center

If you are using a laptop, keep it on AC power otherwise some firmware updates will refuse to be installed.

Open the Software Center application on your distribution and go to the Updates tab. You might see both software and firmware updates listed here. The firmware updates are under the ‘Device Firmware‘ section.

You just have to click on the Update button in front of the available firmware updates.

Firmware updates in Ubuntu software center

It takes some time to install the firmware updates and you may see errors like ‘unable to update’ or ‘device cannot be used’ or something similar.

Unable to update “Thunderbolt NVM for Xps Notebook 9360”: could not detect device after update: timed out while waiting for device

Updating firmware in Ubuntu

Please do not panic just yet. I have noticed that despite the error message, the firmware is updated.

Now, the important thing to know is that the firmware updates are installed when you restart your Linux system. You’ll see messages about firmware updates on the power on screen. If there were more than one firmware update, they will be installed one by one.

Firmware update in progress in Ubuntu
Firmware update in progress

Once it completes, your system should turn off. You can turn it on again afterwards and enjoy your systems with the latest firmware.

Method 2: Updating firmware in Ubuntu via command line

The software center in Ubuntu is capable of updating the firmware. But in situations when it fails for some reasons, you can use the command line tool fwupd.

fwupd is an open source daemon that handles firmware upgrades in Linux based systems. It is created by GNOME developer Richard Hughes. Developers from Dell also contributed to the development of this open source tool.

Basically, it utilizes the LVFS, Linux Vendor Firmware Service. Hardware vendors upload redistributable firmware to the LVFS site and thanks to fwupd, you can upgrade those firmware from inside the operating system itself. fwupd is supported by major Linux distributions like Ubuntu and Fedora.

Step 1: Check if your system is supported by LVFS

Since LVFS depends upon hardware vendors, it’s a good idea to check if your system manufacturer supports this feature or not.

Find out your system model and then go to this web page and see if it’s listed:

Step 2: Using fwupd for updating fimrware

Normally, fwupd should already be installed on your Linux system. If not, install it using the package manager of your distribution.

Open a terminal and update your system first (commands applicable for Debian and Ubuntu-based distributions):

sudo apt update && sudo apt upgrade -y

After that you can use the following commands one by one to start the daemon, refresh the list of available firmware updates and install the firmware updates.

sudo service fwupd start

Once the daemon is running, check if there are any firmware updates available.

sudo fwupdmgr refresh

The output should look like this:

Fetching metadata https://cdn.fwupd.org/downloads/firmware.xml.gz
Downloading…                         [****************************]
Fetching signature https://cdn.fwupd.org/downloads/firmware.xml.gz.asc

After this, run the firmware update:

sudo fwupdmgr update

The output of the firmware update could be similar to this:

No upgrades for XPS 13 9360 TPM 2.0, current is 1.3.1.0: 1.3.1.0=same
No upgrades for XPS 13 9360 System Firmware, current is 0.2.8.1: 0.2.8.1=same, 0.2.7.1=older, 0.2.6.2=older, 0.2.5.1=older, 0.2.4.2=older, 0.2.3.1=older, 0.2.2.1=older, 0.2.1.0=older, 0.1.3.7=older, 0.1.3.5=older, 0.1.3.2=older, 0.1.2.3=older
Downloading 21.00 for XPS13 9360 Thunderbolt Controller…
Updating 21.00 on XPS13 9360 Thunderbolt Controller…
Decompressing…    [***********]
Authenticating…      [***********] 
Restarting device… [***********]

This should handle the firmware update in Ubuntu. I hope this quick tip helped you with firmware updates in Linux.

If you have questions or suggestions, please feel free to use the comment section below.

Similar Posts

  • Hi Abhishek,
    I was looking for this for a while. It is the fastest, simplest way to upgrade the BIOS on my Lenovo Thinkpad X260 running Linux Mint.
    Thank you for the post

  • I had exactly that problem: on an XPS 13 9365 the Updates tab shows System Updates 2.12.2 -> 2.19.0, but when I try to update it goes a few seconds through “installing” and then… nothing happens, the update is still there.

    This laptop is supported by LVFS, so I tried using fwupdmgr, as you suggested.

    It seemed to work but, when I rebooted, it didn’t install the update and, actually, at first it gave a “Hard disk not installed” error. 😨

    Hard reset, back to the same situation: update pending.

    Any suggestions?

  • The only thing I’d add is that this may not work on a remote/headless/ssh system. I tried it and there were no errors, and it appears to complete… but the FW version remains the same and the update continues to show as available. A clue is that the “installation” finished in seconds.
    Plugging in a keyboard and monitor and doing it again works perfectly (and takes a couple minutes, as expected).

  • sorry Abhishek …. I must have copied it wrong …. the following is what I copied and pasted from the page in question….
    sudo apt update “&&” sudo apt upgrade -y
    This is the error I received:: bash: syntax error near unexpected token `;&’ (( amp; ))
    Not to worry, I rectified the situation and everything turned out fine … :-))
    Demas