# Install fwup with Homebrew, apk, MacPorts, Nix, scoop

Configurable embedded Linux firmware update creator and runner. Version 1.16.0 via Homebrew; verified 2026-05-01.

## Install

```sh
sudo av install brew:fwup
```

Additional install commands:

### macOS

- Homebrew (100%):

```sh
brew install fwup
```

  Evidence: local Homebrew formula metadata

- MacPorts (94%):

```sh
sudo port install fwup
```

  Evidence: MacPorts ports tree: sysutils/fwup/Portfile from https://api.github.com/repos/macports/macports-ports/git/trees/master?recursive=1

### Linux

- apk (92%):

```sh
sudo apk add fwup
```

  Evidence: Alpine Linux edge package indexes: fwup from https://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz

- Nix (92%):

```sh
nix profile install nixpkgs#fwup
```

  Evidence: nixpkgs package indexes: pkgs/by-name/fw/fwup/package.nix from https://api.github.com/repos/NixOS/nixpkgs/git/trees/master?recursive=1

### Windows

- Scoop (92%):

```sh
scoop install extras/fwup
```

  Evidence: Scoop official bucket manifest trees: bucket/fwup.json from https://api.github.com/repos/ScoopInstaller/Extras/git/trees/master?recursive=1

## Package facts

- **Package key:** brew:fwup
- **Package manager:** Homebrew
- **Package manager page:** <https://formulae.brew.sh/formula/fwup>
- **Version:** 1.16.0
- **Source summary:** Configurable embedded Linux firmware update creator and runner
- **Homepage:** <https://github.com/fwup-home/fwup>
- **Repository:** <https://github.com/fwup-home/fwup>
- **Upstream docs:** <https://github.com/fwup-home/fwup#readme>
- **License:** Apache-2.0
- **Source archive:** <https://github.com/fwup-home/fwup/releases/download/v1.16.0/fwup-1.16.0.tar.gz>
- **Last updated:** 2026-05-01T15:32:25Z
- **Generated:** 2026-07-08T07:18:31+00:00

## Executables

- fwup (cli)
- img2fwup (cli)
- fwup (alias)
- img2fwup (alias)

## Dependencies

- confuse
- libarchive

## Build dependencies

- pkgconf

## Install behavior

- Post-install hook: not defined
- Bottle: available on arm64_linux, arm64_sequoia, arm64_sonoma, arm64_tahoe, sonoma, x86_64_linux

## Freshness

- Page generated: 2026-07-08
- Package-manager version: 1.16.0
- Package-manager updated: 2026-05-01
- Local data: ok
- Upstream repository: https://github.com/fwup-home/fwup
- info: No cached GitHub release or tag data was available.
## Project history and usage

fwup is an embedded Linux firmware update creator and runner. It packages update logic and payloads into standard ZIP-based `.fw` archives and applies them using configurable tasks such as full image writes, A/B partition swaps, recovery updates, and trial update or failback flows.

### Project history

The public repository was created in June 2014. GitHub release metadata shows 0.x releases in 2015, and the 1.x line continued through the mid-2020s.

The README describes a design focused on minimal dependencies, streaming archive processing, careful write ordering, verification, and limited scripting so that failure modes on embedded targets are easier to reason about.

Recent changelog entries show continued work on delta updates, encrypted partitions, block cache sizing, U-Boot environment handling, and package dependencies for static builds.

### Adoption history

fwup is distributed through release artifacts and several package managers. The README names Homebrew for macOS, Linux packages, Chocolatey for Windows, Alpine, Buildroot, Yocto via meta-fwup, and version-manager support through asdf-fwup and mise.

The README points to the Nerves Project as a better-maintained source of examples, which reflects fwup's practical role in the Nerves embedded Elixir ecosystem and embedded Linux image update workflows.

### How it is used

Users create firmware archives with a `fwup.conf` file, apply `.fw` archives to devices or image files, generate signing keys, verify or sign archives, and use `img2fwup` to convert raw images to `.fw` files.

The tool is deliberately not an update distribution service. Upstream documentation expects users to deliver `.fw` files through external media, network streams, Ansible, or other deployment tooling.

### Why package nerds care

fwup matters to package maintainers because it packages firmware update policy, payloads, signing, partition manipulation, metadata, progress reporting, and failure behavior into one portable artifact format.

It is also a useful counterexample to application-level update tools: its domain is block devices, boot partitions, sparse writes, and embedded recovery flows, where package-manager semantics meet physical storage constraints.

### Timeline

- 2014: Public GitHub repository created.
- 2015: Early 0.x releases published.
- 2016: README notes Buildroot support included upstream since Buildroot 2016.05.
- 2024: 1.12.0 adds features such as extended MBR partitions and Raspberry Pi tryboot support.
- 2025: 1.13.x and 1.14.x improve delta updates and metadata handling.
- 2026: 1.15.x and 1.16.0 improve encrypted update performance and block-cache sizing.

### Related projects

- asdf-fwup and mise support manage fwup versions with `.tool-versions` files.
- meta-fwup supports Yocto integration, and Buildroot includes upstream support.
- The Nerves Project and nerves_system_br are related embedded Linux users and examples.

### Sources

- <https://api.github.com/repos/fwup-home/fwup>
- <https://github.com/fwup-home/fwup>
- <https://github.com/fwup-home/fwup/releases>
- <https://raw.githubusercontent.com/fwup-home/fwup/main/CHANGELOG.md>
- <https://raw.githubusercontent.com/fwup-home/fwup/main/README.md>


## Security Notes

narrow executable package without higher-risk signals.

- **Geiger risk:** green / low
- narrow executable package without higher-risk signals

## Source Database Details

- **Source Database:** Homebrew formula API
- **Tap:** homebrew/core
- **Full Name:** fwup
- **Version Scheme:** 0
- **Revision:** 0
- **Bottle Stable Root URL:** <https://ghcr.io/v2/homebrew/core>
- **Deprecated:** no
- **Disabled:** no
- **Keg Only:** no
- **URL Keys:** stable

## Other Package-Manager Records

- Nix - fwup: normalized package name match | nixpkgs package indexes: pkgs/by-name/fw/fwup/package.nix from https://api.github.com/repos/NixOS/nixpkgs/git/trees/master?recursive=1
- apk - fwup - 1.15.0-r0: normalized package name match | Alpine Linux edge package indexes: fwup from https://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz | Configurable embedded Linux firmware update creator and runner | https://github.com/fwup-home/fwup
- apk - fwup-bash-completion - 1.15.0-r0: normalized package name match | Alpine Linux edge package indexes: fwup-bash-completion from https://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz | Bash completions for fwup | https://github.com/fwup-home/fwup
- apk - fwup-doc - 1.15.0-r0: normalized package name match | Alpine Linux edge package indexes: fwup-doc from https://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz | Configurable embedded Linux firmware update creator and runner (documentation) | https://github.com/fwup-home/fwup
- MacPorts - fwup: normalized package name match | MacPorts ports tree: sysutils/fwup/Portfile from https://api.github.com/repos/macports/macports-ports/git/trees/master?recursive=1
- Scoop - extras/fwup: normalized package name match | Scoop official bucket manifest trees: bucket/fwup.json from https://api.github.com/repos/ScoopInstaller/Extras/git/trees/master?recursive=1


## Related links

- [Source-control packages](https://www.automicvault.com/pkg/source-control-tools/) - Belongs to a source-control command family.
- [Terminal utility packages](https://www.automicvault.com/pkg/terminal-utilities/) - Matched terminal and command-line workflow metadata.
- [Networking and protocol packages](https://www.automicvault.com/pkg/networking-protocol-tools/) - Matched network, protocol, or remote-service metadata.
- [Media and graphics packages](https://www.automicvault.com/pkg/media-graphics-tools/) - Matched media, image, audio, video, or graphics metadata.
- [libarchive](https://www.automicvault.com/pkg/brew/libarchive/) - Runtime dependency declared by Homebrew.
- [pkgconf](https://www.automicvault.com/pkg/brew/pkgconf/) - Build dependency declared by Homebrew.
- [acpica](https://www.automicvault.com/pkg/brew/acpica/) - Shares av.db curated category or tags: cli, firmware, system.
- [b43-fwcutter](https://www.automicvault.com/pkg/brew/b43-fwcutter/) - Shares av.db curated category or tags: cli, firmware, system.
- [dfu-programmer](https://www.automicvault.com/pkg/brew/dfu-programmer/) - Shares av.db curated category or tags: cli, firmware, system.
- [dfu-util](https://www.automicvault.com/pkg/brew/dfu-util/) - Shares av.db curated category or tags: cli, firmware, system.
- [flashrom](https://www.automicvault.com/pkg/brew/flashrom/) - Shares av.db curated category or tags: cli, firmware, system.
- [fon-flash-cli](https://www.automicvault.com/pkg/brew/fon-flash-cli/) - Shares av.db curated category or tags: cli, firmware, system.
- [dpcmd](https://www.automicvault.com/pkg/brew/dpcmd/) - Shares av.db curated category or tags: cli, firmware, system.
- [fwupd](https://www.automicvault.com/pkg/brew/fwupd/) - Shares av.db curated category or tags: cli, firmware, system.

## Combined YAML source

View the package source record on GitHub. [combined/fwup.yml](https://github.com/automic-vault/db/blob/main/combined/fwup.yml)


## Sources

- Nucleus package database
- Geiger risk classifier
- package-page enrichment
- curated package history
- package version freshness
- av.db category and tag curation
- package relationship graph
- external package-manager database matches
- cross-ecosystem install command graph
