==== dfu-util ====
dfu-util can be used to communicate with DFU (device firmware upgrade) enabled devices.
Examples include the Leaflabs [[:boards:maple|Maple mini]] [[:tools:maple|boot loader]] and the [[:boards:longan|Longan Nano]].
Be sure to have the latest version installed from at least 2020 if you intend to use
the [[:boards:longan|Longan Nano]] which may not work correctly otherwise.
=== Install ===
git clone https://git.code.sf.net/p/dfu-util/dfu-util dfu-util
cd dfu-util
sh autogen.sh
./configure --prefix=/usr/local
make -j 4
make install
=== Usage ===
$ dfu-util
dfu-util 0.11-dev
Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2021 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/
You need to specify one of -D or -U
Usage: dfu-util [options] ...
-h --help Print this help message
-V --version Print the version number
-v --verbose Print verbose debug statements
-l --list List currently attached DFU capable devices
-e --detach Detach currently attached DFU capable devices
-E --detach-delay seconds Time to wait before reopening a device after detach
-d --device :[,:]
Specify Vendor/Product ID(s) of DFU device
-n --devnum Match given device number (devnum from --list)
-p --path Specify path to DFU device
-c --cfg Specify the Configuration of DFU device
-i --intf Specify the DFU Interface number
-S --serial [,]
Specify Serial String of DFU device
-a --alt Specify the Altsetting of the DFU Interface
by name or by number
-t --transfer-size Specify the number of bytes per USB Transfer
-U --upload Read firmware from device into
-Z --upload-size Specify the expected upload size in bytes
-D --download Write firmware from into device
-R --reset Issue USB Reset signalling once we're finished
-w --wait Wait for device to appear
-s --dfuse-address address<:...> ST DfuSe mode string, specifying target
address for raw file download or upload (not
applicable for DfuSe file (.dfu) downloads).
Add more DfuSe options separated with ':'
leave Leave DFU mode (jump to application)
mass-erase Erase the whole device (requires "force")
unprotect Erase read protected device (requires "force")
will-reset Expect device to reset (e.g. option bytes write)
force You really know what you are doing!
Length of firmware to upload from device
=== Probe ===
==Longan Nano==
$ sudo dfu-util -v -l
dfu-util 0.9
Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2020 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/
Found DFU: [28e9:0189] ver=0100, devnum=45, cfg=1, intf=0, path="1-1.2", alt=0, name="@Internal Flash /0x08000000/128*001Kg", serial="3CBJ"
==Maple Mini==
__Probe__
sudo dfu-util -l -v
dfu-util 0.11-dev
Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2021 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/
libusb version 1.0.22 (11312)
Found DFU: [1eaf:0003] ver=0201, devnum=54, cfg=1, intf=0, path="1-1.1.3", alt=0, name="DFU Program RAM 0x20000C00", serial="LLM 003"
Found DFU: [1eaf:0003] ver=0201, devnum=54, cfg=1, intf=0, path="1-1.1.3", alt=1, name="DFU Program FLASH 0x08005000", serial="LLM 003"
__Program__
sudo make -f Makefile.maple_mini dfu-util
dfu-util -a 1 -D maple_mini.bin
dfu-util 0.11-dev
Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2021 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/
dfu-util: Warning: Invalid DFU suffix signature
dfu-util: A valid DFU suffix will be required in a future dfu-util release
Opening DFU capable USB device...
Device ID 1eaf:0003
Device DFU version 0110
Claiming USB DFU Interface...
Setting Alternate Interface #1 ...
Determining device status...
DFU state(2) = dfuIDLE, status(0) = No error condition is present
DFU mode device DFU version 0110
Device returned transfer size 1024
Copying data from PC to DFU device
Download [=========================] 100% 17032 bytes
Download done.
DFU state(8) = dfuMANIFEST-WAIT-RESET, status(0) = No error condition is present
Resetting USB to switch back to runtime mode
Done!