I’ve been investigating about DFU mode, in order to do a full Linux build.
The command dfutool from bluez-utils seems almost what is needed,
but fails at the end:
ant9000@sirius:~/dfu$ lsusb
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 005: ID 0483:df11 SGS Thomson Microelectronics
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
So my Nano is attached on bus 3, let’s try to flash it:
# dfutool -d /dev/usbmon3 upgrade DS0201_LIB_V2.5.dfu
Filename DS0201_LIB_V2.5.dfu
Filesize 20095
Checksum 42c9c2e9 (valid)
Available devices with DFU support:
1) Bus 003 Device 009: ID 0483:df11 Interface 0
Select device (abort with 0): 1
After loading for a while, the tool says it is finalizing, but bails out
with the message
Can't send final block: Broken pipe (32)
Still need to investigate what is the meaning of this, but definitely the upload is
not finalized - no trace of it when rebooting the scope.
This thread is interesting:
http://www.spinics.net/lists/linux-bluetooth/msg01967.html
Source code for dfutool:
http://git.kernel.org/?p=bluetooth/bluez.git;a=blob_plain;f=tools/dfutool.c;hb=HEAD
Antonio