Firmware updates on Linux via fwupd
Keeping your computer secure and running smoothly requires more than just software updates: firmware updates are equally essential.

Updating the firmware may fix bugs, harden security, improve performance, and even add new features. Or screw up something, and then you may have a “bricked” device (hardware that is as useful as a brick), or a regression in the functionality/performance/security. Update at your own risk. It’s usually a good idea to update firmware and software though.
Some vendors offer a way to update the firmware of their products, usually via some proprietary software they provide. To update the firmware of all devices your machine has, you can go over the website of their vendors and follow their documentation, if you can find it and have the right OS. Good luck.
Or use fwupd
: a vendor-agnostic tool to discover, download, and update
firmware.
The Linux Vendor Firmware Service (LVFS) project provides
two software components to update the firmware of devices: a daemon, fwupd
,
to update the device firmware; and a CLI client, fwupdmgr
, to view and apply
updates. There are also graphical user interfaces like GNOME Software and KDE
Discover to interact with fwupd
.
And the killer functionality of this project is that LVFS provides not only the tools but also the firmware for many, but not all, devices. More than 100 vendors provide firmware updates via LVFS and all you need to do is run a command (or press a button) to update all your firmware.
Usage is straightforward, assuming you installed it:
- download the latest metadata from LVFS
$ fwupdmgr refresh --force Updating lvfs Downloading… [***************************************] Successfully downloaded new metadata: Updates have been published for 4 of 23 local devices
- Optionally list the available updates with
fwupdmgr get-updates
. The output is too long for me to copy-paste here, but worth reviewing. - Update what is available:
$ fwupdmgr update Devices with no available firmware updates: • ELAN067F:00 04F3:3309 • Element Hub • UEFI Device Firmware • UMIS RPJTJ512MGE2QDQ • USB3.0 Hub ╔══════════════════════════════════════════════════════════════════════════════╗ ║ Upgrade System Firmware from 0.1.15 to 0.1.31? ║ ╠══════════════════════════════════════════════════════════════════════════════╣ ║ ThinkPad L14L15 Gen3 AMD System Firmware ║ ║ ║ ║ • MR01221(N3AET79W) - Updated Realtek UNDI driver to ver.2.043. ║ ║ • MR00592(N3XET49W) - add dbx update 23/05 ║ ║ • MR00616(N3XET51W) - Fixed Various vulnerabilities in NetworkPkg IP ║ ║ stack implementation. ║ ║ • MR00621(N3XET51W) - Add MSFT 2023 kek/db ║ ║ ║ ║ 5 Update Absolute module to v2.8 (154756) ║ ║ ║ ║ • Improve boot time for DASH Enable ║ ║ • Correct the output values of the CU_WMI_script.ps1 ║ ║ • CP20240328_0006 CS22 Wi-Fi6E for CA ║ ║ ║ ║ 21C60010BO must remain plugged into a power source for the duration of the ║ ║ update to avoid damage. ║ ╚══════════════════════════════════════════════════════════════════════════════╝ Perform operation? [Y|n]: y Waiting… [***************************************] Successfully installed firmware
And that’s it.