Home Firmware Updating your firmware

Updating your firmware

Last updated on Feb 12, 2026

Keeping your firmware up to date helps your system stay secure, stable, and compatible with new hardware and software.

This guide shows how to update firmware safely using LVFS (Linux Vendor Firmware Service).

Important notes

  • 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, follow their documentation: https://www.qubes-os.org/doc/how-to-update/

Before you start

  • Plug your laptop into AC power and keep it connected during the update.
  • Avoid suspend/hibernation during flashing (keep the lid open if your system sleeps when closed).
  • Make sure you have a stable internet connection.
  • Don’t force power-off while an update is in progress.

1) Check your current firmware versions

Open a terminal (for example, Ctrl + Alt + T), then run:

BIOS version

cat /sys/class/dmi/id/bios_version

EC version

cat /sys/class/dmi/id/ec_firmware_release

(Optional) Confirm fwupd can see your devices:

fwupdmgr get-devices

2) Install the required tools

To update via LVFS, you need fwupd.

Ubuntu / Linux Mint / elementary OS / Zorin OS (and other Ubuntu derivatives)

sudo add-apt-repository ppa:starlabs/main
sudo add-apt-repository universe
sudo apt update
sudo apt install fwupd libflashrom1

Fedora (GNOME/KDE)

sudo dnf install fwupd

Arch / Manjaro

sudo pacman -S fwupd

openSUSE

sudo zypper install fwupd

If you hit errors, jump to Troubleshooting.

3) Install firmware updates

Option A: Terminal

Refresh metadata

fwupdmgr refresh

Check what updates are available

fwupdmgr get-updates

Install updates

fwupdmgr update

If fwupdmgr asks to reboot (or schedules an offline update), reboot when prompted.

Confirm versions (after updating)

Re-run the version checks from Step 1, or use:

fwupdmgr get-history

Option B: Desktop apps

Below are the most common desktop update paths. Pick the one that matches your distro.

elementary OS

Distro(s): elementary OS (v6+)

From version 6 onward, firmware updates appear in System Settings → System → Firmware.

elementarySystem

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

elementaryDetails

GNOME Software

Distro(s): Ubuntu (GNOME), Fedora Workstation (GNOME), Zorin OS, openSUSE (GNOME), Arch (GNOME), Manjaro GNOME, Debian (GNOME)

Firmware updates appear alongside your normal software updates in the GNOME Software app.

KDE Discover

Distro(s): Kubuntu, KDE Neon, Fedora KDE, Manjaro KDE

Firmware updates appear in Discover, just like normal app updates.

KDEDiscover

GNOME Firmware

Distro(s): most distros (useful when firmware updates aren’t integrated into your software center)

If your distro doesn’t integrate firmware updates into a software center, you can use the standalone GNOME Firmware app (available via most package managers, even on non-GNOME systems).

You can check for updates via the menu → Check for Updates.

If none of the above options are available, you can still manage firmware updates from the terminal.

4) Testing branch (optional)

If you want to help test firmware updates before their official release, you can enable the LVFS testing remote:

Enable

fwupdmgr enable-remote lvfs-testing

Disable

fwupdmgr disable-remote lvfs-testing

Downgrade back to stable

fwupdmgr downgrade

Please note: ensure you have a recovery option before enabling the testing remote.

Troubleshooting

No updates showing

Try forcing a refresh and listing updates again:

fwupdmgr refresh --force
fwupdmgr get-updates

You can also check enabled remotes:

fwupdmgr get-remotes

IO access errors

Do I need iomem=relaxed?

You only need this if fwupdmgr fails with an IO/memory access error. Common messages include:

  • /dev/mem mmap failed: Operation not permitted
  • Message recipient disconnected from message bus without replying (sometimes paired with the error above)

If your firmware update works, you don’t need to change anything.

How to confirm it’s enabled

iomem=relaxed is a kernel boot parameter (set via your bootloader/GRUB), not something you change inside fwupd.

After you’ve applied the change and rebooted, you can confirm the running kernel received it by checking the active boot parameters:

cat /proc/cmdline

If you see iomem=relaxed in the output, it’s enabled.

If it’s needed

If you see the errors above, add the iomem=relaxed kernel parameter:

Debian-based distros

sudo sed -i 's/quiet/quiet iomem=relaxed/g' /etc/default/grub
sudo update-grub

Fedora

sudo sed -i 's/quiet/quiet iomem=relaxed/g' /etc/default/grub
sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Arch (GRUB)

sudo sed -i 's/quiet/quiet iomem=relaxed/g' /etc/default/grub
sudo grub-mkconfig -o /boot/grub/grub.cfg

Reboot after making the change.

Version number mismatch

If you see a message that version numbers don’t match:

fwupdmgr update --force

Failed to connect to daemon

If you see a timeout activating org.freedesktop.fwupd, delete the pending DB:

sudo rm /var/lib/fwupd/pending.db

Other errors

Run the updater script:

bash <(curl -s https://raw.githubusercontent.com/StarLabsLtd/firmware/main/updater.sh)

If this doesn’t work on your distribution, you can use a Live USB with Ubuntu to update.