As Xiaofan Chen wrote: > I think the root cause of the issue is the following codes > in usb_libusb.c.
> usb_reset(udev); No, it isn't. The main reason is that all the Atmel-provided tools (JTAGICEmkII, AVRISPmkII, AVR Dragon) volunteerily leave and rejoin the USbus when we say "Good-bye" to them, causing them to be enumerated by the OS. That "dead time" also applies to these tools on FreeBSD where AVRDUDE doesn't call usb_reset() by itself. > I believe the above usb_reset() is no longer needed for most of > the Linux users now. It is usually only required for kernel versions > up to 2.6.28. "most of the Linux users" isn't enough though, we have to ensure all of the Linux users are able to work with it, otherwise we'd introduce a regression. Keep in mind that, in particular production system frequently use older kernel versions (for a variety of reasons outside the control of those users). For example, our Linux machines at work run kernel version 2.6.9. Having said this, I wouldn't mind if someone provided a patch that reliably detects whether the underlying Linux kernel needs the usb_reset() or not. Preferrably, the patch should do a run-time detection of the appropriate kernel version (through uname(2)?) rather than a compile-time test. (Apparently, MacOS X still has issues without the usb_reset(), so for them, it should be left in.) -- cheers, J"org .-.-. --... ...-- -.. . DL8DTL http://www.sax.de/~joerg/ NIC: JW11-RIPE Never trust an operating system you don't have sources for. ;-) _______________________________________________ avrdude-dev mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/avrdude-dev
