fwupd.conf(5)
π fwupd.conf β the config file for the fwupd daemon π
okay so before we even start: this is the manual page for fwupd.conf(5), aka the β¨Configuration File Formatβ¨ for fwupd. bestie, you're gonna want a snack, it's a long one.
πΈ NAME πΈ
fwupd.conf β the configuration file for the fwupd daemon. that's it, that's the name, slay.
π¦ SYNOPSIS π¦
The /etc/fwupd/fwupd.conf file is the main configuration file for the fwupd daemon. Like, the whole file format and every possible parameter is documented right here, for reference purposes. we're giving you the full lore, no gatekeeping π
π FILE FORMAT π
The file has multiple sections, and each section can hold optional parameters. Parameters look like this:
[section]
key = value
The file is line-based, bestie. Every newline-terminated line is either a comment, a section name, or a parameter. that's the whole vibe.
Section names and parameter names are case sensitive. don't come for me, it's just how it is.
Only the first equals sign in a parameter is significant. Whitespace before or after that first equals sign gets discarded, same as leading and trailing whitespace in a parameter value. But internal whitespace inside the value? retained. it stays. periodt.
Any line starting with a hash (#) is ignored, and so are lines that are only whitespace. ghost lines, we don't see them π«Ά
The values after the equals sign are all either:
- a string (no quotes needed, we're not doing all that),
- an unsigned integer, or
- a boolean, which you can write as
trueorfalse.
Case is not significant in boolean values, but it is preserved in string values. iconic behaviour tbh.
π DAEMON PARAMETERS π
The [fwupd] section can contain the following parameters β this is the main character section fr fr:
DisabledDevices=β let you block specific devices by their GUID, using semicolons as the delimiter.DisabledPlugins=β let you block specific plugins by name. runfwupdmgr get-pluginsto get the list of plugins. iykyk.ArchiveSizeMax=β the maximum archive size that can be loaded, in Mb. the default is 25% of your total system memory.IdleTimeout=300β idle time in seconds before the daemon shuts down. a value of0means "never".
NOTE: some plugins might inhibit the auto-shutdown, for instance thunderbolt. rude of them but ok.
IdleInhibitStartupThreshold=500β if the daemon takes more than this time to start up (in milliseconds) then inhibit the idle shutdown timer. a value of0specifies "never".VerboseDomains=β a comma separated list of domains to log in verbose mode. if unset, no domains are set to verbose. if set to*, all domains are verbose, which is the same as running the daemon with--verbose --verbose. go off, live your loudest life.UpdateMotd=trueβ update the message of the day (MOTD) on device and metadata changes.EnumerateAllDevices=falseβ for some plugins, enumerate only devices supported by metadata.ApprovedFirmware=β a list of firmware checksums that has been approved by the site admin. If unset, all firmware is approved.UriSchemes=file;https;http;ipfsβ allowed URI schemes, in preference order. failed downloads from the first scheme get retried with the next one in order until no choices remain. it's giving backup plan energy.IgnorePower=falseβ ignore power levels of devices when running updates.IgnoreRequirements=falseβ ignore some device requirements, for instance removing the generic GUID requirement of a CHID, child, parent or sibling.
this is not recommended for production systems, although it may be useful for firmware development. you've been warned bestie π
IgnoreEfivarsFreeSpace=falseβ ignore the efivars free space requirement fordb,dbx,KEKandPKupdates. this may be required on Linux kernels older than6.4, or where the hardware does not support UEFI RT->QueryVariableInfo.OnlyTrustPostQuantumSignatures=falseβ only trust post-quantum cryptographic signatures. this is only recommended when you are sure the firmware contains a valid PQ signature. πOnlyTrusted=trueβ only support installing firmware signed with a trusted key. do not set this tofalseon a production or trusted system. like, genuinely, don't.ShowDevicePrivate=trueβ show data such as device serial numbers which some users may consider private. πTrustedUids=β UIDs matching these values that call the D-Bus interface should be marked as trusted.HostBkc=β a comma separated list of best known configuration IDs to be used when usingfwupdmgr sync. this can downgrade firmware to factory versions or upgrade firmware to a supported config level. e.g.vendor-factory-2021q1,mycompany-2023.ReleaseDedupe=trueβ deduplicate duplicate releases by the archive checksum that are available from more than one source.ReleasePriority=localβ when the same version release is available from more than one source, this option can be used to either prefer the local version (avoiding a potentially expensive download) or to prefer the remote version (which may have updated metadata such as release notes).
The possible options are local or remote, or empty to not make any adjustment to the policy, relying on the OrderAfter and OrderBefore sections in the remote. no notes, that's just the deal.
EspLocation=β set the preferred location used for the EFI system partition (ESP) path. this is typically used if UDisks was not able to automatically identify the location for any reason.RequireImmutableEnumeration=falseβ don't allow fwupd plugins to directly interact with devices during probe or setup stages. the kernel should provide all device information in sysfs files or udev properties.
heads up: this will block some plugins from working. π
Manufacturer=ProductName=ProductSku=Family=EnclosureKind=BaseboardProduct=BaseboardManufacturer=
these override values for SMBIOS or Device Tree data on the local system. they're only required when the SMBIOS or Device Tree data is invalid, missing, or to simulate running on another system. empty values should be used to populate blank entries, or add values to populate specific entries. it's giving cosplay but for hardware β¨
TrustedReports=VendorId=$OEMβ vendor reports matching these expressions will have releases marked astrusted-report. each OR section is delimited by a;and each AND section is delimited by&, e.g.DistroId=chromeosβ any report uploaded from ChromeOS is trusted.DistroId=chromeos&RemoteId=lvfsβ any report found in thelvfsremote uploaded from a ChromeOS machine is trusted.DistroId=fedora&VendorId=19β any report uploaded from Fedora 19 is trusted.DistroId=fedora&VendorId=$OEMβ any report uploaded from Fedora by the hardware OEM is trusted.DistroId=fedora;DistroId=rhel&DistroVersion=9β any report uploaded from Fedora (any version) or from RHEL 9 is trusted.
NOTE: aVendorIdof$OEMrepresents the OEM vendor ID of the vendor that owns the firmware, for example, where Lenovo QA has generated a signed report for a Lenovo laptop.
There are also three os-release values available, $ID, $VERSION_ID and $VARIANT_ID, which allow expressions like:
DistroId=$IDDistroId=$ID,DistroVersion=$VERSION_IDFlags=is-upgrade,from-oem
any flags listed here must all be matched by the report.
P2pPolicy=metadataβ this tells the daemon what peer-to-peer policy to use. for instance, using Passim, an optional local caching service. using peer-to-peer data might reduce the amount of bandwidth used on your network considerably. environmentally friendly queen behavior π
There are three possible values:
nothing: do not publish any filesmetadata: only publish shared metadata that is common to each machine.firmware: only publish firmware archives after the next reboot of the machine.
At some point in the future fwupd will change the default to metadata,firmware. π noted.
TestDevices=falseβ create virtual test devices and remote for validating daemon flows. this is only intended for CI testing and development purposes. don't be weird with it.
π UEFI_CAPSULE PARAMETERS π
The [uefi_capsule] section can contain the following parameters:
EnableGrubChainLoad=falseβ configure GRUB to launchfwupdx64.efiinstead of using other methods such as NVRAM or Capsule-On-Disk.DisableShimForSecureBoot=falseβ the shim loader is required to chainload the fwupd EFI binary unless thefwupd.efifile has been self-signed manually.RequireESPFreeSpace=0β amount of free space required on the ESP, for example using32for 32Mb. by default this is dynamically set to at least twice the size of the payload.DisableCapsuleUpdateOnDisk=falseβ allow ignoring the CapsuleOnDisk support advertised by the firmware.EnableEfiDebugging=falseβ enable the low-level debugging offwupdx64.efito theFWUPDATE_DEBUG_LOGEFI variable.
NOTE: enabling this option is going to fill up the NVRAM store much more quickly, and should only be enabled when debugging an issue with the EFI binary.
This value also has no affect when using Capsule-on-Disk as the EFI helper binary is not being used.
RebootCleanup=trueβ delete any capsule files copied to the ESP, and remove any EFI variables set for the update.
NOTE: disabling this option is only required when debugging the flash process and normal users should not need to change this setting. leave it alone bestie π«Ά
ScreenWidth=0β override the screen width in pixels of the EFI framebuffer as used by the UX capsule.ScreenHeight=0β override the screen height in pixels of the EFI framebuffer as used by the UX capsule.
π§ UEFI_DB PARAMETERS π§
The [uefi_db] section can contain the following parameters:
UpdateWindowsCA=falseβ the flash space used by UEFI updates is limited β if we update the Windows CA (when we're not dual-booted with Windows) then we are using the flash space we need for UEFIdbanddbxupdates.
This setting forces the Windows UEFI certificate to be updatable even if Microsoft Windows is not detected. budgeting, but for firmware πΈ
π MSR PARAMETERS π
The [msr] section can contain the following parameter:
MinimumSmeKernelVersion=5.18.0β minimum kernel version required for reliable AMD SME detection via theSYSCFGMSR.
This only needs to be modified by enterprise kernels that have cherry picked the feature into a kernel with an old version number. cherry picked?? we love a cherry pick π
π§ββοΈ REDFISH PARAMETERS π§ββοΈ
okay so the [redfish] section? it can hold these lil besties:
Uri=β the URI to the Redfish service, formatted likescheme://ip:portβ for instancehttps://192.168.0.133:443π«Username=β the username you use when connecting to the Redfish service.Password=β the password you use when connecting to the Redfish service. πBearerToken=β the bearer token used to authenticate to the Redfish service.CACheck=falseβ whether to verify the server certificate or not. this one is turned off by default. BMCs using self-signed certificates will not work unless the plugin does not verify it against the system CAs. no cap.IpmiDisableCreateUser=falseβ do not use IPMI KCS to create an initial user account if there's no SMBIOS data. setting it totrueprevents creating user accounts on the BMC automatically. π«ManagerResetTimeout=1800β the amount of time in seconds to wait for a BMC restart. that's 1800 seconds of just... waiting. patience is a virtue bestie π°οΈ
β‘ THUNDERBOLT PARAMETERS β‘
the [thunderbolt] section can contain these:
MinimumKernelVersion=4.13.0β the minimum kernel version to allow use of this plugin.
this only needs to be modified by enterprise kernels that have cherry picked the feature into a kernel with an old version number. yep, that specific π
DelayedActivation=falseβ forces delaying activation until shutdown/logout/reboot. dramatic much? but okay π
π°οΈ DELL_KESTREL PARAMETERS π°οΈ
the [dell_kestrel] section can contain this one:
UpdateOnDisconnect=trueβ delaying firmware activation until the dock cable is unplugged. unplug it and then the magic happens β¨
π§ͺ TEST PARAMETERS π§ͺ
the [test] section can contain these:
AnotherWriteRequired=falseβ do two passes of the write function. double the writing, double the fun.CompositeChild=falseβ if the device should have a child device. it's giving family tree π³DecompressDelay=0β delay in milliseconds to use when decompressing the test device.NeedsActivation=falseβ if the device needs activating before deploying the update.NeedsReboot=falseβ if the device needs a reboot before deploying the update.RegistrationSupported=β if the device should register with other plugins. squad goals fr fr π«ΆRequestDelay=10β delay in milliseconds to use when requesting user input from the user.RequestSupported=falseβ if the device interactive request is supported.VerifyDelay=0β delay in milliseconds to use when verifying the test device.WriteDelay=0β delay in milliseconds to use when writing the test device.WriteSupported=β if the device write is supported. if unsupported, the device write will not start. hard pass, literally π
π NOTES π
/etc/fwupd/fwupd.conf may contain either hardcoded or autogenerated credentials and must only be readable by the user that is running the fwupd process, which is typically root.
like bestie PLEASEEE lock that file down, it's holding secrets ππ
π SEE ALSO π
and that's a wrap on fwupd.conf(5) from version 2.1.9 bestie π go forth, edit your configs responsibly, and remember: the vibes are immaculate but the permissions are not optional. mwah πβ¨π
π¦ where this page comes from
- 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