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) | |
−n |
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
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
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 | |
−y |
Accept automatically found memory card when applying a firmware update
−z |
Print the memory card that would be automatically detected and exit | ||
−1 |
Fast compression (for create) | ||
−9 |
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>.