---
name: "fw_update"
section: "8"
platform: "openbsd"
package: "man"
version: "8.0-current-20261101"
release: "OpenBSD 8.0-current (2026-11-01)"
platforms: ["openbsd"]
url: "https://new.carta.tech/fw_update"
---

# fw\_update(8)

install non-free firmware

## NAME

**fw\_update** – install non-free firmware

## SYNOPSIS

**fw\_update** \[**-adFlnv**\] \[**-D** *path*\] \[**-p** *path*\] \[*driver* \| *file* *...*\]

## DESCRIPTION

The **fw\_update** utility installs, updates, or deletes firmware for *driver* from the Internet. By default, **fw\_update** tries to determine which firmware are needed.

Since firmware with an acceptable license is already present in OpenBSD, **fw\_update** exists purely to deal with firmware that may not be freely distributed with OpenBSD.

The options are as follows:

- **-a**

  Install or update firmware for all drivers. It is an error to specify this option with any *driver* arguments.

- **-d**

  Delete firmware for *driver*. If used without parameters, delete all firmware that is not required by a driver. If used in conjunction with **-a**, delete firmware for all drivers.

- **-D** *path*

  Use the content of *path* rather than output from [dmesg(8)](/dmesg/8.md) and */var/run/dmesg.boot* to determine which firmware are needed.

- **-F**

  Download SHA256.sig and firmware .tgz to the current directory.

- **-l**

  List drivers without installing. With **-F** lists the full path to the files that will be downloaded.

- **-n**

  Dry run. Do not actually install or update any firmware; just report the steps that would be taken.

- **-p** *path*

  Use *path*, either a local directory or a URL, as the source for firmware instead of the default location.

- **-v**

  Turn on verbose output. This flag can be specified multiple times for increased verbosity.

Firmware is downloaded from release-specific directories at **http://firmware.openbsd.org/firmware/** unless overridden with **-p**.

## ENVIRONMENT

- DESTDIR

  The root of the system to install into.

## FILES

- *${DESTDIR}/usr/share/misc/firmware\_patterns*

  A list of patterns used to detect needed firmware from the [dmesg(8)](/dmesg/8.md).

- *${DESTDIR}/etc/signify/openbsd-XX-fw.pub*

  Used with [signify(1)](/signify/1.md) to verify downloaded firmware files.

## SEE ALSO

pkg\_add(1), [dmesg(8)](/dmesg/8.md)

## AUTHORS

The **fw\_update** program was designed by Alexander Hall ⟨*alexander@beard.se*⟩; it was then replaced with a perl version by Marc Espie ⟨*espie@openbsd.org*⟩. It was rewritten to be able to be run from the installer by Andrew Hewus Fresh ⟨*afresh1@openbsd.org*⟩.
