dfu-util1
Device firmware update (dfu) usb programmer
Usage
dfu-util -l
[-v]
[-d
vid:pid
[,vid:pid]]
[-p
path]
[-c
configuration]
[-i
interface]
[-a
alt-intf]
[-S
serial
[,serial]]
dfu-util [-v]
[-d
vid:pid
[,vid:pid]]
[-p
path]
[-c
configuration]
[-i
interface]
[-a
alt-intf]
[-S
serial
[,serial]]
[-t
size]
[-Z
size]
[-w]
[-s
address]
[-R]
[{-D | -U
file}]
dfu-util [-hV]
Overview
dfu-util is a program that implements the host (computer) side of the USB DFU (Universal Serial Bus Device Firmware Upgrade) protocol.
dfu-util communicates with devices that implement the device side of the USB DFU protocol, and is often used to upgrade the firmware of such devices.
Options
-
-l, --list -
List the currently attached DFU capable USB devices.
- -d, --device [Run-Time VENDOR]:[Run-Time PRODUCT][,[DFU Mode VENDOR]:[DFU Mode PRODUCT]]
-
Specify run-time and/or DFU mode vendor and/or product IDs of the DFU device to work with. VENDOR and PRODUCT are hexadecimal numbers (no prefix needed), "*" (match any), or "-" (match nothing). By default, any DFU capable device in either run-time or DFU mode will be considered.
If you only have one standards-compliant DFU device attached to your computer, this parameter is optional. However, as soon as you have multiple DFU devices connected, dfu-util will detect this and abort, asking you to specify which device to use.
If only run-time IDs are specified (e.g. "--device 1457:51ab"), then in addition to the specified run-time IDs, any DFU mode devices will also be considered. This is beneficial to allow a DFU capable device to be found again after a switch to DFU mode, since the vendor and/or product ID of a device usually changes in DFU mode.
If only DFU mode IDs are specified (e.g. "--device ,951:26"), then all run-time devices will be ignored, making it easy to target a specific device in DFU mode.
If both run-time and DFU mode IDs are specified (e.g. "
--device1457:51ab,:2bc"), then unspecified DFU mode components will use the run-time value specified.Examples:
-
--device 1457:51ab,951:26 -
Work with a device in run-time mode with vendor ID 0x1457 and product ID 0x51ab, or in DFU mode with vendor ID 0x0951 and product ID 0x0026
-
--device 1457:51ab,:2bc -
Work with a device in run-time mode with vendor ID 0x1457 and product ID 0x51ab, or in DFU mode with vendor ID 0x1457 and product ID 0x02bc
-
--device 1457:51ab -
Work with a device in run-time mode with vendor ID 0x1457 and product ID 0x51ab, or in DFU mode with any vendor and product ID
-
--device ,951:26 -
Work with a device in DFU mode with vendor ID 0x0951 and product ID 0x0026
-
--device *,- -
Work with any device in run-time mode, and ignore any device in DFU mode
-
--device , -
Ignore any device in run-time mode, and Work with any device in DFU mode
-
- -p, --path BUS-PORT. ... .PORT
-
Specify the path to the DFU device.
-
-c, --cfg CONFIG-NR -
Specify the configuration of the DFU device. Note that this is only used for matching, the configuration is not set by dfu-util.
-
-i, --intf INTF-NR -
Specify the DFU interface number.
-
-a, --alt ALT -
Specify the altsetting of the DFU interface by name or by number.
- -S, --serial [Run-Time SERIAL][,[DFU Mode SERIAL]]
-
Specify the run-time and DFU mode serial numbers used to further restrict device matches. If multiple, identical DFU devices are simultaneously connected to a system then vendor and product ID will be insufficient for targeting a single device. In this situation, it may be possible to use this parameter to specify a serial number which also must match.
If only a single serial number is specified, then the same serial number is used in both run-time and DFU mode. An empty serial number will match any serial number in the corresponding mode.
-
-t, --transfer-size SIZE -
Specify the number of bytes per USB transfer. The optimal value is usually determined automatically so this option is rarely useful. If you need to use this option for a device, please report it as a bug.
-
-Z, --upload-size SIZE -
Specify the expected upload size, in bytes. Note that the value is only used for scaling the progress bar, the actual upload size is determined by the device.
-
-U, --upload FILE -
Read firmware from device into FILE.
-
-D, --download FILE -
Write firmware from FILE into device. When FILE is -, the firmware is read from stdin.
-
-R, --reset -
Issue USB reset signalling after upload or download has finished.
-
-e, --detach -
Request that the device re-enumerate out of run-time mode and into DFU mode as when uploading or downloading, but exit immediately after sending the request.
-
-E, --detach-delay SECONDS -
When uploading or downloading, wait SECONDS seconds for the device to re-enumerate after sending the detach request before giving up. Defaults to 5 seconds. This option has no effect with
-e, since that causes dfu-util to immediately exit after sending the detach request.
-
-w, --wait -
Wait until matching device appears on the USB bus.
-
-s, --dfuse-address [ADDRESS][:LENGTH][:MODIFIERS] -
Specify target address for raw binary download/upload on DfuSe devices. Do
notuse this option for downloading DfuSe (.dfu) files. A length can be specified for uploads. Modifiers can be added after the address, separated by a colon, to perform special DfuSE commands such as "leave" DFU mode, "unprotect" and "mass-erase" flash memory. If the device can be expected to reset itself after the operation, "will-reset" should be added. The "force" modifier will override some sanity checks, and is also needed for the "unprotect" and "mass-erase" operations.
-
-v, --verbose -
Print more information about dfu-util's operation. A second
-vadds more details. A third-vactivates verbose logging of USB requests (libusb debug output).
-
-h, --help -
Show a help text and exit.
-
-V, --version -
Show version information and exit.
Examples
Using dfu-util in the OpenMoko project
(with the Neo1973 hardware)
Flashing the rootfs:
$ dfu-util -a rootfs -R -D /path/to/openmoko-devel-image.jffs2
Flashing the kernel:
$ dfu-util -a kernel -R -D /path/to/uImage
Flashing the bootloader:
$ dfu-util -a u-boot -R -D /path/to/u-boot.bin
Copying a kernel into RAM:
$ dfu-util -a 0 -R -D /path/to/uImage
Once this has finished, the kernel will be available at the default load address of 0x32000000 in Neo1973 RAM. Note: You cannot transfer more than 2MB of data into RAM using this method.
Using dfu-util with a DfuSe device
Flashing a .dfu (special DfuSe format) file to the device:
$ dfu-util -D /path/to/dfuse-image.dfu
Reading out 1 KB of flash starting at address 0x8000000:
$ dfu-util -a 0 -s 0x08000000:1024 -U newfile.bin
Flashing a binary file to address 0x8004000 of device memory and ask the device to leave DFU mode:
$ dfu-util -a 0 -s 0x08004000:leave -D /path/to/image.bin
Licence
dfu-util is covered by the GNU General Public License (GPL), version 2 or later.
Releases
10 releases since Debian 5.0 (Lenny); the text changed 5 times.
- since Debian 8 (Jessie);
--detach since Debian 12 (Bookworm);
--detach-delay since Debian 12 (Bookworm);
--dfuse-address since Debian 7 (Wheezy);
--upload-size since Debian 8 (Jessie);
--verbose since Debian 6.0 (Squeeze);
--wait since Debian 12 (Bookworm);
-E since Debian 12 (Bookworm);
-Z since Debian 8 (Jessie);
-e since Debian 12 (Bookworm);
-s since Debian 7 (Wheezy);
-v since Debian 6.0 (Squeeze);
-w since Debian 12 (Bookworm).
-d until Debian 7 (Wheezy).