Hello. On Fri, 2011-05-20 at 16:28, Stefan Schmidt wrote: > > On Thu, 2011-05-19 at 23:42, Tormod Volden wrote: > > From: Tormod Volden <debian.tor...@gmail.com> > > > > First get_first_dfu_device() fills in the dev and dev_handle > > members, but only after get_first_dfu_if() the whole interface > > information is filled in. > > > > Signed-off-by: Tormod Volden <debian.tor...@gmail.com> > > --- > > > > This solves the "Found Runtime: [0000:0000]" issue I tried to address > > in the "main: Populate the final interface structure before printing it" > > patch that I posted and withdrew in February. > > > > It also solves the segfaults we are seeing on the libusb-1.0 branch. > > Thanks for working on this. > > Sadly a problem on the freerunner persists in the libusb-1.0 branch > even with this patch applied. Trying to donwload something just dies > without segfault and leaves the following in dmesg: > > [1285088.771326] dfu-util[18547] general protection ip:4027f6 sp:7fffc6d2a610 > error:0 in dfu-util[400000+6000] > > I know you don't have an freerunner so I will try to chase this down > the next days. Its the last blocker for getting the libusb-1.0 branch > merged into master.
I spent some time on this at the weekend. It actually did work before in the libusb-1.0 branch. Your commit that fixed your device broke it for the freerunner: commit 6329fc0886049e0eb50c51e88b7fc52f056b83d4 Author: Tormod Volden <debian.tor...@gmail.com> Date: Thu Feb 3 23:12:35 2011 +0100 main: Use the config descriptor value, not the index Its libusb_get_config_descriptor_by_value() in print_dfu_if thats failing and thus the cfg being not populated. As you observed yourself. I have several band aids but no real solution for now: 1) Simply comment out print_dfu_if() to avoid the problem for now. Thats not to bad I think as it "just" gives some more info to the terminal but is not needed for the actual flashing. 2) Leave print_dfu_if() but add some error checking around libusb_get_config_descriptor_by_value() and return if fails. Will result in the same loss of information but not function as 1. A bit better as we should check for errors anyway. :) 3) Use find_dfu_if(dif->dev, print_dfu_if, NULL); instead of the simple print_dfu_if() here. Thats works but prints all available interfaces (5 or 6 on the freerunner) and not only the one we are flashing to. Not that nice imho. The option we always have is of course leaving it as is and trying to pin the root cause down before merging the libusb-1.0 branch into master. While I feel its about time doing so I'm not in a real hurry. Just my time is a bit spare for the debugging. regards Stefan Schmidt _______________________________________________ devel mailing list devel@lists.openmoko.org https://lists.openmoko.org/mailman/listinfo/devel