{"id":13440560,"url":"https://github.com/fwupd/fwupd","last_synced_at":"2025-05-12T15:33:03.004Z","repository":{"id":27883399,"uuid":"31374735","full_name":"fwupd/fwupd","owner":"fwupd","description":"A system daemon to allow session software to update firmware","archived":false,"fork":false,"pushed_at":"2025-05-07T18:14:37.000Z","size":59896,"stargazers_count":3377,"open_issues_count":55,"forks_count":478,"subscribers_count":56,"default_branch":"main","last_synced_at":"2025-05-08T01:08:07.611Z","etag":null,"topics":["c","firmware","linux","update"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fwupd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"COPYING","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2015-02-26T15:52:25.000Z","updated_at":"2025-05-07T19:06:54.000Z","dependencies_parsed_at":"2023-10-14T09:17:40.219Z","dependency_job_id":"915f3462-693d-404e-869a-87853cf7c737","html_url":"https://github.com/fwupd/fwupd","commit_stats":{"total_commits":11732,"total_committers":368,"mean_commits":"31.880434782608695","dds":"0.32603136720081827","last_synced_commit":"a35e2449033f8c0dfe4eb01794c75ed315bcce62"},"previous_names":[],"tags_count":177,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fwupd%2Ffwupd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fwupd%2Ffwupd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fwupd%2Ffwupd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fwupd%2Ffwupd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fwupd","download_url":"https://codeload.github.com/fwupd/fwupd/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253765940,"owners_count":21960821,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c","firmware","linux","update"],"created_at":"2024-07-31T03:01:23.898Z","updated_at":"2025-05-12T15:33:02.941Z","avatar_url":"https://github.com/fwupd.png","language":"C","funding_links":[],"categories":["C","Firmware Tools, Libraries, and Frameworks","HarmonyOS","Core Components","Forensics"],"sub_categories":["Windows Manager"],"readme":"# fwupd\n\n[![Build Status](https://github.com/fwupd/fwupd/actions/workflows/ci.yml/badge.svg)](https://github.com/fwupd/fwupd/actions/workflows/ci.yml)\n[![CodeQL](https://github.com/fwupd/fwupd/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/fwupd/fwupd/actions/workflows/codeql-analysis.yml)\n[![Coverity Scan Build Status](https://scan.coverity.com/projects/10744/badge.svg)](https://scan.coverity.com/projects/10744)\n[![Fuzzing Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/fwupd.svg)](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened\u0026can=1\u0026q=proj:fwupd)\n[![Codecov Coverage Status](https://codecov.io/gh/fwupd/fwupd/graph/badge.svg?token=vykt2ROfu9)](https://codecov.io/gh/fwupd/fwupd)\n[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/fwupd/fwupd/badge)](https://securityscorecards.dev/viewer/?uri=github.com/fwupd/fwupd)\n[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/8751/badge)](https://www.bestpractices.dev/projects/8751)\n\nThis project aims to make updating firmware on Linux automatic, safe, and reliable.\n\nAdditional information is available [at the website](https://fwupd.org/).\n\n## Where to get help?\n\n- GitHub issues \u0026 discussions in [this repository](https://github.com/fwupd/fwupd)\n\n## Compiling\n\nSee [Building and Debugging](docs/building.md) for how to build the fwupd development environment.\n\n**NOTE:** In most cases, end users should not compile fwupd from scratch; it's a\ncomplicated project with dozens of dependencies (and as many configuration options)\nand there's just too many things that can go wrong.\n\nUsers should just have fwupd installed and updated by their distro, managed and\ntested by the package maintainer.\nThe distribution will have also done some testing with how fwupd interacts with\nother software on your system, for instance using GNOME Software.\n\nInstalling fwupd using [Snap](https://github.com/fwupd/fwupd/wiki/fwupd-snap)\nor using [Flatpak](https://github.com/fwupd/fwupd/wiki/fwupd-flatpak) might be\nuseful to update a specific device on the command line that needs a bleeding\nedge fwupd version, but it should not be considered as a replacement to the\ndistro-provided system version.\n\n### Using Tartan\n\n[Tartan](https://gitlab.freedesktop.org/tartan/tartan/-/wikis/home) is a LLVM static\nanalysis plugin built to analyze GLib code. It can be installed and then run using:\n\n    mkdir build-tartan\n    CC=clang-17 meson ../\n    SCANBUILD=../contrib/tartan.sh ninja scan-build\n\n## LVFS\n\nThis project is configured by default to download firmware from the [Linux Vendor\nFirmware Service (LVFS)](https://fwupd.org/).\n\nThis service is available to all OEMs and firmware creators who would like to make\ntheir firmware available to Linux users.\n\nYou can find more information about the technical details of creating a firmware\ncapsule in the hardware vendors section of the [fwupd website](https://fwupd.org).\n\n## Basic usage flow (command line)\n\nIf you have a device with firmware supported by fwupd, this is how you can check\nfor updates and apply them using fwupd's command line tools.\n\n`# fwupdmgr get-devices`\n\nThis will display all devices detected by fwupd.\n\n`# fwupdmgr refresh`\n\nThis will download the latest metadata from LVFS.\n\n`# fwupdmgr get-updates`\n\nIf updates are available for any devices on the system, they'll be displayed.\n\n`# fwupdmgr update`\n\nThis will download and apply all updates for your system.\n\n- Updates that can be applied live will be done immediately.\n- Updates that run at bootup will be staged for the next reboot.\n\nYou can find more information about the update workflow in the end\nusers section of the [fwupd website](https://fwupd.org).\n\n## Passim\n\nIf the [Passim](https://github.com/hughsie/passim/blob/main/README.md) project is also installed\nand enabled, fwupd will re-publish the downloaded metadata file to be served on `0.0.0.0:27500`\nby default.\n\nOther clients on the same network can make use of this via mDNS/LLMNR to reduce network bandwidth\nto configured remotes.\n\nTo disable this functionality either set `P2pPolicy=none` in `/etc/fwupd/daemon.conf`, uninstall\nthe passim package or use `systemctl mask passim.service` on the terminal.\n\n## Reporting status\n\nfwupd will encourage users to report both successful and failed updates back\nto LVFS.  This is an optional feature, but encouraged as it provides valuable\nfeedback to LVFS administrators and OEM developers regarding firmware update\nprocess efficacy.\n\nThe privacy policy regarding this data can be viewed on the [lvfs readthedocs site](https://lvfs.readthedocs.io/en/latest/privacy.html).\n\nTo report the status of an update, run:\n\n`# fwupdmgr report-history`\n\nOnly updates that were distributed from the LVFS will be reported to the LVFS.\n\n## Enterprise use\n\nThe flow of updates can be controlled in the enterprise using the\n\"approved updates\" feature. This allows the domain administrator to filter\nthe possible updates from a central server (e.g. the LVFS, or a mirror)\nto only firmware that have been tested specifically in your organization.\n\nThe list of approved updates can be enabled by adding `ApprovalRequired=true`\nto the remote configuration file, e.g. `lvfs.conf`. Once enabled, the\nlist of approved updates can be set in `fwupd.conf` using a comma-delimited list.\n\nFor example:\n\n    ApprovedFirmware=foo,bar\n\nWhere `foo,bar` refers to the container checksums that would correspond\nto two updates in the metadata file.\n\nAdditionally, the list of approved firmware can be supplemented using\n`fwupdmgr set-approved-firmware baz` or using the D-Bus interface.\n\n## Other frontends\n\nfwupdmgr is a command line client, but various additional graphical frontends are enumerated in the [fwupdmgr man page](https://fwupd.github.io/libfwupdplugin/fwupdmgr.html#description).\n\n## SAST Tools\n\n- [Coverity](https://scan.coverity.com/) - static analyzer for Java, C/C++, C#, JavaScript, Ruby, and Python code.\n- [PVS-Studio](https://pvs-studio.com/en/pvs-studio/?utm_source=website\u0026utm_medium=github\u0026utm_campaign=open_source) - static analyzer for C, C++, C#, and Java code.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffwupd%2Ffwupd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffwupd%2Ffwupd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffwupd%2Ffwupd/lists"}