Keeping your firmware up to date helps your system stay secure, stable, and compatible with new hardware and software.
This guide will show you how to update your firmware safely using LVFS (Linux Vendor Firmware Service).
⚠️ Important:
Please use LVFS for firmware updates. Using other methods (like flashrom or mtd) is not recommended and is done at your own risk.
If you are using Qubes OS, please follow their documentation here.
Step 1: Check Your Current Firmware Versions
1. Open your Terminal
You can do this by pressing Ctrl + Alt + T or searching for “Terminal” in your app menu.
2. Type the following commands to check your current versions:
BIOS
cat /sys/class/dmi/id/bios_version
EC
cat /sys/class/dmi/id/ec_firmware_release
These commands show you which firmware versions you currently have installed and will help you determine if there's an update available for you or not.
Step 2: Install the Required Tools
To update via LVFS, you need fwupd and flashrom.
These are standard tools used for managing firmware updates on Linux.
Ubuntu, Linux Mint, elementary OS, Zorin OS and other Ubuntu derivatives
Open your terminal and run:
sudo add-apt-repository ppa:starlabs/mainsudo add-apt-repository universesudo apt updatesudo apt install fwupd libflashrom1
If you face issues, please see the troubleshooting section of this article.
Step 3: Install Firmware Updates
Option 1: Using the Terminal
1. Download the latest updates
fwupdmgr refresh
2. Install updates
fwupdmgr update
Option 2: Using Your Desktop Environment
elementaryOS
From version 6 onward, firmware updates appear in System Settings → System → Firmware.
You can view current firmware details and install updates directly from there.

You can view the current firmware information and install updates by clicking on each component.

GNOME Software
(Used in Ubuntu, Fedora, Zorin OS, OpenSUSE, Arch, Manjaro GNOME, Debian)
Firmware updates appear alongside your normal software updates in the GNOME Software app.

KDE Discover
Used in Kubuntu, KDE Neon, Fedora KDE, Manjaro KDE - firmware updates appear in Discover, just like normal app updates.

GNOME Firmware
If your distribution doesn’t support the usual integrations, you can use the standalone GNOME Firmware app, available through most package managers (even on non-GNOME systems). Once installed, open Firmware Update to view supported devices in the left menu and install any available updates using the button in the bottom-right corner.

You can check for updates by clicking on the hamburger menu and selecting "Check for Updates".

You can manage your firmware and install updates from the terminal if none of the above options are available.
Step 4: Testing (Optional)
If you want to help test firmware updates before their official release, you can enable the testing branch:
fwupdmgr enable-remote lvfs-testing
If you want to opt out of these updates, you can run:
fwupdmgr disable-remote lvfs-testing
If you are disabling the testing remote, you can downgrade back to a stable version using this command:
fwupdmgr downgrade
Please note: Ensure you have a way to recover your firmware before enabling the testing remote.
Troubleshooting
IO Access
If you see a message Message recipient disconnected from message bus without replying or /dev/mem mmap failed: Operation not permitted. You'll need to add the iomem=relaxed kernel parameter. The two commands below will do this for you:
Debian-based distro's
sudo sed -i 's/quiet/quiet iomem=relaxed/g' /etc/default/grubsudo update-grub
Fedora/Arch
sudo sed -i 's/quiet/quiet iomem=relaxed/g' /etc/default/grub
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Version number mismatch
If you see a message that says the version numbers don't match, please use:
fwupdmgr update --force
Failed to connect to daemon
If you see Failed to connect to daemon: Error calling StartServiceByName for org.freedesktop.fwupd: Failed to activate service 'org.freedesktop.fwupd': timed out (service_start_timeout=25000ms), please delete the database with the following command:
sudo rm /var/lib/fwupd/pending.db
Other errors
Run the below script
bash <(curl -s https://githubusercontent.com/StarLabsLtd/firmware/refs/heads/main/updater.sh)
If this doesn't work on your distribution, you can use a Live USB with Ubuntu to update.
Help Centre