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