fwupdmgr(1)
π fwupdmgr(1) β the fwupdmgr man page, but make it cute
okay bestie, pull up a chair, grab a strawberry π, because we're about to talk about fwupdmgr, the firmware update manager client utility. yes it's a real thing, yes it's iconic, and yes it does your BIOS updates so you don't have to think about it. you're welcome.
β¨ NAME β¨
fwupdmgr β firmware update manager client utility. girl, it manages your firmware. that's the whole vibe. π«Ά
π SYNOPSIS π
fwupdmgr [CMD]
π¦ DESCRIPTION π¦
fwupdmgr is a command line fwupd client, and it's meant to be used interactively β like, by a human, tapping away, living her best life. π
β οΈ real talk though: the terminal output between versions of fwupd is not guaranteed to be stable. so if you're planning to parse the results (ngl, very main character of you) then adding --json might be just what you need. fr fr.
There are also graphical tools to firmware available for various desktop environments. these applications may be more useful to many users compared to using the command line. no shade, it's just easier for some people and that's valid β¨
- GNOME Software: <https://wiki.gnome.org/Apps/Software>
- GNOME Firmware: <https://gitlab.gnome.org/World/gnome-firmware>
- KDE Discover: <https://userbase.kde.org/Discover>
- Canonical Firmware Updater: <https://github.com/canonical/firmware-updater>
- System76 Firmware Manager: <https://github.com/pop-os/firmware-manager>
For automated configuration management and reactive automation, <https://mgmtconfig.com/> provides [resources](https://mgmtconfig.com/docs/resources/) for managing fwupd remotes, individual devices, and system-wide updates, as well as a [function](https://mgmtconfig.com/docs/functions/) that reports when a reboot is needed. It communicates with fwupd over D-Bus; firmware verification and installation remain handled by fwupd. like, mgmt does the orchestrating, fwupd does the actual heavy lifting. teamwork, slay π
On most systems fwupd is configured to download metadata from the Linux Vendor Firmware Service <https://fwupd.org/> and more information about the LVFS is available here: <https://lvfs.readthedocs.io/> π
Most users who want to just update all devices to the latest versions can do fwupdmgr refresh and then fwupdmgr update. At this point the system will asking for confirmation, update some devices, and may then reboot to deploy updates that require a restart. and that's it. that's the whole ritual. refresh, update, maybe reboot, go touch grass. πΈ
π OPTIONS π
The fwupdmgr command takes various options depending on the action. The actions are split into rough behavior groups as follows:
π Interacting With Discovered Devices π
The following actions can be used to view details about the enumerated devices on the system:
get-devicesβ Show all devices, with optional filtering applied using--filteror--filter-protocol.get-updatesβ Show all the available updates for a specific device.get-upgradesβ Alias toget-updates. same energy, different name πget-releasesβ Show all the installable versions (older, the same, or newer) for a specific device.get-detailsβ View details about a specific.cabarchive, even if the target device has not been found on this system.searchβ Find updates present in the metadata, regardless if the device has been enumerated on the system.
Searching will match firmware releases by:
- The full GUID of a device, e.g.
eb68dbae-3aef-5077-92ae-9016d1f0c856 - The AppStream ID of a device, e.g.
work.frame.Desktop.RyzenAIMax300.BIOS.firmware - The name (full or subset) of a firmware update, e.g.
Desktop Ryzen AI MAX 300 - The name (full or subset) of a firmware vendor, e.g.
Framework - The protocol used by the firmware, e.g.
org.uefi.capsule - Any issue reported as solved by the update, e.g.
CVE-2022-21894 - Any cabinet checksum included with the update, in SHA-1 or SHA-256 format, e.g.
b34950fc65dabc0cb50e4c5f081829e40bf92e13
π₯ Deploying Firmware π₯
The following actions can be used to install firmware onto devices:
updateβ Update each device in turn to the newest available version.installβ Install any available release to a specific device.reinstallβ Re-install the same version to a specific device if available.downgradeβ Install an older release to a specific release if available.switch-branchβ Switch between different firmware "branches" for a specific device. For instance, there may be a "community supported" branch and a "non-free upstream vendor" branch for the exact same hardware, both available on the LVFS. pick your fighter π₯local-installβ Install a local firmware archive. The regularinstallwill also fall back to this if the first argument is a local file that exists.activateβ Set the installed firmware version as running, which may mean the device becomes offline or unresponsive for a few moments. hold your breath, she'll be back πsyncβ Install all releases with a matching BKC tag if a "Best Known Configuration" has been set for the local machine.
π Approved Firmware π
The following actions can be used to allow specific firmware releases from being installed:
The following actions can be used to control the allowlist of specific firmwares:
set-approved-firmwareβ Sets the list of approved firmware for remotes. Once the allow-list has been set to a non-empty value only firmware matching these checksums will be marked as installable. It is still possible to install firmware "manually" usingfwupdmgr installβ this setting only affects firmware updates referenced in enabled remotes with theApprovalRequired=truesetting.get-approved-firmwareβ Gets the list of approved firmware, returning an empty list if there is no allow-list in place.
The checksums used for allowing are the cabinet archive checksums in SHA-1 or SHA-256 format.
π§ Emulation π§
Device emulation allows recording the device behavior so that we can replay the device responses and test writing firmware without that actual hardware plugged in. fake it till you make it, but make it technically rigorous. β¨
The following actions can be used when emulating devices:
emulation-tagβ Adds devices to watch for future emulation.emulation-saveβ Save captured device emulation data to a JSON file. Only data from devices that have previously been tagged for emulation will be returned.emulation-loadβ Load device emulation data from a JSON file.emulation-untagβ Removes devices to watch for future emulation.
When tagging devices, either the device ID or GUID can be used to identify the device. iykyk π
The following actions can be used to run automated device tests:
device-emulateβ Emulate a device using a JSON manifest, which will operate on emulated devices only.device-testβ Test a device using a JSON manifest which downloads and verifies cabinet archives and deploys them on actual physical devices.
π Remotes π
The following actions can be used to control the remotes (the online firmware metadata store) configured in the daemon:
refreshβ Download the latest online metadata from configured and enabled remotes.get-remotesβ Get the list of configured remotes, which may or may not be enabled.enable-remoteβ Enable a pre-configured remote so that it can be refreshed and used.disable-remoteβ Disable a remote, but do not delete or remote stored metadata.modify-remoteβ Edit a remote, for instance turning on properties such asAutomaticReports.clean-remoteβ Cleans a remote, deleting metadata where required.enable-remote-authβ Enable an authenticated (typically embargo) remote so that it can be refreshed and used. secret girlie stuff π€«
π Historical Data π
The following actions can be used to upload, export or clear historical data:
report-exportβ Export firmware history as an offline file for manual upload to a service such as the LVFS.report-historyβ Share firmware history with the remote owner, typically used to indicate the success ratio for a specific update. In some cases, sharing the history will return results to webpages describing the failure in more details, some with workarounds.get-historyβ Show the firmware update history as stored by fwupd.get-resultsβ Show the result of the last firmware update for a specific device.clear-resultsβ Clears the results from the last update if possible.report-devicesβ Upload the list of updatable devices to a remote server so that they can put pressure on the vendor to support Linux users. collective action bestie, we love to see it π«Ά
π‘οΈ Platform Security π‘οΈ
The following actions can be used to view or fix platform security issues:
securityβ Gets the list of host security attributes which are used to evaluate the security level of the machine.security-fixβ Fix a specific host security attribute failure.security-undoβ Undo the host security attribute fix, which may be required ifsecurity-fixcaused a regression.
The following actions can be used to list or set firmware BIOS settings:
get-bios-settingsβ Retrieve BIOS firmware settings and the allowable values.set-bios-settingβ Sets one or more BIOS firmware settings.verify-updateβ Update the stored checksums that are used by the verify action.
β Others β
The following actions may be for from non-interactive scripts or use in CI:
check-reboot-neededβ Check if any devices are pending a reboot to complete update.device-waitβ Wait for a device to appear in the daemon device list.downloadβ Download a file using the same mechanisms that firmware and metadata are used.modify-configβ Modifies a daemon configuration value such asIgnorePower. Seeman fwupd.conffor the full list of variables.reset-configβ Resets a daemon configuration section back to the default values.quitβ Asks the daemon to quit after it has finished any firmware update in progress.inhibitβ Inhibit the system to prevent accidental manual or automatic upgrades.uninhibitβ Uninhibit the system to allow upgrades.unlockβ Unlocks the device for firmware access, which may be required for some platform devices.get-pluginsβ Show all plugins registered with the daemon.hwidsβ Return all the hardware IDs for the machine. These GUIDs are sometimes called CHIDs when using Microsoft Windows, and the values returned by fwupd should also match those fromComputerHardwareIds.exe.monitorβ Monitor the daemon for events.
π EXIT STATUS π
Commands that successfully execute will return "0", with generic failure as "1". the classic duo.
There are also several other exit codes used:
- A return code of "2" is used for commands that have no actions but were successfully executed
- "3" is used when a resource was not found
so if you get a 3, the thing you were looking for is simply not there. she's not ghosting you, she's just absent. π
π BUGS π
See GitHub Issues: <https://github.com/fwupd/fwupd/issues>
π SEE ALSO π
<fwupdtool(1)> <fwupd.conf(5)>
and that's the whole page bestie, no cap. this was version 2.1.9 of the fwupdmgr(1) man page, so go forth, refresh your remotes, update your firmware, and be the main character your hardware deserves. mwah π
β¨π
π¦ where this page comes from
- arch rolling: fwupd 2.1.9-1 Β· LGPL-2.1-or-later
- fedora 44: fwupd 2.1.9-1.fc44 Β· LGPL-2.1-or-later
- fedora 44: fwupd 2.1.9-1.fc44 Β· LGPL-2.1-or-later
- nixpkgs unstable: fwupd 2.1.9
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms