How to Update Firmware on Ubuntu using fwupd

Written by: Linuxopsys   |   Last updated: July 2, 2022

Fwupd is a daemon to help to manage the installation of firmware on Linux. Fwupd is configured by default to download firmware from the Linux Vendor Firmware Service (LVFS). LVFS is a secure website that allows hardware vendors to upload their firmware updates.

Fwupd aims to make firmware update on Linux systems automatic, safe, and reliable. It is mainly used to update UEFI firmware. There are many companies that already support native firmware updates such as Dell, Lenovo, HP, Intel, and System76.

In this guide, we learn how to update firmware on Ubuntu using fwupd.

Install fwupd on Ubuntu

Fwupd is available by default on newer versions of Ubuntu. In case the tool is not installed run the following command to install from the Ubuntu repository.

sudo apt install fwupd

To update a specific device on the command line that needs a latest fwupd version, Install fwupd using Snap or using Flatpak.

Display supported devices

To detect and display devices with firmware supported by fwupd, use the following command.

fwupdmgr get-devices

Output:

20FMS1W300

├─System Firmware:
│ Device ID: 218dfc72dd94339f3c3fe47b0df642273d049170
│ Current version: 0.1.41
│ Minimum Version: 0.1.22
│ Vendor: LENOVO (DMI:LENOVO)
│ GUIDs: c9a0acef-aa63-4b85-a52d-a9384163c0e8
│ 230c8b18-8d9b-53ec-838b-6cfc0383493a
│ 717544ba-7153-5a85-be27-9c9ea9b078d0
│ Device Flags: • Internal device
│ • Updatable
│ • System requires external power source
│ • Supported on remote server
│ • Needs a reboot after installation
│ • Cryptographic hash verification is available
│ • Device is usable for the duration of the update

├─TS240GSSD220S:
│ Device ID: e421b2fc248391f6fe3e55ddbb3c9043be068bd0
│ Summary: ATA Drive
│ Current version: R0123A0
│ Vendor: Transcend (ATA:0x8564)
│ GUIDs: 6771f965-9e0a-5a09-8271-ef0f66ac2f37
│ bbff7a8b-2ac7-5dd8-a13f-d0be97e02695
│ 3a74d7ba-b063-5a4f-b9e4-35229efc7b5b
│ Device Flags: • Internal device
│ • Updatable
│ • System requires external power source
│ • Needs a reboot after installation
│ • Device is usable for the duration of the update

├─UEFI Device Firmware:
│ Device ID: 272f84ea6e0e8c9a566ee486fa5299feb1a3a3b6
│ Current version: 2953577449
│ Minimum Version: 1
│ Vendor: DMI:LENOVO
│ GUIDs: c5ef09d4-1f20-41fc-a197-ed88ba3c9bd7
│ 5546bb0d-20e1-5e53-9c0b-8b6da1f3981c
│ Device Flags: • Internal device
│ • Updatable
│ • System requires external power source
│ • Needs a reboot after installation
│ • Device is usable for the duration of the update

└─UEFI Device Firmware:
Device ID: 1e27bf0e569658d727f2d126752b270ed048ea45
Current version: 65544
Minimum Version: 1
Vendor: DMI:LENOVO
GUIDs: dad450ea-85da-4121-ae37-ce857cfa2b8e
dda61f4f-5fb5-522a-8020-fb78ba4a7976
Device Flags: • Internal device
• Updatable
• System requires external power source
• Needs a reboot after installation
• Device is usable for the duration of the update

In this example, we can see that I have four devices that are supported by fwupd. You can also check devices supported by the LVFS and all the updates that have been made available to the public.

 Downloading the latest metadata from LVFS

The refresh option will download the latest metadata. To download the latest metadata from LVFS, we will type the following command:

fwupdmgr refresh

Output:

Firmware metadata last refresh: 1 hour ago. Use --force to refresh again.

We can see that we have the recent metadata on our system.

Checking for available firmware updates

To display the available updates for any devices on the system, use get-updates option.

fwupdmgr get-updates

In my case I'm notified that there are no available updates for my devices:

Devices with no available firmware updates:
• TS240GSSD220S
• UEFI Device Firmware
• UEFI Device Firmware
Devices with the latest available firmware version:
• System Firmware
No updates available for remaining devices

However, on another Linux system looks like there are available firmware updates:

Devices with no available firmware updates:
 • SC300B HFS256G39MND-3510B
 • System Firmware
 • UEFI dbx
20F90044GE
│
└─Intel Management Engine:
  │   Device ID:          25127f5d4d5dfd6e903cda1a61a67cb092e4bb0f
  │   Current version:    184.79.3722
  │   Minimum Version:    184.79.3722
  │   Vendor:             DMI:LENOVO
  │   GUIDs:              63451986-0c42-42db-9a18-342a8455ac68
  │                       0e559cf4-f432-5cd4-9611-bd774afb417a
  │   Device Flags:       • Internal device
  │                       • Updatable
  │                       • System requires external power source
  │                       • Supported on remote server
  │                       • Needs a reboot after installation
  │                       • Device is usable for the duration of the update
  │
  ├─ThinkPad T460s Corporate ME Update:
  │     New version:      184.83.3874
  │     Remote ID:        lvfs
  │     Summary:          Lenovo ThinkPad T460s Corporate ME Firmware
  │     License:          Proprietary
  │     Size:             7.5 MB
  │     Created:          2016-07-08
  │     Urgency:          High
  │     Details:          https://pcsupport.lenovo.com/de/en/search?query=N1CRG67W
  │     Vendor:           Lenovo Ltd.
  │     Flags:            is-upgrade
  │     Description:
  │     • 8 Intel Platform Update 2020.2 HF2 Release
  │
  │     Version 11.8.83.3874 (LVFS: 184.83.3874)
  │
  │     Problem Fixes
  │
  │     • Mitigated several security vulnerabilities.  Please see details under "Fixed Issues".
  │
  └─ThinkPad T460s Corporate ME Update:
        New version:      184.80.3746
        Remote ID:        lvfs
        Summary:          Lenovo ThinkPad T460s Corporate ME Firmware
        License:          Proprietary
        Size:             7.5 MB
        Created:          2016-07-08
        Urgency:          High
        Details:          https://pcsupport.lenovo.com/de/en/search?query=N1CRG65W
        Vendor:           Lenovo Ltd.
        Flags:            is-upgrade
        Description:
        • 8 Intel Platform Update 2020.2 Release        Version 11.8.80.3746 (LVFS: 184.80.3746)        Problem Fixes        • Mitigated the following security vulnerabilities under issues:

Update the device firmware

Finally to download and apply all updates for your system use the update option.

fwupdmgr update
  • Updates that can be applied live will be done immediately.
  • Updates that run at bootup will be staged for the next reboot.

Output:

Devices with no available firmware updates:
 • SC300B HFS256G39MND-3510B
 • System Firmware
 • UEFI dbx
Upgrade available for Intel Management Engine from 184.79.3722 to 184.83.3874
20F90044GE must remain plugged into a power source for the duration of the update to avoid damage. Continue with update? [Y|n]: Y
Downloading…             [*                                      ] Less than one minute remaDownloading…             [**                                     ] Less than one minute remaDownloading…             [**                                     ] Less than one minute remaDownloading…             [***                                    ] Less than one minute remaDownloading…             [****                                   ] [******************************         ] Less than one minute remaDownloading…             [*******************************        ] Less than one minute remaDownloading…             [***************************************]
Decompressing…           [***************************************]
Authenticating…          [***************************************]
Authenticating…          [***************************************]
Updating Intel Management Engine…********************************]
Scheduling…              [***************************************]
Successfully installed firmwareAn update requires a reboot to complete. Restart now? [y|N]:

After the system reboot we will have our hardware firmware updated to the latest available version.

Conclusion

In this tutorial, we learned how to update firmware on a Ubuntu system using fwupd.

You can also perform the firmware updates using the most popular software manager front-ends, like GNOME Software, KDE Discover, and Wyse Management Suite.

Also, fwupd project encourages users to report both successful and failed updates back to LVFS. This is an optional feature but encouraged as it provides valuable feedback to LVFS administrators and OEM developers regarding firmware update process efficacy. You can send the report using:

fwupdmgr report-history

Thanks for reading, please let us know how well firmware update on your Linux system gone.

SHARE

Comments

Please add comments below to provide the author your ideas, appreciation and feedback.

Leave a Reply

Leave a Comment