Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Framework Laptop 16 — Firmware Update Guide (Arch Linux)

Applies to: Framework Laptop 16 (AMD Ryzen 7040 Series) running Arch Linux
Updated: April 2026
Current stable BIOS: 4.03


Overview

There are two separate firmware components to update:

  1. Input module firmware (keyboard, numpad, macropad) — must be done first
  2. BIOS/UEFI — staged via fwupd, applied on reboot

Both can be handled through fwupdmgr if you’re on fwupd 2.0.16 or later.


Prerequisites

1. Check your current BIOS version

sudo dmidecode -s bios-version

If you’re on anything older than 4.03, this guide applies to you.

2. Check your fwupd version

fwupdmgr --version

Look for org.freedesktop.fwupd — you need 2.0.16 or later. On Arch, you almost certainly have a newer version. If you’re behind, update first:

sudo pacman -Syu fwupd

3. Ensure fwupd is installed

sudo pacman -S fwupd

4. Plug in your charger

The update will fail if you’re not on AC power. Additionally, if your battery is at 100%, LVFS may refuse to update (it checks charging status). If that happens, discharge a few percent, plug back in, then proceed.


Step 1 — Refresh firmware metadata

fwupdmgr refresh --force

This pulls the latest metadata from LVFS (Linux Vendor Firmware Service), including Framework’s stable firmware releases.


Step 2 — Check available updates

fwupdmgr get-updates

You should see updates listed for:

  • One or more input modules (keyboard, numpad, macropad) — firmware 0.3.1
  • Framework Laptop 16 System Firmware — BIOS 4.03

Note: If you only see the BIOS update and not the keyboard firmware, it may mean your keyboard modules are already up to date, or that fwupd hasn’t detected them yet. Try unplugging and replugging the laptop’s power, then re-run fwupdmgr refresh --force.


Step 3 — Apply all updates

fwupdmgr update

What happens:

  1. Input module firmware flashes immediately and inline — no reboot required for this step.
  2. BIOS update is staged for the next reboot. fwupd will tell you to restart.

⚠️ Do not interrupt either flash. Do not close the lid, unplug the charger, or force-power-off during this process.


Step 4 — Reboot

sudo reboot

After reboot, your system will enter a UEFI firmware update shell automatically. You’ll see a progress bar. The laptop will reboot a second time once flashing is complete — this is normal.

Do not power off during this process. The whole thing takes 1–3 minutes.


Step 5 — Verify the update

Once you’re back in Arch, confirm the new BIOS version:

sudo dmidecode -s bios-version

Expected output: 4.03

You can also verify via fwupd:

fwupdmgr get-devices

What’s new in BIOS 4.03 (vs 3.x)

Fix / FeatureDetails
CPU power table correctedCPU was incorrectly capped at 35W under load
False “Fan Not Detected” error fixedSpurious fan warning on boot eliminated
Lid-close wake fixedKeyboard/input modules no longer wake the system when lid is closed
Dual-port adapter stability100W adapter no longer disconnects when switching ports
POST RAM test fixedNow correctly validates more than 64GB of memory
PROCHOT throttling fixedCPU no longer throttles unexpectedly under heavy load
NVIDIA RTX 5070 support addedNot relevant unless you have the GPU expansion module

Troubleshooting

Update doesn’t show up in get-updates

  • Run fwupdmgr refresh --force again
  • Make sure you’re on AC power
  • Check that the LVFS stable remote is enabled: fwupdmgr get-remotes
  • If the lvfs remote shows enabled: false, enable it: sudo fwupdmgr enable-remote lvfs

Battery at 100% — update refused

Discharge the battery to ~95%, plug back in, then retry:

fwupdmgr refresh --force
fwupdmgr update

Keyboard firmware update not detected

If fwupd doesn’t see your input modules, you can update them manually using the UF2 method. See the Framework keyboard firmware guide for instructions.

Downgrading

If you need to roll back after updating to 4.03, the only supported downgrade path is to BIOS 3.05 or newer. Downgrading to versions older than 3.05 is not supported.


References