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.
Comments