fwupd-remotes.d(5)
π fwupd-remotes.d β the remotes situation, explained π
okay bestie, gather round, because this is the manual page for fwupd-remotes.d(5) β aka the Remote File Format β and honestly? it's giving config-file realness. this is where the fwupd daemon keeps its little black book of remotes. let's get into it β¨
πΈ NAME πΈ
fwupd-remotes.d β the remotes used for the fwupd daemon. yes, remotes. the places your firmware updates come from. iconic behavior. π
β¨ SYNOPSIS β¨
so the two directories in question are /etc/fwupd/remotes.d and /var/fwupd/remotes.d, and they exist to hold β¨information about remote metadata sourcesβ¨. the complete description of the file format and every possible parameter is documented right here, for reference purposes. no cap.
π FILE FORMAT π
the file is made of multiple sections with optional parameters. parameters look like this, exactly:
[section]
key = value
the file is line-based, meaning every newline-terminated line is one of three things: a comment, a section name, or a parameter. that's it. that's the whole vibe check.
section and parameter names are case sensitive, so don't go getting cute with capitalization. π
only the first equals sign in a parameter is significant. whitespace before or after that first equals sign is discarded, same with leading and trailing whitespace in a parameter value. but internal whitespace within a value is retained β so keep your spacing on the inside exactly how you meant it.
any line beginning with a hash (#) is ignored, and so are lines that contain only whitespace. they simply do not exist to fwupd. bless. π
the values after the equals sign are all either a string (no quotes needed, bestie, we're not doing that), an unsigned integer, or a boolean, which can be given as true or false. case is not significant in boolean values, but it is preserved in string values.
for per-user credential storage, the remote Username and Password can also be stored in XDG_CONFIG_HOME rather than in /etc β for example, in ~/.config/fwupd/remotes.d/lvfs-embargo.conf. so you can keep your little secrets in your own home dir. π«Ά
π REMOTE PARAMETERS π
the [fwupd Remote] section can contain the following parameters. buckle up, there's a bunch, and every single one matters:
Enabled=falseβ whether this remote should even be considered when finding releases for devices. only enabled remotes get refreshed when you runfwupdmgr refresh, and only they're considered when figuring out what updates are available for each device. you can flip this value withfwupdmgr enable-remote.Title=β the single line description that shows up in any UI tools. the little nameplate. the display name. the β¨aestheticβ¨.MetadataURI=β the URL of the AppStream metadata to download and use. this should have a suffix of.xml.gzfor legacy metadata and.xml.xzfor the more modern format. only prefixes ofhttp://,https://andfile://are supported here. no funny business.FirmwareBaseURI=β the optional base URL of the cabinet archives to download. if you don't specify it, theMetadataURIbase URL gets used instead. again: only prefixes ofhttp://,https://andfile://are supported here.ApprovalRequired=falseβ if you set this totrue, then only releases that have been allow-listed withfwupdmgr set-approved-firmwarewill show up in CLI and GUI tools. gated. πReportURI=β the endpoint to use for sending success reports for firmware obtained from this remote, or blank to disable this feature entirely. blank = we don't talk about it.AutomaticReports=falseβ iftrue, success reports for firmware obtained from this remote are sent automatically, after the firmware update has completed. it just does it. on its own. π₯AutomaticSecurityReports=falseβ iftrue, HSI platform security reports get sent automatically when you runfwupdmgr security.NoPhasedUpdates=falseβ iftrue, the requirement check for random client phased deployment gets disregarded. here's the deets: a system's eligibility for a phased update is determined by seeding a random number generator with/etc/machine-id, the archive filename, and the remote cache mtime. if that seed divides by the metadata-providedphased_updatevalue with no remainder, then the release is considered. this also implies the seed will be different on a different machine, for a different update, or if the metadata has been refreshed. so yeah, it's random-ish per machine, and that's on purpose.OrderBefore=β this remote will be ordered before any remotes listed here, using commas as the delimiter.
NOTE: when the same firmware release is available from multiple remotes, the one with the highest priority will be used.
OrderAfter=β this remote will be ordered after any remotes listed here, using commas as the delimiter.Username=β the username to use for BASIC authentication when downloading metadata and firmware from this remote, and for uploading success reports.Password=β the password (although, in practice, this will be a user token) to use for BASIC authentication when downloading both metadata and firmware from this remote, and for uploading success reports. yes, token. say it with me. ποΈRefreshInterval=β the time in seconds after which the front end tools should re-download the metadata signature, or0to re-download every single time. every time!! π
π¦ NOTES π¦
here's a cute little detail that trips people up: the basename of the path without the extension is what's used for the remote ID. for instance, the /etc/fwupd/remotes.d/lvfs.conf remote file will have the ID of lvfs. so the filename literally is the identity. main character energy, honestly. π
π SEE ALSO π
and that's the whole page, bestie π«Ά go forth and configure your remotes responsibly. this was fwupd-remotes.d(5) from fwupd version 2.1.9 β mwah, love that for us. periodt. πβ¨
π¦ 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