Hello. Sorry for the delay. I'm travelling.
On Tue, 2010-04-20 at 13:44, Daniel Hiepler wrote: > > i recently noticed a possible bug in dfu-util: > > in main.c:585 after "usb_claim_interface()" a > "usb_set_altinerface(_rt_dif.dev_handle, 0)" call seems to be necessary > to actually switch to the DFU interface when the USB-Device still uses > its default interface. > usb_claim_interface() doesn't send anything over the bus, but the > device needs to know when to serve DFU-Requests (like the following > dfu_get_status() request). Sounds right to me. I have to re-read the DFU spec over the weekend to be sure. (Just downloaded 1.0 and 1.1 to make myself comfortable with it again) > it works without it on devices where the DFU-Interface == 0 or the only > DFU interface available. > It doesn't work if a device offers a DFU-Device Descriptor in normal > runtime mode (to serve appDETACH requests). > > Can someone confirm whether this call causes any harm? I tested with the following changes: diff --git a/src/main.c b/src/main.c index b36a949..0d9e0c0 100644 --- a/src/main.c +++ b/src/main.c @@ -588,6 +588,12 @@ int main(int argc, char **argv) exit(1); } + if (usb_set_altinterface(_rt_dif.dev_handle, 0) < 0) { + fprintf(stderr, "Cannot set alt interface: %s\n", + usb_strerror()); + exit(1); + } + printf("Determining device status: "); if (dfu_get_status(_rt_dif.dev_handle, _rt_dif.interface, &status ) < 0) { fprintf(stderr, "error get_status: %s\n", No problems so far. Will make some test over the weekend. regards Stefan Schmidt _______________________________________________ devel mailing list devel@lists.openmoko.org https://lists.openmoko.org/mailman/listinfo/devel