This is an extension of @Dan's answer. Here is some more background, details, and summary info.
Update all firmware on your system, via the Linux command-line
This includes updating firmware in things like fingerprint readers, keyboards, UEFI, "system firmware" (including the BIOS, USB controllers, etc.), Samsung 990 PRO M.2 SSDs with old firmware that mistakenly rapidly wears and ruins the drive, etc.
Quick summary
These are the main commands. So, this is the one-liner minimal command to update all firmware on your system:
# (The first time only) install & run fwupdmgr
sudo apt update \
&& sudo apt install fwupd \
&& fwupdmgr refresh --force \
&& fwupdmgr get-updates \
&& fwupdmgr update
(Every subsequent time thereafter) just run fwupdmgr once it's installed
fwupdmgr refresh --force
&& fwupdmgr get-updates
&& fwupdmgr update
Details
From https://en.wikipedia.org/wiki/Fwupd:
fwupd is an open-source daemon for managing the installation of firmware updates on Linux-based systems, developed by GNOME maintainer Richard Hughes.
It connects to the Linux Vendor Firmware Service (LVFS), here: https://fwupd.org/, which states:
The Linux Vendor Firmware Service is a secure portal which allows hardware vendors to upload firmware updates.
This site is used by all major Linux distributions to provide metadata for clients such as fwupdmgr and GNOME Software.
So, we use fwupdmgr to check for firmware updates (which are available in the LVFS at https://fwupd.org/, and placed there by the manufacturers), and install them if available.
fwupdmgr command summary
I have marked the main commands with <==== to make them stand out.
# Update your apt package manager's list of available packages to install,
# and their versions
sudo apt update
Install the fwupd package
sudo apt install fwupd
Check the help menu for fwupd
fwupdmgr --help
Check the version
fwupdmgr --version
List all devices that support firmware updates, and their current versions
fwupdmgr get-devices
Download the latest metadata from the LVFS (Linux Vendor Firmware Service)
server
fwupdmgr refresh --force # <====
Check for firmware updates
- This lists all devices with no available updates (because they are
already up-to-date) at the top.
- Below that, it lists all devices with available updates, including the
current version first, followed by the new version available.
fwupdmgr get-updates # <====
Perform all firmware updates (as listed by fwupdmgr get-updates)
fwupdmgr update # <====
Alias to the above fwupdmgr update command
fwupdmgr upgrade
These are the main commands. So, this is the one-liner minimal command to update all firmware on your system:
sudo apt update \
&& sudo apt install fwupd \
&& fwupdmgr refresh --force \
&& fwupdmgr get-updates \
&& fwupdmgr update
Notes about fwupdmgr refresh
@Pablo Bianchi first told me about fwupdmgr refresh in his comment here:
According to Arch wiki and official docs it seems to be refresh instead of get-updates (probably should be list-updates).
To learn about fwupdmgr refresh, see:
fwupdmgr --help | less -RFX and search for "refresh". It states:
refresh [FILE FILE_SIG REMOTE-ID]
Refresh metadata from remote server
https://wiki.archlinux.org/title/fwupd
https://github.com/fwupd/fwupd
If you run fwupdmgr refresh without having run it manually before, it may say something like this:
Firmware metadata last refresh: 4 hours ago. Use --force to refresh again.
This seems to indicate that it automatically refreshes the metadata from the server periodically, perhaps once per day, else it would be much more time than 4 hours since the last refresh. So, perhaps you don't really need to manually run this command at all, ever. Nevertheless, it's nice to have this level of control.
So, if you want to force a refresh immediately, run fwupdmgr refresh --force.
Example run and output:
$ fwupdmgr refresh --force
Updating lvfs
Downloading… [***************************************]
Successfully downloaded new metadata: 1 local device supported
Example run
Here is an example run of the fwupdmgr update command on my system when it is upgrading my "system firmware" from v1.13.1 to 1.18.0.
Just press Enter to accept the default options when asked a question. The defaults are in capital letters. Ex: in Perform operation? [Y|n]--the default is Y (yes), and in Restart now? [y|N], the default is N (no).
$ fwupdmgr update # <====
Devices with no available firmware updates:
• VEN 04F3:00 04F3:311C
• Fingerprint Sensor
• PC801 NVMe SK hynix 1TB
• SSD 970 EVO Plus 2TB
• TPM 2.0
• UEFI Device Firmware
• UEFI Device Firmware
• UEFI dbx
╔══════════════════════════════════════════════════════════════════════════════╗
║ Upgrade System Firmware from 1.13.1 to 1.18.0? ║
╠══════════════════════════════════════════════════════════════════════════════╣
║ This stable release fixes the following issues: ║
║ ║
║ • This release contains security updates as disclosed in the Dell ║
║ Security Advisories. ║
║ • Fixed the issue where the Wake on Approach feature does not work when ║
║ the system enters Modern Standby mode. This issue occurs after updating the ║
║ BIOS. ║
║ • Fixed the issue where the system audio is distorted when you play ║
║ videos. ║
║ ║
║ Precision 5570 must remain plugged into a power source for the duration of ║
║ the update to avoid damage. ║
╚══════════════════════════════════════════════════════════════════════════════╝
Perform operation? [Y|n]:
Downloading… [***************************************]
Downloading… [***************************************]
Decompressing… [***************************************]
Decompressing… [***************************************]
Authenticating… [***************************************]
Authenticating… [***************************************]
Restarting device… [***************************************]
Writing… [***************************************]
Scheduling… [***************************************]
Decompressing… [***************************************]
Restarting device… [***************************************]
Waiting… [***************************************]
Successfully installed firmware
Do not turn off your computer or remove the AC adapter while the update is in progress.
An update requires a reboot to complete. Restart now? [y|N]:
At this point, you should reboot the system. Either choose y above, or run reboot, or use the GUI menus to reboot. When the computer gets to the BIOS flash screen, it will automatically begin applying the firmware updates, as shown here:

Once you finish rebooting, run fwupdmgr get-updates one more time and choose "Yes" to upload a report to the manufacturer to help them improve their firmware ugprade process. You'll see this request: Upload report now? (Requires internet connection) [Y|n]. Here is the full run and output after the reboot:
$ fwupdmgr get-updates
Devices with no available firmware updates:
• PC801 NVMe SK hynix 1TB
• SSD 970 EVO Plus 2TB
• TPM 2.0
• UEFI Device Firmware
• UEFI Device Firmware
• VEN 04F3:00 04F3:311C
• Fingerprint Sensor
• UEFI dbx
Devices not currently updatable:
• System Firmware — Cannot install update when not on AC power
________________________________________________
Devices that have been updated successfully:
• System Firmware (1.13.1 → 1.18.0)
Uploading firmware reports helps hardware vendors to quickly identify failing and successful updates on real devices.
Upload report now? (Requires internet connection) [Y|n]:
If you run fwupdmgr update now (or even before the reboot above, for that matter), you'll see that everything is up-to-date. Here is an example run of fwupdmgr update again on my system after performing the above upgrade via fwupdmgr update. All firmware now either has no updates available, or is already up-to-date:
$ fwupdmgr update
Devices with no available firmware updates:
• VEN 04F3:00 04F3:311C
• Fingerprint Sensor
• PC801 NVMe SK hynix 1TB
• SSD 970 EVO Plus 2TB
• TPM 2.0
• UEFI Device Firmware
• UEFI Device Firmware
• UEFI dbx
Devices with the latest available firmware version:
• System Firmware
And, if you run fwupdmgr get-updates again now, you'll see No updates available at the very bottom of its output, as shown here:
$ fwupdmgr get-updates
Devices with no available firmware updates:
• VEN 04F3:00 04F3:311C
• Fingerprint Sensor
• PC801 NVMe SK hynix 1TB
• SSD 970 EVO Plus 2TB
• TPM 2.0
• UEFI Device Firmware
• UEFI Device Firmware
• UEFI dbx
Devices with the latest available firmware version:
• System Firmware
No updates available
References
- @Dan's answer
- https://en.wikipedia.org/wiki/Fwupd
- https://fwupd.org/ - the main site that
fwupdmgr connects to, and to which manufacturers upload firmware updates to be used by fwupdmgr
- The help menu (piped to the
less viewer/pager): fwupdmgr --help | less -RFX
- https://wiki.archlinux.org/title/fwupd
- https://github.com/fwupd/fwupd
See also
https://itsfoss.com/update-firmware-ubuntu/
Note that if you're trying to upgrade Samsung SSD firmware on Windows, using the Samsung Magician Software GUI is recommended instead. It runs on Windows, MacOS, and Android, but unfortunately doesn't run on Linux. You can download it here: https://semiconductor.samsung.com/us/consumer-storage/support/tools/. It will upgrade the buggy firmware on the Samsung M.2 980 Pro / 990 Pro, etc. SSDs.
For Linux, try the fwupdmgr update command above instead. I tried fwupdmgr with the SSD in an external Sabrent USB 3.2 enclosure, and unfortunately it was unable to detect the Samsung 980 Pro SSD that way. I'll try it again next with the SSD inside the laptop, running fwupdmgr get-updates and fwupdmgr update from an Ubuntu Live USB, to see if that works.
The trick is to try to update the firmware without first using the drive, so as to not damage it, so I need a way to update its firmware with nothing on the drive yet, and with the drive internally installed into the target laptop so it can be detected properly, but while running Linux, for instance, from an external Live USB or something since the internal SSD will be empty.
LinuxOPsys: How to Update Firmware on Ubuntu using fwupd