xenial (1) dfu-tool.1.gz

Provided by: fwupd_0.8.3-0ubuntu5.1_amd64 bug

NAME

       dfu-tool - Device Firmware Upgrade Tool

SYNOPSIS

       dfu-tool [ --verbose ] [ --version ] [ --force ] [ --device=VID:PID ] [ --transfer-size=BYTES ]

DESCRIPTION

       This manual page documents briefly the dfu-tool command.

       dfu-tool allows a user to write various kinds of firmware onto devices supporting the USB Device Firmware
       Upgrade protocol.  This tool can be used to switch the device from the normal runtime mode to `DFU  mode'
       which  allows  the  user  to  read  and  write  firmware.   Either the whole device can be written in one
       operation, or individual `targets' can be specified with the alternative name or number.

       dfu-tool uses the libdfu shared library to perform  actions.   All  synchronous  actions  can  be  safely
       cancelled  and  on  failure  will  return errors with both a type and a full textual description.  libdfu
       supports DFU 1.0, DFU 1.1 and the ST DfuSe vendor extension, and handles many device  `quirks'  necessary
       for the real-world implementations of DFU.

       Additionally  dfu-tool  can  be  used  to  convert  firmware from various different formats, or to modify
       details about the elements, images and metadata contained inside the firmware file.  For example, you can
       easily  convert  DFU  1.1 firmware into the vendor-specific DfuSe format, convert a Intel HEX file into a
       raw file padded to a specific size, or add new copyright and licensing information to an  existing  file.
       Fields  such as the vendor and product IDs can be changed, and the firmware elements can be encrypted and
       decrypted using various different methods.  Merging two DfuSe files together is also  possible,  although
       specifying different alt-setting numbers before merging is a good idea to avoid confusion.

       Although  dfu-tool tries to provide a large number of easy-to-use commands, it may only be possible to do
       certain operations using the libdfu library directly.  This is easier than it sounds, as the  library  is
       built  with  GObject  Introspection  support making it usable in many languages such as C, Javascript and
       Python.  Furthermore, using the library is a good idea if you want  to  perform  multiple  operations  on
       large firmware files, for instance, converting from an Intel HEX file, padding to a certain size, setting
       vendor and adding licensing information and then saving to a remote location.

OPTIONS

       This program follows the usual GNU command line syntax, with long options starting with two  dashes  (-).
       A summary of options is included below.

                 --help
              Show summary of all the commands available for use.

                 --version
              Show the version of dfu-tool installed.

                 --verbose
              Show extra debugging information.

                 --device=VID:PID
              If multiple DFU-capable devices are attached you can specify the specific vendor and product ID of
              the DFU device you want to query.

                 --transfer-size=BYTES
              Manually override the size of each USB transfer, which you may want  for  unreliable  hardware  or
              when the device lies about the maximum packet size it accepts.

                 --force
              Force  the operation, disregarding warnings or sanity checks like file CRC and checksums.  This is
              useful if you really know what you are doing, or in the specialised case of fuzz-testing libdfu.

DEVICE COMMANDS

       These commands are used to interface with DFU-capable devices.

                 list
              This command lists currently attached DFU capable  devices.   Some  devices  do  not  support  the
              official  DFU  runtime  mode and thus do not support auto-discovery using this command.  For those
              devices, putting the device into DFU mode manually (e.g. by holding a button down  when  rebooting
              the device) will make it show up here.

                 detach
              This  command  detaches the currently attached DFU capable device into a special programming mode.
              Whilst the device is in this special DFU mode it can not be used as a normal device.  For example,
              a printer will not accept documents when in DFU mode.

                 attach
              This  command  attaches a DFU capable device back to runtime so it can be used as a normal device.
              Some devices do not support attaching, and need to be manually disconnected and  connected  before
              changing modes.

                 watch
              This  command watches DFU devices being hotplugged and can be used to verify libdfu matches up the
              runtime and DFU modes when attaching and detaching.  Use CTRL+C to make this command quit.

                 read FILENAME
              This command uploads all the firmware from device  into  a  file.   If  the  device  has  multiple
              partitions  exported  as  different  alternative sections then they will all be read into a multi-
              image DfuSe-format file.  If you just want the contents of one partition, read-alt is the  command
              you want.

                 read-alt FILENAME DEVICE-ALT-NAME|DEVICE-ALT-ID
              This  command  uploads  firmware from one partition into a file.  You can specify the partition by
              either the ALT-ID or ALT-NAME if set.

              e.g. dfu-tool read-alt backup.dfu SRAM

                 write
              This command downloads firmware from a file into all possible partitions of a device.  If you only
              want to write one partition, write-alt is the command you want.

                 write-alt FILENAME DEVICE-ALT-NAME|DEVICE-ALT-ID [IMAGE-ALT-NAME|IMAGE-ALT-ID]
              This  command  downloads firmware from the file into one partition.  You can specify the partition
              by either the ALT-ID or ALT-NAME if set.

              e.g. dfu-tool write-alt sram.dfu SRAM __SRAM

FIRMWARE COMMANDS

       These commands are used to read and modify existing firmware files.

                 dump FILENAME
              This command dumps all know details about a firmware file.  The  complete  memory  map  is  shown,
              along with any metadata or vendor information about the firmware file.

                 convert FORMAT FILE-IN FILE-OUT [SIZE]
              This  command  converts  the  firmware from one format to another, optionally padding to a certain
              size.  Possible values for the destination FORMAT include: raw, ihex, dfu and dfuse.  The  FILE-IN
              and  FILE-OUT  values  can  be the same if the source file is to be overwritten.  Although padding
              increases the file size with no apparent advantages it can be used to support devices that do  not
              store the runtime image size and where validation of the written firmware is required.

              e.g. dfu-tool convert dfu firmware.hex firmware.dfu 8000

                 encrypt FILENAME-IN FILENAME-OUT TYPE KEY
              This  command  encrypts  firmware  data.   Only  the image contents are actually modified, the DFU
              footer and DfuSe header are left unaltered.  Possible values for  the  destination  TYPE  include:
              xtea  and nop.  If the KEY is not of the required length it is used as an input to a hash function
              which can produce a key of the required size.

              e.g. dfu-tool encrypt firmware.dfu firmware.xdfu xtea deadbeef

                 decrypt FILENAME-IN FILENAME-OUT TYPE KEY
              This command decrypts firmware data.  Only the image  contents  are  actually  modified,  the  DFU
              footer  and  DfuSe  header  are left unaltered.  Possible values for the destination TYPE include:
              xtea and nop.  If the KEY is not of the required length it is used as an input to a hash  function
              which can produce a key of the required size.

              e.g. dfu-tool decrypt firmware.xdfu firmware.dfu xtea deadbeef

                 merge FILE-OUT FILE1 FILE2 [FILE3...]
              This  command merges multiple firmware files into one file.  Although you can merge files with the
              same ALT-ID or ALT-NAME this probably isn't what you want to do.

              e.g. dfu-tool merge combined.dfu lib.dfu app.dfu

                 set-alt-setting FILE ALT-ID
              This command modifies the alternative number on firmware file.

              e.g. dfu-tool set-alt-setting firmware.dfu 1

                 set-alt-setting-name
              This command modifies the alternative name on firmware file.

              e.g. dfu-tool set-alt-setting-name firmware.dfu SRAM

                 set-metadata FILE KEY VALUE
              This command adds or modifies existing metadata on a firmware file.   NOTE:  There  is  only  very
              limited  metadata  storage  space  in  DFU  files,  so  keys and values should be kept as short as
              possible.  In particular, the License value should be specified in SPDX format.

              e.g. dfu-tool set-metadata firmware.dfu Licence GPL-2.0+

                 set-vendor FILE VID
              This command sets vendor ID on a firmware file that  will  be  used  to  match  specific  devices.
              Values of ffff will match any device vendor.

              e.g. dfu-tool set-vendor firmware.dfu 273f

                 set-product FILE PID
              This  command  sets the product ID on a firmware file that will be used to match specific devices.
              Values of ffff will match any device product.

              e.g. dfu-tool set-product firmware.dfu 1004

                 set-release FILE RELEASE
              This command sets the release version on firmware  file  that  will  be  used  to  match  specific
              devices.  Values of ffff will match any device release.

              e.g. dfu-tool set-release firmware.dfu ffff

AUTHOR

       This manual page was written by Richard Hughes <richard@hughsie.com>.

                                                26 February,2015                                     DFU-TOOL(1)