fwup - configurable embedded firmware update creator and runner



fwup − configurable embedded firmware update creator and runner


fwup [OPTION]...


fwup is a self−contained utility for creating and applying firmware update files. Firmware update (.fw) files are nothing more than zip archives containing metadata, a limited set of instructions, and data. On an embedded device or on a host PC, fwup is used to write nonvolatile memory (eMMC, SDCards, etc.) in such a way as to upgrade the firmware on the device or to completely initialize it.


−a, −−apply

Apply the firmware update

−c, −−create

Create the firmware update

−d <file> Device file for the memory card

−D, −−detect List attached SDCards or MMC devices and their sizes

−E, −−eject Eject removable media after successfully writing firmware.

−−no−eject Do not eject media after writing firmware

−−enable−trim Enable use of the hardware TRIM command

−−exit−handshake Send a Ctrl+Z on exit and wait for stdin to close (Erlang)

−f <fwup.conf> Specify the firmware update configuration file

−F, −−framing Apply framing on stdin/stdout

−g, −−gen−keys Generate firmware signing keys (fwup−key.pub and fwup−key.priv, or specify with −o)

−i <input.fw> Specify the input firmware update file (Use − for stdin)

−l, −−list

List the available tasks in a firmware update

−−max−size <blocks> Max size of the destination in 512−byte blocks (usually automatic)

−m, −−metadata

Print metadata in the firmware update

−−metadata−key <key> Only output the specified key’s value when printing metadata

−−minimize−writes Skip write if contents match destination

−−no−minimize−writes Don’t try to minimize writes when applying firmware updates (default)


Report numeric progress

−o <output.fw> Specify the output file when creating an update (Use − for stdout)

−p, −−public−key−file <keyfile> A public key file for verifying firmware updates (can specify multiple times)

−−private−key <key> A private key for signing firmware updates

−−progress−low <number> When displaying progress, this is the lowest number (normally 0 for 0%)

−−progress−high <number> When displaying progress, this is the highest number (normally 100 for 100%)

−−public−key <key> A public key for verifying firmware updates (can specify multiple times)

−q, −−quiet


−s, −−private−key−file <keyfile> A private key file for signing firmware updates

−S, −−sign Sign an existing firmware file (specify −i and −o)

−−sparse−check <path> Check if the OS and file system supports sparse files at path

−−sparse−check−size <bytes> Hole size to check for −−sparse−check

−t, −−task <task> Task to apply within the firmware update

−u, −−unmount Unmount all partitions on device first

−U, −−no−unmount Do not try to unmount partitions on device

−−unsafe Allow unsafe commands (consider applying only signed archives)

−v, −−verbose


−V, −−verify

Verify an existing firmware file (specify −i)

−−verify−writes Verify writes when applying firmware updates to detect corruption (default for writing to device files)

−−no−verify−writes Do not verify writes when applying firmware updates (default for regular files)

−−version Print out the version


Accept automatically found memory card when applying a firmware update


Print the memory card that would be automatically detected and exit


Fast compression (for create)


Best compression (default)


Initialize an attached SDCard using all of the default options:

$ fwup myfirmware.fw

Create a firmware update archive:

$ fwup -c -f fwup.conf -o myfirmware.fw

Apply the firmware to an attached SDCard. This would normally be run on the host where it would auto−detect an SDCard and initialize it using the ’complete’ task:

$ fwup -a -i myfirmware.fw -t complete

Apply the firmware update to /dev/sdc and specify the ’upgrade’ task:

$ fwup -a -d /dev/sdc -i myfirmware.fw -t upgrade

Create an image file from a .fw file for use with dd(1):

$ fwup -a -d myimage.img -i myfirmware.fw -t complete

Generate a public/private key pair:

$ fwup -g

Store fwup−key.priv in a safe place and fwup−key.pub on the target. To sign an existing archive run:

$ fwup -S -s fwup-key.priv -i myfirmware.fw -o signedfirmware.fw

Also see the unit tests that come with fwup source code for more examples. Obtain source code and report bugs at https://github.com/fwup−home/fwup.


Written by Frank Hunleth.


Please report any bugs on the project page at <https://github.com/fwup-home/fwup>.

Updated 2024-01-29 - jenkler.se | uex.se