Hi Lukasz, Absolutely no chance with a different version of dfu-util:
> $ sudo ./src/dfu-util -v -D ~/test.img -a rootfs > dfu-util 0.7 > > Copyright 2005-2008 Weston Schmidt, Harald Welte and OpenMoko Inc. > Copyright 2010-2012 Tormod Volden and Stefan Schmidt > This program is Free Software and has ABSOLUTELY NO WARRANTY > Please report bugs to dfu-u...@lists.gnumonks.org > > Opening DFU capable USB device... ID 0403:bd00 > Did not find cached descriptor > WARNING: Can not find cached DFU functional descriptor > Warning: Assuming DFU version 1.0 > Run-time device DFU version 0100 > Claiming USB DFU Runtime Interface... > Determining device status: state = appIDLE, status = 0 > Device really in Runtime Mode, send DFU detach request... > Resetting USB... > Opening DFU USB Device... > Found DFU: [0403:bd00] devnum=0, cfg=2, intf=0, alt=1, name="rootfs" > Claiming USB DFU Interface... > Setting Alternate Setting #1 ... > Determining device status: state = dfuIDLE, status = 0 > dfuIDLE, continuing > Did not find cached descriptor > Error obtaining cached DFU functional descriptor > Error obtaining DFU functional descriptor > Please report this as a bug! > Warning: Assuming DFU version 1.0 > Warning: Transfer size can not be detected > DFU mode device DFU version 0100 > Error: Transfer size must be specified > Can you paste the log of your dfu-util session? Are you supplying a transfer size for example? Regards -- Pantelis On Dec 17, 2012, at 7:32 PM, Lukasz Majewski wrote: > Hi Pantelis, > > > Thanks for logs. I will go through them and let you know. > > First thing, which I see, that needs to be done is upgrading dfu-util > (from dfu-util version 0.1+svnexported to dfu-util 0.7) > >> Hi Lukasz, >> >> Sorry for the slight delay, setting up the usb capture took a bit >> longer. >> >> So we have two captures; one named bad (which is the tip of our >> internal tree with the commit reverted. >> >> cee8b859fdb9edc68c67624b2fa1c97a65d121e7 >> "dfu: Send correct DFU response from composite_setup" >> >> With the commit reverted we get this: >> >>> panto@sles11esa:~/ti/stuff/dfu-util$ sudo ./src/dfu-util -v -D >>> ~/test.img -a rootfs dfu-util 0.7 >>> >>> Copyright 2005-2008 Weston Schmidt, Harald Welte and OpenMoko Inc. >>> Copyright 2010-2012 Tormod Volden and Stefan Schmidt >>> This program is Free Software and has ABSOLUTELY NO WARRANTY >>> Please report bugs to dfu-u...@lists.gnumonks.org >>> >>> Opening DFU capable USB device... ID 0403:bd00 >>> Did not find cached descriptor >>> WARNING: Can not find cached DFU functional descriptor >>> Warning: Assuming DFU version 1.0 >>> Run-time device DFU version 0100 >>> Claiming USB DFU Runtime Interface... >>> Determining device status: state = appIDLE, status = 0 >>> Device really in Runtime Mode, send DFU detach request... >>> Resetting USB... >>> Opening DFU USB Device... >>> Found DFU: [0403:bd00] devnum=0, cfg=2, intf=0, alt=6, name="rootfs" >>> Claiming USB DFU Interface... >>> Setting Alternate Setting #6 ... >>> Determining device status: state = dfuIDLE, status = 0 >>> dfuIDLE, continuing >>> Did not find cached descriptor >>> Error obtaining cached DFU functional descriptor >>> **** DUMP of func_dfu **** >>> bLength = 0 >>> bDescriptorType = 0 >>> bmAttributes = 0x00 >>> wDetachTimeOut = 0 >>> wTransferSize = 0 >>> bcdDFUVersion = 0x0000 >>> Error obtaining DFU functional descriptor >>> Please report this as a bug! >>> Warning: Assuming DFU version 1.0 >>> Warning: Transfer size can not be detected >>> DFU mode device DFU version 0100 >>> Error: Transfer size must be specified >>> >> >> Looking at the capture file (usb-capture-bad-filter.pcap) we see the >> culprit at packet 171 at bad capture and packet 169 at the good. >> >>> USB URB >>> URB id: 0xffff88032d9cbdc0 >>> URB type: URB_SUBMIT ('S') >>> URB transfer type: URB_CONTROL (0x02) >>> Endpoint: 0x80, Direction: IN >>> 1... .... = Direction: IN (1) >>> .000 0000 = Endpoint value: 0 >>> Device: 34 >>> URB bus id: 3 >>> Device setup request: relevant (0) >>> Data: not present ('<') >>> URB sec: 1355753000 >>> URB usec: 572483 >>> URB status: Operation now in progress (-EINPROGRESS) (-115) >>> URB length [bytes]: 9 >>> Data length [bytes]: 0 >>> [Response in: 172] >>> URB setup >>> bmRequestType: 0x80 >>> 1... .... = Direction: Device-to-host >>> .00. .... = Type: Standard (0x00) >>> ...0 0000 = Recipient: Device (0x00) >>> bRequest: GET DESCRIPTOR (6) >>> Descriptor Index: 0x00 >>> bDescriptorType: HID (33) >>> Language Id: no language specified (0x0000) >>> wLength: 9 >>> >>> 0000 c0 eb 99 28 03 88 ff ff 53 02 80 20 03 00 00 >>> 3c ...(....S.. ...< 0010 d6 0e cf 50 00 00 00 00 a3 bf 0a 00 8d >>> ff ff ff ...P............ 0020 09 00 00 00 00 00 00 00 80 06 00 >>> 21 00 00 09 00 ...........!.... 0030 00 00 00 00 00 00 00 00 00 >>> 02 00 00 00 00 00 00 ................ >>> >> >> >> The response generated when the fix is applied is correct: >> >>> USB URB >>> URB id: 0xffff88032899ebc0 >>> URB type: URB_COMPLETE ('C') >>> URB transfer type: URB_CONTROL (0x02) >>> Endpoint: 0x80, Direction: IN >>> 1... .... = Direction: IN (1) >>> .000 0000 = Endpoint value: 0 >>> Device: 32 >>> URB bus id: 3 >>> Device setup request: not relevant ('-') >>> Data: present (0) >>> URB sec: 1355747030 >>> URB usec: 704533 >>> URB status: Success (0) >>> URB length [bytes]: 9 >>> Data length [bytes]: 9 >>> [Request in: 169] >>> [Time from request: 0.000114000 seconds] >>> [bInterfaceClass: Unknown (0xffff)] >>> GET DESCRIPTOR data (unknown descriptor type 33) >>> >>> 0000 c0 eb 99 28 03 88 ff ff 43 02 80 20 03 00 2d >>> 00 ...(....C.. ..-. 0010 d6 0e cf 50 00 00 00 00 15 c0 0a 00 00 >>> 00 00 00 ...P............ 0020 09 00 00 00 09 00 00 00 00 00 00 >>> 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 >>> 02 00 00 00 00 00 00 ................ 0040 09 21 0f 00 00 00 10 >>> 10 01 .!....... >> >> >> Note that wireshark can't decode it - no DFU dissector. >> >> And the dfu-util side: >> >>> $ sudo ./src/dfu-util -v -D ~/test.img -a rootfs >>> dfu-util 0.7 >>> >>> Copyright 2005-2008 Weston Schmidt, Harald Welte and OpenMoko Inc. >>> Copyright 2010-2012 Tormod Volden and Stefan Schmidt >>> This program is Free Software and has ABSOLUTELY NO WARRANTY >>> Please report bugs to dfu-u...@lists.gnumonks.org >>> >>> Opening DFU capable USB device... ID 0403:bd00 >>> Did not find cached descriptor >>> WARNING: Can not find cached DFU functional descriptor >>> Warning: Assuming DFU version 1.0 >>> Run-time device DFU version 0100 >>> Claiming USB DFU Runtime Interface... >>> Determining device status: state = appIDLE, status = 0 >>> Device really in Runtime Mode, send DFU detach request... >>> Resetting USB... >>> Opening DFU USB Device... >>> Found DFU: [0403:bd00] devnum=0, cfg=2, intf=0, alt=6, name="rootfs" >>> Claiming USB DFU Interface... >>> Setting Alternate Setting #6 ... >>> Determining device status: state = dfuIDLE, status = 0 >>> dfuIDLE, continuing >>> Did not find cached descriptor >>> Error obtaining cached DFU functional descriptor >>> **** DUMP of func_dfu **** >>> bLength = 9 >>> bDescriptorType = 33 >>> bmAttributes = 0x0f >>> wDetachTimeOut = 0 >>> wTransferSize = 4096 >>> bcdDFUVersion = 0x0110 >>> DFU mode device DFU version 0110 >>> Device returned transfer size 4096 >>> No valid DFU suffix signature >>> Warning: File has no DFU suffix >>> bytes_per_hash=335554 >>> Copying data from PC to DFU device >>> Starting download: >>> [##################################################] finished! Sent >>> a total of 16777728 bytes state(2) = dfuIDLE, status(0) = No error >>> condition is present Done! >>> >>> >> >> >> The response is malformed without the fix in the bad capture: >> >>> USB URB >>> URB id: 0xffff88032d9cbdc0 >>> URB type: URB_COMPLETE ('C') >>> URB transfer type: URB_CONTROL (0x02) >>> Endpoint: 0x80, Direction: IN >>> 1... .... = Direction: IN (1) >>> .000 0000 = Endpoint value: 0 >>> Device: 34 >>> URB bus id: 3 >>> Device setup request: not relevant ('-') >>> Data: present (0) >>> URB sec: 1355753000 >>> URB usec: 572591 >>> URB status: Broken pipe (-EPIPE) (-32) >>> URB length [bytes]: 0 >>> Data length [bytes]: 0 >>> [Request in: 171] >>> [Time from request: 0.000108000 seconds] >>> [bInterfaceClass: Unknown (0xffff)] >>> [Malformed Packet: USB] >>> [Expert Info (Error/Malformed): Malformed Packet (Exception >>> occurred)] [Message: Malformed Packet (Exception occurred)] >>> [Severity level: Error] >>> [Group: Malformed] >>> >>> 0000 c0 bd 9c 2d 03 88 ff ff 43 02 80 22 03 00 2d >>> 00 ...-....C.."..-. 0010 28 26 cf 50 00 00 00 00 af bc 08 00 e0 >>> ff ff ff (&.P............ 0020 00 00 00 00 00 00 00 00 00 00 00 >>> 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 >>> 02 00 00 00 00 00 00 ................ >> >> >> And the dfu-util side at the host complains and fails: >> >>> $ sudo ./src/dfu-util -v -D ~/test.img -a rootfs >>> dfu-util 0.7 >>> >>> Copyright 2005-2008 Weston Schmidt, Harald Welte and OpenMoko Inc. >>> Copyright 2010-2012 Tormod Volden and Stefan Schmidt >>> This program is Free Software and has ABSOLUTELY NO WARRANTY >>> Please report bugs to dfu-u...@lists.gnumonks.org >>> >>> Opening DFU capable USB device... ID 0403:bd00 >>> Did not find cached descriptor >>> WARNING: Can not find cached DFU functional descriptor >>> Warning: Assuming DFU version 1.0 >>> Run-time device DFU version 0100 >>> Claiming USB DFU Runtime Interface... >>> Determining device status: state = appIDLE, status = 0 >>> Device really in Runtime Mode, send DFU detach request... >>> Resetting USB... >>> Opening DFU USB Device... >>> Found DFU: [0403:bd00] devnum=0, cfg=2, intf=0, alt=6, name="rootfs" >>> Claiming USB DFU Interface... >>> Setting Alternate Setting #6 ... >>> Determining device status: state = dfuIDLE, status = 0 >>> dfuIDLE, continuing >>> Did not find cached descriptor >>> Error obtaining cached DFU functional descriptor >>> **** DUMP of func_dfu **** >>> bLength = 0 >>> bDescriptorType = 0 >>> bmAttributes = 0x00 >>> wDetachTimeOut = 0 >>> wTransferSize = 0 >>> bcdDFUVersion = 0x0000 >>> Error obtaining DFU functional descriptor >>> Please report this as a bug! >>> Warning: Assuming DFU version 1.0 >>> Warning: Transfer size can not be detected >>> DFU mode device DFU version 0100 >>> Error: Transfer size must be specified >> >> >> >> The full set of captures (pcap format) is at >> >> dfu - >> https://docs.google.com/folder/d/0B7yJhZ55fi8FOFR3TnVGdTBfbHM/edit >> >> As to why it works for you Lukasz, I'm puzzled; maybe some difference >> in the usb gadget peripheral? I would bet that it might refuse to send >> a malformed response, dfu-util will eventually time out and then >> the transfer can continue with some fail-safe defaults. >> >> In either way, that's bad, and is a bug that the patchset fixes >> correctly. >> >> Regards >> >> -- Pantelis >> >> >> >> On Dec 17, 2012, at 1:00 PM, Lukasz Majewski wrote: >> >>> Hi Marek, >>> >>>> Pantelis Antoniou (9): >>>> g_dnl: Issue connect/disconnect as appropriate >>>> g_dnl: Properly terminate string list. >>>> dfu: Only perform DFU board_usb_init() for TRATS >>>> dfu: Fix crash when wrong number of arguments given >>>> dfu: Send correct DFU response from composite_setup >>>> dfu: Properly zero out timeout value >>>> dfu: Add a partition type target >>>> dfu: Support larger than memory transfers. >>>> usb: Fix bug when both DFU & ETHER are defined >>> >>> Can we wait with pulling DFU related patches? >>> >>> I didn't received tcpdump from Pantelis, so I don't know what is >>> going on (or how to tackle the DFU problem). >>> >>> >>> -- >>> Best regards, >>> >>> Lukasz Majewski >>> >>> Samsung Poland R&D Center | Linux Platform Group >> > > > > -- > Best regards, > > Lukasz Majewski > > Samsung Poland R&D Center | Linux Platform Group _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot